示例#1
0
 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
示例#2
0
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
示例#3
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.
     """
     self.stop_scene()
     if self.current_scene is not None:
         signal(events.SceneContinued())
     else:
         signal(events.Quit())
示例#4
0
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
示例#5
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())
示例#6
0
 def on_scene_started(self, event, signal):
     assert event.scene == self
     scene_start_called()
     signal(events.Quit())
示例#7
0
 def on_idle(self, event: events.Idle, signal):
     global was_called
     was_called = True
     signal(events.Quit())
示例#8
0
 def on_update(self, event, signal):
     signal(TestEvent())
     signal(events.Quit())
示例#9
0
 def quit(self, event, scene):
     return events.Quit()
示例#10
0
 def activate(self, engine):
     yield events.Quit()
示例#11
0
 def quit(self, event, scene):
     return events.Quit(
         # timestamp=event.quit.timestamp,
     )
示例#12
0
 def on_idle(self, event: events.Idle, signal):
     nonlocal call_count
     call_count += 1
     signal(events.Quit())