def __init__(self, *, engine: GameEngine, inputs: Iterable[SoftwareInputs], key_config: dict = None, **kwargs): """ Initialize the controller subsystem. It is advised that you do not initialize this subsystem outside of the engine. :param engine: The game engine this will be used in. Required. :param inputs: An iterable of Axis, Switch, or Impulse objects. :param key_config: A dictionary of string names and key or button values. :param kwargs: Additional kwargs, required in ppb Systems. """ super().__init__(inputs=inputs, key_config=key_config, **kwargs) self.__values = {} self.__inputs = {} self.__key_config = key_config or {} for i in inputs: self.add(i) engine.register(events.Update, self.extend_update)
def test_extending_all_events(): def all_extension(event): event.test_value = "pursuedpybear" @dataclasses.dataclass class TestEvent: pass class TestScene(BaseScene): def on_update(self, event, signal): assert event.test_value == "pursuedpybear" def on_mouse_motion(self, event, signal): assert event.test_value == "pursuedpybear" def on_test_event(self, event, signal): assert event.test_value == "pursuedpybear" ge = GameEngine(TestScene) ge.start() # We need test scene instantiated. ge.register(..., all_extension) ge.signal(events.Update(0.01)) ge.publish() ge.signal(events.MouseMotion(Vector(0, 0), Vector(0, 0), Vector(0, 1), [])) ge.publish() ge.signal(TestEvent()) ge.publish()