import pymunk.pygame_util
from .base import BaseScene
-from ..lights import LightManager
+from ..lights import LightManager, light_fitting_by_type
from ..obstacles import ObstacleManager
from ..events import SceneChangeEvent
from ..utils import debug_timer, shadowed_text
from ..loader import loader
-from ..transforms import Overlay, Multiply, Alpha
+from ..transforms import Overlay, Alpha, ColourWedges
-from ..constants import SCREEN_SIZE, FONTS, COLOURS
+from ..constants import SCREEN_SIZE, FONTS
from ..widgets import ImageButton
from ..turnip import Turnip, TurnipInvalidPosition
self._harvested = gamestate.harvested
self._paused = False
self._tool = None
- self._light_color = None
+ self._light_colors = None
self._dragging = None
# Turnip
self.grow_turnips(gamestate)
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
tools.append(tool)
x += step
+ tools.append(ImageButton(
+ '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(
surface.blit(surf, pos)
def _draw_light_toolbar(self, light_config, x):
- self._light_toolbar = []
height = SCREEN_SIZE[1] - 80
- for color in sorted(COLOURS.keys()):
- light_tool = ImageButton('32', light_config["type"] + '.png',
- pos=(x, height), name=color,
- transform=Multiply(colour=COLOURS[color]))
+ self._light_toolbar = []
+ colour_combos = light_config["available_colours"]
+ for combo in colour_combos:
+ colours = combo.split("/")
+ light_fitting = light_fitting_by_type(light_config["type"])
+ light_tool = ImageButton(
+ "32", light_fitting, transform=ColourWedges(colours=colours),
+ pos=(x, height), name=combo)
+ light_tool.colours = colours
self._light_toolbar.append(light_tool)
x += 40
def _place_light(self, gamestate, cfg, colours, ev):
cfg = cfg.copy()
cost = cfg.pop("cost")
+ cfg.pop("available_colours")
if self._seeds > cost:
pos = pymunk.pygame_util.from_pygame(
ev.pos, pygame.display.get_surface())
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:
# Check light toolbar
for light_tool in self._light_toolbar:
if light_tool.pressed(ev):
+ fitting_image = light_fitting_by_type(
+ self._tool.light_config["type"])
self._set_cursor(
- self._tool.light_config["type"],
- transform=Multiply(
- colour=COLOURS[light_tool.name] + (172,)))
- self._light_color = light_tool.name
+ fitting_image[:-4], # strip .png
+ transform=ColourWedges(colours=light_tool.colours))
+ # colour=COLOURS[0] + (172,)))
+ self._light_colors = light_tool.colours
return
- if self._tool.name == "seed":
- self._place_seed(gamestate, ev)
- elif self._tool.name == "light" and self._light_color:
- self._place_light(
- gamestate, self._tool.light_config,
- [self._light_color], ev)
+ if self._tool:
+ if self._tool.name == "seed":
+ self._place_seed(gamestate, ev)
+ elif self._tool.name == "light" and self._light_colors:
+ self._place_light(
+ gamestate, self._tool.light_config,
+ self._light_colors, ev)
else:
# Not tool, so check lights
self._lights.toggle_nearest(ev.pos, surfpos=True)
elif self._tool:
# Unset tool
self._tool = None
+ self._clear_light_toolbar()
self._unset_cursor()
elif ev.type == pgl.MOUSEMOTION:
if self._dragging: