putting this back now that makefile doesn't autodetect tiles
[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.actors.add_layer("pads", level=5)
16         self.actors.add_layer("roaches", level=10)
17         self._roach_actors = {}
18         self._init_pads()
19
20     def _init_pads(self):
21         self._roach_pad = self.actors.add(
22             Actor("roach_management/roach_pad"), layer="pads")
23         self._roach_pad.pos = (WIDTH * (7/8), HEIGHT * (1/4))
24         self._inventory_pad = self.actors.add(
25             Actor("roach_management/inventory_pad"), layer="pads")
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.actors.add(actor, layer="roaches")
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())]