923e6fde263e3e62da76aed366fab01b048abf69
[koperkapel.git] / koperkapel / scenes / roaches.py
1 """ Roach management scene. """
2
3 from pgzero.constants import keys
4 from ..actors.buttons import TextButton
5 from .base import Scene, ChangeSceneEvent
6
7
8 class RoachesScene(Scene):
9     """ Roach management scene. """
10
11     def __init__(self):
12         super().__init__()
13         self.actors.add_layer("roaches", level=10)
14         self._roach_actors = {}
15
16     def update(self, world, dt):
17         for i, roach in enumerate(world.roaches):
18             if roach.name in self._roach_actors:
19                 actor = self._roach_actors[roach.name]
20             else:
21                 actor = TextButton("%s [%s]" % (
22                     roach.name,
23                     ", ".join("%s=%s" % kv for kv in sorted(
24                         roach.attributes.items()),
25                     )))
26                 self._roach_actors[roach.name] = actor
27                 self.actors.add(actor, layer="roaches")
28             # TODO: remove missing roaches
29             actor.pos = (300, 100 + i * 100)
30
31     def on_key_down(self, key, mod, unicode):
32         if key == keys.ESCAPE:
33             from .menu import MenuScene
34             return [ChangeSceneEvent(MenuScene())]