X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fscenes%2Fday.py;h=7f73ad288a17342946d91a928577220da0e86ddb;hb=cff2127fd334bfe5794b15857508699d2bcbd2d8;hp=cc7a32e1cf1b1b41cd2bb6508f90f9159fd597f5;hpb=923e068edb27b9b6d35359e496668038a1db6fa4;p=tabakrolletjie.git diff --git a/tabakrolletjie/scenes/day.py b/tabakrolletjie/scenes/day.py index cc7a32e..7f73ad2 100644 --- a/tabakrolletjie/scenes/day.py +++ b/tabakrolletjie/scenes/day.py @@ -11,7 +11,7 @@ import pymunk.pygame_util from .base import BaseScene from ..battery import BatteryManager -from ..lights import LightManager, light_fitting_by_type +from ..lights import LightManager, light_fitting_by_type, check_space_for_light from ..infobar import InfoBar from ..obstacles import ObstacleManager from ..events import SceneChangeEvent @@ -21,7 +21,7 @@ from ..transforms import Overlay, Alpha, ColourWedges from ..constants import SCREEN_SIZE, FONTS, FPS, NIGHT_HOURS_PER_TICK, DEBUG from ..widgets import ImageButton -from ..turnip import Turnip, TurnipInvalidPosition, check_turnips +from ..turnip import Turnip, TurnipInvalidPosition class DayScene(BaseScene): @@ -53,6 +53,7 @@ class DayScene(BaseScene): self._draw_you_lose(gamestate) elif gamestate.harvested >= gamestate.turnip_target: self._draw_you_win(gamestate) + self._ending = False def _draw_you_lose(self, gamestate): overlay = pygame.surface.Surface( @@ -128,7 +129,11 @@ class DayScene(BaseScene): gamestate.turnips = turnip_data def end_day(self, gamestate): + if self._ending: + return self._battery.apply_recharge() + gamestate.update_lights(self._lights) + self._ending = True from .night import NightScene SceneChangeEvent.post(scene=NightScene()) @@ -215,11 +220,8 @@ class DayScene(BaseScene): if gamestate.seeds > cost: pos = pymunk.pygame_util.from_pygame( ev.pos, pygame.display.get_surface()) - # Bail if we're too close to an existing light - if self._lights.nearest(pos, max_distance=25): - return - # Also check turnips - if check_turnips(self._space, pos, max_distance=25): + # Bail if we're too close to an existing light, obstacle or turnip + if check_space_for_light(self._space, pos, max_distance=25): return gamestate.seeds -= cost cfg["position"] = pos @@ -228,12 +230,16 @@ class DayScene(BaseScene): self._lights.add_light(cfg) def event(self, ev, gamestate): + if self._ending: + return if self._game_over_text: if ev.type in (pgl.KEYDOWN, pgl.MOUSEBUTTONDOWN): + self._ending = True from .menu import MenuScene SceneChangeEvent.post(scene=MenuScene()) if ev.type == pgl.KEYDOWN: if ev.key in (pgl.K_q, pgl.K_ESCAPE): + self._ending = True from .menu import MenuScene SceneChangeEvent.post(scene=MenuScene()) elif ev.key == pgl.K_e: @@ -253,6 +259,7 @@ class DayScene(BaseScene): elif tool.name == 'start night': self.end_day(gamestate) elif tool.name == 'exit': + self._ending = True from .menu import MenuScene SceneChangeEvent.post(scene=MenuScene()) else: