X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fscenes%2Fnight.py;h=e3b51cb03d14eb34471fc17498028dd489b86673;hb=3dd6b473efa26eff5c02e45a0b405c46c8a52806;hp=848bb54fa8362def38a6b01d16e7b13d86523a94;hpb=ed02eb3de3b7de8b9555ae1a0956d349e4f15628;p=tabakrolletjie.git diff --git a/tabakrolletjie/scenes/night.py b/tabakrolletjie/scenes/night.py index 848bb54..e3b51cb 100644 --- a/tabakrolletjie/scenes/night.py +++ b/tabakrolletjie/scenes/night.py @@ -14,6 +14,7 @@ from ..utils import debug_timer, shadowed_text from ..loader import loader from ..transforms import Overlay from ..turnip import Turnip +from ..widgets import ImageButton from ..constants import NIGHT_LENGTH, DEBUG, FONTS, SCREEN_SIZE @@ -32,11 +33,19 @@ class NightScene(BaseScene): self._turnips.append(turnip) self._soil = loader.load_image( "textures", "soil.png", transform=self.DARKNESS) + self._tools = self.create_tools(gamestate) self._total_ticks = 0 self._do_ticks = True + self._paused = False self._eaten_tonight = 0 self._night_over_text = [] + def create_tools(self, gamestate): + tools = [] + tools.append(ImageButton( + '32', 'pause.png', name='pause play', pos=(SCREEN_SIZE[0] - 150, SCREEN_SIZE[1] - 40))) + return tools + @debug_timer("night.render") def render(self, surface, gamestate): surface.blit(self._soil, (0, 0)) @@ -56,6 +65,9 @@ class NightScene(BaseScene): self._obstacles.render(surface) self._lights.render_fittings(surface) + for tool in self._tools: + tool.render(surface) + for text, text_pos in self._night_over_text: surface.blit(text, text_pos, None) @@ -67,8 +79,10 @@ class NightScene(BaseScene): if ev.key in (pgl.K_q, pgl.K_ESCAPE): from .menu import MenuScene SceneChangeEvent.post(scene=MenuScene()) - if ev.key == pgl.K_e and DEBUG: + elif ev.key == pgl.K_e and DEBUG: self._end_night() + elif ev.key == pgl.K_SPACE: + self.toggle_pause() elif ev.type == pgl.MOUSEBUTTONDOWN: if not self._do_ticks: # Any mouse press exits @@ -77,6 +91,19 @@ class NightScene(BaseScene): self._lights.toggle_nearest(ev.pos, surfpos=True) print self._lights.lit_by(ev.pos, surfpos=True) + # Check tools + for tool in self._tools: + if tool.pressed(ev): + if tool.name == 'pause play': + self.toggle_pause() + + def toggle_pause(self): + self._paused = not self._paused + pause_img = "play.png" if self._paused else "pause.png" + for tool in self._tools: + if tool.name == 'pause play': + tool.update_image("32", pause_img) + def _to_day(self): # End the night from .day import DayScene @@ -103,7 +130,7 @@ class NightScene(BaseScene): @debug_timer("night.tick") def tick(self, gamestate): - if self._do_ticks: + if self._do_ticks and not self._paused: if self._total_ticks < NIGHT_LENGTH: self._mould.tick(gamestate, self._space, self._lights) self._lights.tick()