feat(sim): game state, state machine and audio cues
This commit is contained in:
1 parent
d79de4674d
commit
251d79a348
3 files changed
+164
No files matched your search
@@ -0,0 +1,36 @@
|
||||
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
|
||||
Reference in new issue
Block a user