09169f3ac80bd4566933c8dd97b50303fc110144
[koperkapel.git] / koperkapel / scenes / roaches.py
1 """ Roach management scene. """
2
3 from pgzero.constants import keys
4 from pgzero.actor import Actor
5 from ..actors.buttons import TextButton
6 from ..constants import WIDTH, HEIGHT
7 from .base import Scene, ChangeSceneEvent
8
9
10 class RoachesScene(Scene):
11     """ Roach management scene. """
12
13     def __init__(self):
14         super().__init__()
15         self._roach_actors = {}
16         self._roaches = self.actors.add_layer("roaches", level=10)
17         self._pads = self.actors.add_layer("pads", level=5)
18         self._init_pads()
19
20     def _init_pads(self):
21         self._roach_pad = self._pads.add(
22             Actor("roach_management/roach_pad"))
23         self._roach_pad.pos = (WIDTH * (7/8), HEIGHT * (1/4))
24         self._inventory_pad = self._pads.add(
25             Actor("roach_management/inventory_pad"))
26         self._inventory_pad.pos = (WIDTH * (7/8), HEIGHT * (3/4))
27
28     def update(self, world, dt):
29         for i, roach in enumerate(world.roaches):
30             if roach.name in self._roach_actors:
31                 actor = self._roach_actors[roach.name]
32             else:
33                 actor = TextButton("%s [%s]" % (
34                     roach.name,
35                     ", ".join("%s=%s" % kv for kv in sorted(
36                         roach.attributes.items()),
37                     )))
38                 self._roach_actors[roach.name] = actor
39                 self._roaches.add(actor)
40             # TODO: remove missing roaches
41             actor.pos = (300, 100 + i * 100)
42
43     def on_key_down(self, key, mod, unicode):
44         if key == keys.ESCAPE:
45             from .menu import MenuScene
46             return [ChangeSceneEvent(MenuScene())]