Files
pixel-platformer/game/sim/audio.py
T

37 lines
866 B
Python

class SoundEvent:
__slots__ = ("name", "x", "frame")
def __init__(self, name, x, frame):
self.name = name
self.x = x
self.frame = frame
class AudioBus:
def __init__(self, sink=None, historyCap=64):
self.sink = sink
self.events = []
self.historyCap = historyCap
self.frame = 0
self.totalEmitted = 0
def setSink(self, sink):
self.sink = sink
def tick(self):
self.frame += 1
def play(self, name, x=None):
event = SoundEvent(name, x, self.frame)
self.events.append(event)
if len(self.events) > self.historyCap:
self.events.pop(0)
self.totalEmitted += 1
if self.sink is not None:
self.sink(event)
def drain(self):
drained = self.events
self.events = []
return drained