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
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)
self._draw_cursor(surface)
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())
# 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)