def create_tools(self, gamestate):
tools = []
- x, y, step = 0, SCREEN_SIZE[1] - 40, 50
- tools.append(ImageButton(
- '32', 'default_cursor.png', name='reset tool', pos=(x, y)))
- x += step
+ x, y, step = 50, SCREEN_SIZE[1] - 40, 50
+
tools.append(ImageButton('32', 'seed.png', name='seed', pos=(x, y)))
x += step
x += step
tools.append(ImageButton(
- '32', 'night.png', name='start night',
- pos=(SCREEN_SIZE[0] - 100, y)))
+ '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)))
tools.append(ImageButton(
'32', 'exit.png', name='exit', pos=(SCREEN_SIZE[0] - 50, y)))
return tools
elif ev.key == pgl.K_e:
from .night import NightScene
SceneChangeEvent.post(scene=NightScene())
- elif ev.key == pgl.K_SPACE:
+ elif ev.key == pgl.K_SPACE and DEBUG:
self._paused = not self._paused
elif ev.type == pgl.MOUSEBUTTONDOWN:
if ev.button == 1:
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
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))
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)
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
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
@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()