From: Neil Date: Sat, 10 Sep 2016 10:54:36 +0000 (+0200) Subject: Update angle in gamestate as well for passing to night X-Git-Tag: tabakrolletjie-v1.0.0~126 X-Git-Url: https://git.ctpug.org.za/?p=tabakrolletjie.git;a=commitdiff_plain;h=dbee821317a4e96a774456fdd788fb14766a7bdf Update angle in gamestate as well for passing to night --- diff --git a/tabakrolletjie/rays.py b/tabakrolletjie/rays.py index b4142a3..621ded6 100644 --- a/tabakrolletjie/rays.py +++ b/tabakrolletjie/rays.py @@ -88,6 +88,8 @@ class RayPolyManager(object): self._start = None # normal vector in direction of start angle limit self._end = None # normal vector in direction of end angle limit self._set_angle_limits(direction, spread) + if direction: + self.direction = direction # Update direction self._max_radius = None # maximum radius in pixels self._min_radius = None # minimum radius in pixels self._set_radius_limits(radius_limits) diff --git a/tabakrolletjie/scenes/day.py b/tabakrolletjie/scenes/day.py index 933f16b..162a30b 100644 --- a/tabakrolletjie/scenes/day.py +++ b/tabakrolletjie/scenes/day.py @@ -116,14 +116,19 @@ class DayScene(BaseScene): # TODO: Add error sound or something pass - def _update_light_angle(self, pos): + def _update_light_angle(self, pos, gamestate): # Update the angle of the given light pos = pymunk.pygame_util.to_pygame(pos, pygame.display.get_surface()) distance = pos - self._dragging.position angle = math.atan2(distance[1], distance[0]) # Set light angle to this position self._dragging.ray_manager.direction = math.degrees(angle) - # TODO: Update gamestate with new angle + # Hackily update gamestate with new angle + for light_cfg in gamestate.station["lights"]: + light_pos = pymunk.Vec2d(light_cfg["position"]) + if light_pos.get_dist_sqrd(self._dragging.position) < 5.0: + light_cfg["direction"] = math.degrees(angle) + break def _place_spotlight(self, gamestate, colour, ev): if self._seeds > 5: @@ -218,7 +223,7 @@ class DayScene(BaseScene): print self._lights.lit_by(ev.pos, surfpos=True) elif ev.button == 3: light = self._lights.nearest(ev.pos, surfpos=True, - max_distance=5.0) + max_distance=20.0) if light: # Start drag to rotate light self._dragging = light @@ -229,7 +234,7 @@ class DayScene(BaseScene): elif ev.type == pgl.MOUSEMOTION: if self._dragging: # Calculate angle between current position and mouse pos - self._update_light_angle(ev.pos) + self._update_light_angle(ev.pos, gamestate) elif ev.type == pgl.MOUSEBUTTONUP: self._dragging = None