Mercurial > nagslang
comparison tools/area_editor.py @ 96:a9b564c38bef
Support showing exterior filled view in the editor
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Mon, 02 Sep 2013 11:20:34 +0200 |
parents | 5db052531510 |
children | 67f8b06a433d |
comparison
equal
deleted
inserted
replaced
95:ecba9550ad8d | 96:a9b564c38bef |
---|---|
74 | 74 |
75 def delete_point(self, index): | 75 def delete_point(self, index): |
76 if index in self.polygons and len(self.polygons[index]) > 0: | 76 if index in self.polygons and len(self.polygons[index]) > 0: |
77 self.polygons[index].pop() | 77 self.polygons[index].pop() |
78 | 78 |
79 def draw(self, surface, topleft, mouse_pos, mouse_poly): | 79 def draw(self, surface, topleft, mouse_pos, mouse_poly, filled): |
80 self._draw_background(True) | 80 self._draw_background(True) |
81 # Draw polygons as needed for the editor | 81 # Draw polygons as needed for the editor |
82 if filled: | |
83 self._draw_exterior(True) | |
82 for index, polygon in self.polygons.items(): | 84 for index, polygon in self.polygons.items(): |
83 color = POLY_COLORS[index] | 85 color = POLY_COLORS[index] |
84 if len(polygon) > 1: | 86 if len(polygon) > 1: |
85 pointlist = [self.point_to_pygame(p) for p in polygon] | 87 pointlist = [self.point_to_pygame(p) for p in polygon] |
86 pygame.draw.lines(self._surface, color, False, pointlist, 2) | 88 pygame.draw.lines(self._surface, color, False, pointlist, 2) |
99 self.level = level | 101 self.level = level |
100 self.surface = surface | 102 self.surface = surface |
101 self.pos = (0, 0) | 103 self.pos = (0, 0) |
102 self.cur_poly = None | 104 self.cur_poly = None |
103 self.mouse_pos = None | 105 self.mouse_pos = None |
106 self.filled_mode = False | |
104 | 107 |
105 def move_view(self, offset): | 108 def move_view(self, offset): |
106 new_pos = [self.pos[0] + offset[0], self.pos[1] + offset[1]] | 109 new_pos = [self.pos[0] + offset[0], self.pos[1] + offset[1]] |
107 if new_pos[0] < 0: | 110 if new_pos[0] < 0: |
108 new_pos[0] = self.pos[0] | 111 new_pos[0] = self.pos[0] |
120 # We have an active polygon | 123 # We have an active polygon |
121 mouse_pos = self._level_coordinates(self.mouse_pos) | 124 mouse_pos = self._level_coordinates(self.mouse_pos) |
122 else: | 125 else: |
123 mouse_pos = None | 126 mouse_pos = None |
124 self.level.draw(self.surface, self.pos, mouse_pos, | 127 self.level.draw(self.surface, self.pos, mouse_pos, |
125 self.cur_poly) | 128 self.cur_poly, self.filled_mode) |
126 | 129 |
127 def _level_coordinates(self, pos): | 130 def _level_coordinates(self, pos): |
128 # Move positions to level values | 131 # Move positions to level values |
129 if not pos: | 132 if not pos: |
130 return (0, 0) | 133 return (0, 0) |
149 self.move_view((0, -10)) | 152 self.move_view((0, -10)) |
150 elif ev.key == pgl.K_DOWN: | 153 elif ev.key == pgl.K_DOWN: |
151 self.move_view((0, 10)) | 154 self.move_view((0, 10)) |
152 if ev.key == pgl.K_1: | 155 if ev.key == pgl.K_1: |
153 self.cur_poly = 1 | 156 self.cur_poly = 1 |
157 self.filled_mode = False | |
154 if ev.key == pgl.K_2: | 158 if ev.key == pgl.K_2: |
155 self.cur_poly = 2 | 159 self.cur_poly = 2 |
160 self.filled_mode = False | |
156 if ev.key == pgl.K_3: | 161 if ev.key == pgl.K_3: |
157 self.cur_poly = 3 | 162 self.cur_poly = 3 |
163 self.filled_mode = False | |
158 if ev.key == pgl.K_4: | 164 if ev.key == pgl.K_4: |
159 self.cur_poly = 4 | 165 self.cur_poly = 4 |
166 self.filled_mode = False | |
160 if ev.key == pgl.K_5: | 167 if ev.key == pgl.K_5: |
161 self.cur_poly = 5 | 168 self.cur_poly = 5 |
169 self.filled_mode = False | |
162 if ev.key == pgl.K_6: | 170 if ev.key == pgl.K_6: |
163 self.cur_poly = 6 | 171 self.cur_poly = 6 |
172 self.filled_mode = False | |
164 if ev.key == pgl.K_0: | 173 if ev.key == pgl.K_0: |
165 self.cur_poly = None | 174 self.cur_poly = None |
166 if ev.key == pgl.K_d and self.cur_poly: | 175 if ev.key == pgl.K_d and self.cur_poly: |
167 self.level.delete_point(self.cur_poly) | 176 self.level.delete_point(self.cur_poly) |
168 if ev.key == pgl.K_s: | 177 if ev.key == pgl.K_s: |
169 level.save() | 178 level.save() |
179 if ev.key == pgl.K_f: | |
180 if level.all_closed(): | |
181 self.cur_poly = None | |
182 self.filled_mode = True | |
183 else: | |
184 print 'Not all polygons closed, so not filling' | |
170 elif ev.type == pgl.MOUSEBUTTONDOWN and self.cur_poly: | 185 elif ev.type == pgl.MOUSEBUTTONDOWN and self.cur_poly: |
171 # Add a point | 186 # Add a point |
172 self.level.add_point(self.cur_poly, | 187 self.level.add_point(self.cur_poly, |
173 self._level_coordinates(ev.pos)) | 188 self._level_coordinates(ev.pos)) |
174 elif ev.type == pgl.MOUSEMOTION: | 189 elif ev.type == pgl.MOUSEMOTION: |