Merge branch 'master' of ctpug.org.za:tabakrolletjie
authorSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 12:55:33 +0000 (14:55 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 12:55:33 +0000 (14:55 +0200)
1  2 
tabakrolletjie/scenes/day.py

index b6abaac7db8227e448f1b65109efcdcee9c846c2,e54e2f1664a6c5ecc916127e1b5bf0b37d2f5e9e..cb65569e3da70207fbeb33794e87c75a2a33d77a
@@@ -37,17 -37,6 +37,17 @@@ class DayScene(BaseScene)
          self._tool = None
          self._light_color = None
          self._dragging = None
 +        # Turnip
 +        self.grow_turnips(gamestate)
 +        # Tools
 +        self._light_toolbar = []
 +        self._tools = self.create_tools(gamestate)
 +        self._update_toolbar(gamestate)
 +        # Background
 +        self._soil = loader.load_image(
 +            "textures", "soil.png", transform=self.BRIGHTNESS)
 +
 +    def grow_turnips(self, gamestate):
          for turnip_data in gamestate.turnips:
              turnip = Turnip(space=self._space, **turnip_data)
              # Turnips grow at dawn
                  self._harvested += 1
              else:
                  self._turnips.append(turnip)
 -        # Tools
 -        self._light_toolbar = []
 -        self._tools = [
 -            ImageButton('32', 'seed.png', name='seed',
 -                        pos=(50, SCREEN_SIZE[1] - 40)),
 -            ImageButton('32', 'spotlight.png', name='spotlight',
 -                        pos=(100, SCREEN_SIZE[1] - 40)),
 -            ImageButton('32', 'lamp.png', name='lamp',
 -                        pos=(150, SCREEN_SIZE[1] - 40)),
 -            ImageButton('32', 'default_cursor.png', name='reset tool',
 -                        pos=(SCREEN_SIZE[0] - 50, SCREEN_SIZE[1] - 40)),
 -        ]
 -        self._update_toolbar(gamestate)
 -        # Background
 -        self._soil = loader.load_image(
 -            "textures", "soil.png", transform=self.BRIGHTNESS)
 +
 +    def create_tools(self, gamestate):
 +        tools = []
 +        x, y, step = 50, SCREEN_SIZE[1] - 40, 50
 +        tools.append(ImageButton('32', 'seed.png', name='seed', pos=(x, y)))
 +        x += step
 +
 +        for light_config in gamestate.station["available_lights"]:
 +            tool = ImageButton(
 +                '32', '%s.png' % light_config["type"], name='light',
 +                pos=(x, y))
 +            tool.light_config = light_config
 +            tools.append(tool)
 +            x += step
 +
 +        tools.append(ImageButton(
 +            '32', 'default_cursor.png', name='reset tool', pos=(x, y)))
 +        return tools
  
      def exit(self, gamestate):
          self._unset_cursor()
              light_tool.render(surface)
          self._draw_cursor(surface)
  
 -    def _draw_light_toolbar(self, light_type, x):
 +    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_type + '.png',
 +            light_tool = ImageButton('32', light_config["type"] + '.png',
                                       pos=(x, height), name=color,
                                       transform=Multiply(colour=COLOURS[color]))
              self._light_toolbar.append(light_tool)
                  light_cfg["direction"] = math.degrees(angle)
                  break
  
 -    def _place_spotlight(self, gamestate, colour, ev):
 -        if self._seeds > 5:
 -            pos = pymunk.pygame_util.from_pygame(ev.pos,
 -                                                 pygame.display.get_surface())
 +    def _place_light(self, gamestate, cfg, colours, ev):
 +        cfg = cfg.copy()
 +        cost = cfg.pop("cost")
 +        if self._seeds > cost:
 +            pos = pymunk.pygame_util.from_pygame(
 +                ev.pos, pygame.display.get_surface())
              # Bail if we're too close to an existing light
              if self._lights.nearest(pos, max_distance=25):
                  return
 -            self._seeds -= 5
 +            self._seeds -= cost
              self._update_toolbar(gamestate)
 -            cfg = {
 -                "type": "spotlight",
 -                "colours": [colour],
 -                "position": pos,
 -                "direction": 45,
 -                "spread": 90,
 -                "intensity": 0.5,
 -                "radius_limits": [0, 100],
 -            }
 -            gamestate.station["lights"].append(cfg)
 -            self._lights.add_light(cfg)
 -
 -    def _place_lamp(self, gamestate, colour, ev):
 -        if self._seeds > 3:
 -            pos = pymunk.pygame_util.from_pygame(ev.pos,
 -                                                 pygame.display.get_surface())
 -            # Bail if we're too close to an existing light
 -            if self._lights.nearest(ev.pos, surfpos=True, max_distance=25):
 -                return
 -            self._seeds -= 3
 -            self._update_toolbar(gamestate)
 -            cfg = {
 -                "type": "lamp",
 -                "colours": [colour],
 -                "position": pos,
 -                "intensity": 0.5,
 -            }
 +            cfg["position"] = pos
 +            cfg["colours"] = colours
              gamestate.station["lights"].append(cfg)
              self._lights.add_light(cfg)
  
                              self._tool = None
                              self._clear_light_toolbar()
                          else:
 -                            self._tool = tool.name
 -                            if self._tool == 'seed':
 +                            self._tool = tool
 +                            if self._tool.name == 'seed':
                                  self._set_cursor(
                                      'seed', transform=Alpha(alpha=172))
                                  self._clear_light_toolbar()
 -                            elif self._tool == 'spotlight':
 -                                self._unset_cursor()
 -                                self._draw_light_toolbar('spotlight', 100)
 -                            elif self._tool == 'lamp':
 +                            elif self._tool.name == 'light':
                                  self._unset_cursor()
 -                                self._draw_light_toolbar('lamp', 150)
 +                                self._draw_light_toolbar(
 +                                    self._tool.light_config, 100)
                          return
                  # Check light toolbar
                  for light_tool in self._light_toolbar:
                      if light_tool.pressed(ev):
                          self._set_cursor(
 -                            self._tool,
 +                            self._tool.light_config["type"],
                              transform=Multiply(
                                  colour=COLOURS[light_tool.name] + (172,)))
                          self._light_color = light_tool.name
                          return
 -                if self._tool == "seed":
 +                if self._tool.name == "seed":
                      self._place_seed(gamestate, ev)
 -                elif self._tool == 'spotlight' and self._light_color:
 -                    self._place_spotlight(gamestate, self._light_color, ev)
 -                elif self._tool == 'lamp' and self._light_color:
 -                    self._place_lamp(gamestate, self._light_color, ev)
 +                elif self._tool.name == "light" and self._light_color:
 +                    self._place_light(
 +                        gamestate, self._tool.light_config,
 +                        [self._light_color], ev)
                  else:
                      # Not tool, so check lights
                      self._lights.toggle_nearest(ev.pos, surfpos=True)
 -                    print self._lights.lit_by(ev.pos, surfpos=True)
              elif ev.button == 3:
                  light = self._lights.nearest(ev.pos, surfpos=True,
                                               max_distance=20.0)
              self._lights.tick()
  
      def _update_toolbar(self, gamestate):
-         text = ("Turnip Stocks: Seeds: %d. Planted: %d. "
+         text = ("Day: %d: Turnip Stocks: Seeds: %d. Planted: %d. "
                  "Harvested: %d. Destroyed: %d" %
-                 (self._seeds, len(self._turnips),
+                 (gamestate.days, self._seeds, len(self._turnips),
                   self._harvested, gamestate.eaten))
          self._toolbar = self._toolbar_font.render(text, True, (255, 255, 255))