def fail(self, engine) -> bool: if self.first_scene_ended: assert len(engine.scenes) == 1, "Too many scenes on stack." assert isinstance(engine.current_scene, SecondScene), "Wrong current scene." engine.signal(events.Quit()) return False
def test_target_events(): class Test: pass call_count = 0 class Targetted(GameObject): def on_test(self, event, signal): nonlocal call_count call_count += 1 class Untargetted(GameObject): def on_test(self, event, signal): assert False target = Targetted() def setup(scene): scene.add(target) scene.add(Untargetted()) with GameEngine(setup, basic_systems=[Failer], systems=[], fail=lambda x: False, message="Can only time out.") as ge: ge.signal(Test(), targets=[target]) ge.signal(events.Quit()) ge.run() assert call_count == 1
def on_stop_scene(self, event: events.StopScene, signal: Callable[[Any], None]): """ Stop a running scene. If there's a scene on the stack, it resumes. """ self.stop_scene() if self.current_scene is not None: signal(events.SceneContinued()) else: signal(events.Quit())
def test_flush_events(): ge = GameEngine(BaseScene) ge.signal(events.SceneStopped()) ge.signal(events.Quit()) assert len(ge.events) == 2 ge.flush_events() assert len(ge.events) == 0
def on_stop_scene(self, event: events.StopScene, signal: Callable[[Any], None]): """ Stop a running scene. If there's a scene on the stack, it resumes. Do not call this method directly. It is called by the GameEngine when a :class:`~events.StopScene` event is fired. """ self._stop_scene() if self.current_scene is not None: signal(events.SceneContinued()) else: signal(events.Quit())
def on_scene_started(self, event, signal): assert event.scene == self scene_start_called() signal(events.Quit())
def on_idle(self, event: events.Idle, signal): global was_called was_called = True signal(events.Quit())
def on_update(self, event, signal): signal(TestEvent()) signal(events.Quit())
def quit(self, event, scene): return events.Quit()
def activate(self, engine): yield events.Quit()
def quit(self, event, scene): return events.Quit( # timestamp=event.quit.timestamp, )
def on_idle(self, event: events.Idle, signal): nonlocal call_count call_count += 1 signal(events.Quit())