import pymunk.pygame_util
from .base import BaseScene
+from ..battery import BatteryManager
from ..lights import LightManager, light_fitting_by_type
from ..obstacles import ObstacleManager
from ..events import SceneChangeEvent
from ..loader import loader
from ..transforms import Overlay, Alpha, ColourWedges
-from ..constants import SCREEN_SIZE, FONTS
+from ..constants import SCREEN_SIZE, FONTS, DEBUG
from ..widgets import ImageButton
from ..turnip import Turnip, TurnipInvalidPosition
self._toolbar_font = loader.load_font(FONTS['sans'], size=20)
self._obstacles = ObstacleManager(self._space, gamestate)
self._lights = LightManager(self._space, gamestate)
+ self._battery = BatteryManager(gamestate)
self._turnips = []
self._seeds = gamestate.seeds
self._harvested = gamestate.harvested
# Check if we've lost
self._game_over_text = []
if self._seeds == 0 and len(self._turnips) == 0:
- self._draw_game_over_text()
+ self._draw_you_lose()
+ elif self._harvested >= gamestate.get_target():
+ self._draw_you_win()
- def _draw_game_over_text(self):
+ def _draw_you_lose(self):
overlay = pygame.surface.Surface(
(SCREEN_SIZE[0], 240), pgl.SWSURFACE).convert_alpha()
overlay.fill((0, 0, 0, 128))
(shadowed_text("You Lost", FONTS["bold"], 48), (400, 280)))
self._game_over_text.append(
(shadowed_text("You have no seeds and no turnips growing",
- FONTS["sans"], 24), (250, 350)))
+ FONTS["sans"], 24), (300, 350)))
self._game_over_text.append(
(shadowed_text("Press a key to return to the menu",
- FONTS["sans"], 24), (250, 400)))
+ FONTS["sans"], 24), (350, 400)))
+
+ def _draw_you_win(self):
+ overlay = pygame.surface.Surface(
+ (SCREEN_SIZE[0], 240), pgl.SWSURFACE).convert_alpha()
+ overlay.fill((0, 0, 0, 128))
+ self._game_over_text.append((overlay, (0, 250)))
+ self._game_over_text.append(
+ (shadowed_text("You Win", FONTS["bold"], 48), (400, 280)))
+ self._game_over_text.append(
+ (shadowed_text(
+ "You have Successfully Harvested %d turnips" % self._harvested,
+ FONTS["sans"], 24),
+ (300, 350)))
+ self._game_over_text.append(
+ (shadowed_text("Press a key to return to the menu",
+ FONTS["sans"], 24), (350, 400)))
def grow_turnips(self, gamestate):
for turnip_data in gamestate.turnips:
tools = []
x, y, step = 50, SCREEN_SIZE[1] - 40, 50
-
+
tools.append(ImageButton('32', 'seed.png', name='seed', pos=(x, y)))
x += step
'32', 'default_cursor.png', name='reset tool', pos=(x, y)))
tools.append(ImageButton(
- '32', 'night.png', name='start night', pos=(SCREEN_SIZE[0] - 100, y)))
+ '32', 'night.png', name='start night',
+ pos=(SCREEN_SIZE[0] - 100, y)))
tools.append(ImageButton(
'32', 'exit.png', name='exit', pos=(SCREEN_SIZE[0] - 50, y)))
return tools
turnip_data = [turnip.serialize() for turnip in self._turnips]
gamestate.turnips = turnip_data
+ def end_day(self, gamestate):
+ self._battery.apply_recharge()
+ from .night import NightScene
+ SceneChangeEvent.post(scene=NightScene())
+
@debug_timer("day.render")
def render(self, surface, gamestate):
surface.blit(self._soil, (0, 0))
from .menu import MenuScene
SceneChangeEvent.post(scene=MenuScene())
elif ev.key == pgl.K_e:
- from .night import NightScene
- SceneChangeEvent.post(scene=NightScene())
+ self.end_day(gamestate)
elif ev.key == pgl.K_SPACE and DEBUG:
self._paused = not self._paused
elif ev.type == pgl.MOUSEBUTTONDOWN:
self._tool = None
self._clear_light_toolbar()
elif tool.name == 'start night':
- from .night import NightScene
- SceneChangeEvent.post(scene=NightScene())
+ self.end_day(gamestate)
elif tool.name == 'exit':
from .menu import MenuScene
SceneChangeEvent.post(scene=MenuScene())