from ..infobar import InfoBar
from ..obstacles import ObstacleManager
from ..events import SceneChangeEvent
-from ..utils import debug_timer, shadowed_text
+from ..utils import debug_timer, shadowed_text, write_save_file
from ..loader import loader
+from ..sound import sound
from ..transforms import Overlay, Alpha, ColourWedges
from ..constants import SCREEN_SIZE, FONTS, FPS, NIGHT_HOURS_PER_TICK, DEBUG
self._tool = None
self._light_colors = None
self._dragging = None
- # Turnip
- self.grow_turnips(gamestate)
+ # Create Turnips
+ for turnip_data in gamestate.turnips:
+ turnip = Turnip(space=self._space, **turnip_data)
+ self._turnips.append(turnip)
# Tools
self._light_toolbar = []
self._tools = self.create_tools(gamestate)
self._draw_you_lose(gamestate)
elif gamestate.harvested >= gamestate.turnip_target:
self._draw_you_win(gamestate)
+ else:
+ write_save_file(gamestate.serialize())
self._ending = False
def _draw_you_lose(self, gamestate):
(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:
- turnip = Turnip(space=self._space, **turnip_data)
- # Turnips grow at dawn
- seeds = turnip.grow()
- if seeds:
- gamestate.seeds += seeds
- gamestate.harvested += 1
- else:
- self._turnips.append(turnip)
-
def create_tools(self, gamestate):
tools = []
tools.append(tool)
x += step
+ tools.append(ImageButton(
+ '32', 'remove.png', name='remove light', pos=(x, y)))
+ x += step
+
tools.append(ImageButton(
'32', 'default_cursor.png', name='reset tool', pos=(x, y)))
def exit(self, gamestate):
self._unset_cursor()
- turnip_data = [turnip.serialize() for turnip in self._turnips]
- gamestate.turnips = turnip_data
def end_day(self, gamestate):
if self._ending:
return
self._battery.apply_recharge()
gamestate.update_lights(self._lights)
+ turnip_data = [turnip.serialize() for turnip in self._turnips]
+ gamestate.turnips = turnip_data
self._ending = True
from .night import NightScene
SceneChangeEvent.post(scene=NightScene())
self._turnips.append(turnip)
gamestate.seeds -= 1
except TurnipInvalidPosition:
- # TODO: Add error sound or something
- pass
+ sound.play_sound("beep_kind.ogg")
def _update_light_angle(self, pos, gamestate):
# Update the angle of the given light
ev.pos, pygame.display.get_surface())
# Bail if we're too close to an existing light, obstacle or turnip
if check_space_for_light(self._space, pos, max_distance=25):
+ sound.play_sound("beep_kind.ogg")
return
gamestate.seeds -= cost
cfg["position"] = pos
gamestate.station["lights"].append(cfg)
self._lights.add_light(cfg)
+ def _remove_light(self, ev):
+ light = self._lights.nearest(ev.pos, surfpos=True, max_distance=25.0)
+ if light:
+ self._lights.remove_light(light)
+
def event(self, ev, gamestate):
if self._ending:
return
self._set_cursor(
'seed', transform=Alpha(alpha=172))
self._clear_light_toolbar()
+ elif self._tool.name == 'remove light':
+ self._set_cursor(
+ 'remove', transform=Alpha(alpha=172))
+ self._clear_light_toolbar()
elif self._tool.name == 'light':
self._unset_cursor()
self._draw_light_toolbar(
if self._tool:
if self._tool.name == "seed":
self._place_seed(gamestate, ev)
+ elif self._tool.name == "remove light":
+ self._remove_light(ev)
elif self._tool.name == "light" and self._light_colors:
self._place_light(
gamestate, self._tool.light_config,