Mercurial > nagslang
changeset 439:4c60df80b91b
Don't allow placing points outside the level
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 07 Sep 2013 14:30:27 +0200 |
parents | b9c152fb1111 |
children | 9eee96966d88 |
files | tools/area_editor.py |
diffstat | 1 files changed, 15 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/area_editor.py Sat Sep 07 14:26:47 2013 +0200 +++ b/tools/area_editor.py Sat Sep 07 14:30:27 2013 +0200 @@ -73,6 +73,13 @@ self.lookup = {} self._move_poly = None + def _in_bounds(self, pos): + if pos[0] < 0 or pos[0] >= self.x: + return False + if pos[1] < 0 or pos[1] >= self.y: + return False + return True + def load(self, space): super(EditorLevel, self).load(space) # Needed to fill in the lookup dict @@ -86,12 +93,15 @@ def add_point(self, poly_index, pos): self.polygons.setdefault(poly_index, []) + if not self._in_bounds(pos): + return False if not self.polygons[poly_index]: point = self.point_to_pymunk(pos) self.polygons[poly_index].append(point) else: add_pos = self.point_to_pymunk(pos) self.polygons[poly_index].append(add_pos) + return True def delete_point(self, index): if index in self.polygons and len(self.polygons[index]) > 0: @@ -106,8 +116,9 @@ # Too small return False first = self.polygons[index][0] - self.add_point(index, self.point_to_pygame(first)) - return True + if self.add_point(index, self.point_to_pygame(first)): + return True + return False def add_line(self, start_pos, end_pos): startpoint = self.point_to_pymunk(start_pos) @@ -599,7 +610,8 @@ self._move_view((10, 0)) elif self.cur_poly and ev.button == 1: # Add a point - self.level.add_point(self.cur_poly, snapped_pos) + if not self.level.add_point(self.cur_poly, snapped_pos): + alert("Failed to place point") elif ev.button == 3: self._mouse_drag = True