comparison tools/area_editor.py @ 463:11eaf0d3e612

Fix boogs.
author Simon Cross <hodgestar@gmail.com>
date Sat, 07 Sep 2013 15:59:28 +0200
parents c2909e9411ae
children 1e24145a2860
comparison
equal deleted inserted replaced
462:c2909e9411ae 463:11eaf0d3e612
141 mouse_pos for p in pointlist] 141 mouse_pos for p in pointlist]
142 pygame.draw.lines(self._surface, color, False, pointlist, 142 pygame.draw.lines(self._surface, color, False, pointlist,
143 line_width) 143 line_width)
144 break 144 break
145 if move_poly_mode and index == self._move_poly and move_point: 145 if move_poly_mode and index == self._move_poly and move_point:
146 pointlist = [p for p in self.translate_poly( 146 new_point = self.point_to_pymunk(mouse_pos)
147 polygon, move_point, mouse_pos)] 147 pointlist = [self.point_to_pygame(p)
148 for p in self.translate_poly(
149 polygon, move_point, new_point)]
148 pygame.draw.lines(self._surface, color, False, pointlist, 150 pygame.draw.lines(self._surface, color, False, pointlist,
149 line_width) 151 line_width)
150 break 152 #break
151 if len(polygon) > 1: 153 if len(polygon) > 1:
152 pointlist = [self.point_to_pygame(p) for p in polygon] 154 pointlist = [self.point_to_pygame(p) for p in polygon]
153 pygame.draw.lines(self._surface, color, False, pointlist, 155 pygame.draw.lines(self._surface, color, False, pointlist,
154 line_width) 156 line_width)
155 if index == mouse_poly and mouse_pos and len(polygon) > 0: 157 if index == mouse_poly and mouse_pos and len(polygon) > 0:
225 return obj 227 return obj
226 return None 228 return None
227 229
228 def find_vertex(self, mouse_pos): 230 def find_vertex(self, mouse_pos):
229 # search for vertexes closest to where we've killed 231 # search for vertexes closest to where we've killed
230 mindist = 400 232 mindist = 1000
231 move_point = None 233 move_point = None
232 search_point = self.point_to_pymunk(mouse_pos) 234 search_point = self.point_to_pymunk(mouse_pos)
233 for index, polygon in self.polygons.items(): 235 for index, polygon in self.polygons.items():
234 for point in polygon: 236 for point in polygon:
235 dist = distance(point, search_point) 237 dist = distance(point, search_point)
245 mindist = dist 247 mindist = dist
246 move_point = point 248 move_point = point
247 self._move_poly = None 249 self._move_poly = None
248 return move_point 250 return move_point
249 251
250 def translate_poly(self, poly, move_point, mouse_point): 252 def translate_poly(self, poly, move_point, new_point):
251 print "Translate!" 253 dx = new_point[0] - move_point[0]
252 dx = mouse_point[0] - move_point[0] 254 dy = new_point[1] - move_point[1]
253 dy = mouse_point[1] - move_point[1]
254 new_poly = [(p[0] + dx, p[1] + dy) for p in poly] 255 new_poly = [(p[0] + dx, p[1] + dy) for p in poly]
255 return new_poly 256 return new_poly
256 257
257 def replace_poly(self, old_point, new_point): 258 def replace_poly(self, move_point, new_point):
258 print "Replace!", self._move_poly
259 new_point = self.point_to_pymunk(new_point) 259 new_point = self.point_to_pymunk(new_point)
260 if self._move_poly: 260 if self._move_poly:
261 self.polygons[self._move_poly] = self.translate_poly( 261 self.polygons[self._move_poly] = self.translate_poly(
262 self.polygons[self._move_poly], old_point, new_point) 262 self.polygons[self._move_poly], move_point, new_point)
263 263
264 def replace_vertex(self, old_point, new_point): 264 def replace_vertex(self, old_point, new_point):
265 new_point = self.point_to_pymunk(new_point) 265 new_point = self.point_to_pymunk(new_point)
266 if self._move_poly: 266 if self._move_poly:
267 new_polygon = [p if p != old_point else new_point for p in 267 new_polygon = [p if p != old_point else new_point for p in
618 self.invalidate() 618 self.invalidate()
619 619
620 def mouse_down(self, ev): 620 def mouse_down(self, ev):
621 corrected_pos = self._level_coordinates(ev.pos) 621 corrected_pos = self._level_coordinates(ev.pos)
622 snapped_pos = self.snap_to_grid(corrected_pos) 622 snapped_pos = self.snap_to_grid(corrected_pos)
623 print self._move_poly_mode, ev.button, self._move_point
624 if self.sel_mode and ev.button == 1: 623 if self.sel_mode and ev.button == 1:
625 obj = self.level.find_obj_at_pos(corrected_pos) 624 obj = self.level.find_obj_at_pos(corrected_pos)
626 if obj is not None: 625 if obj is not None:
627 self._edit_selected(obj) 626 self._edit_selected(obj)
628 elif self._move_poly_mode and ev.button == 1: 627 elif self._move_poly_mode and ev.button == 1:
632 self._move_point = None 631 self._move_point = None
633 self.invalidate() 632 self.invalidate()
634 else: 633 else:
635 # find the current point 634 # find the current point
636 self._move_point = self.level.find_vertex(snapped_pos) 635 self._move_point = self.level.find_vertex(snapped_pos)
637 print "NEW MOV:", self._move_point
638 elif self._move_point_mode and ev.button == 1: 636 elif self._move_point_mode and ev.button == 1:
639 if self._move_point: 637 if self._move_point:
640 # Place the current point 638 # Place the current point
641 self.level.replace_vertex(self._move_point, snapped_pos) 639 self.level.replace_vertex(self._move_point, snapped_pos)
642 self._move_point = None 640 self._move_point = None