class StateObserver:
    def __init__(self, stateregister):
        self.bus = EventBus()
        self.register = stateregister
        self.active_state = None

    def bind(self, event, callback):
        self.bus.register(event, callback)

    def get_register(self):
        return self.register

    def change_state(self, state):
        state.action(self, *self.active_state_args)

    def set_state(self, name, args=[]):
        state = self.register.get_state(name)
        self.bus.post('change', (self.active_state, state))
        if self.active_state is not None:
            self.bus.post('finish', self.active_state)
            print "[SM] State replaced"
        self.active_state = state
        self.active_state_args = args

    def state_finished(self, state):
        if state == self.active_state and not state.was_interrupted:
            self.bus.post('finish', state)
            self.active_state = None

    def get_active_state(self):
        return self.active_state

    def next_state(self):
        while self.active_state != None:
            yield self.active_state

    def get_states(self):
        return self.register.states[0]
class StateObserver:
    def __init__(self, stateregister):
        self.bus = EventBus()
        self.register = stateregister
        self.active_state = None

    def bind(self, event, callback):
        self.bus.register(event, callback)

    def get_register(self):
        return self.register

    def change_state(self, state):
        state.action(self, *self.active_state_args)

    def set_state(self, name, args=[]):
        state = self.register.get_state(name)
        self.bus.post('change', (self.active_state, state))
        if self.active_state is not None:
            self.bus.post('finish', self.active_state)
            print "[SM] State replaced"
        self.active_state = state
        self.active_state_args = args

    def state_finished(self, state):
        if state == self.active_state and not state.was_interrupted:
            self.bus.post('finish', state)
            self.active_state = None

    def get_active_state(self):
        return self.active_state

    def next_state(self):
        while self.active_state != None:
            yield self.active_state

    def get_states(self):
        return self.register.states[0]
Esempio n. 3
0
from event_bus import EventBus
from sample_event import SampleEvent

KEY_ESCAPE = 27

event_bus = EventBus()
assert event_bus is not None


def onEventKey(event: SampleEvent):
    assert event is not None
    assert event.key == KEY_ESCAPE


assert len(event_bus.getHandlers(SampleEvent)) == 0

event_bus.unregister(onEventKey)
assert len(event_bus.getHandlers(SampleEvent)) == 0

event_bus.register(onEventKey)
assert len(event_bus.getHandlers(SampleEvent)) == 1

event_bus.unregister(onEventKey)
assert len(event_bus.getHandlers(SampleEvent)) == 0

event_bus.register(onEventKey)
assert len(event_bus.getHandlers(SampleEvent)) == 1

event_bus.emit(SampleEvent(KEY_ESCAPE))