comparison tools/area_editor.py @ 115:6415db718b36

More albow
author Neil Muller <drnlmuller@gmail.com>
date Mon, 02 Sep 2013 15:04:42 +0200
parents 817d4a62135c
children ecbcf6569fdb
comparison
equal deleted inserted replaced
114:d1a96fc62d26 115:6415db718b36
26 from nagslang.constants import SCREEN 26 from nagslang.constants import SCREEN
27 from nagslang.level import Level, POLY_COLORS 27 from nagslang.level import Level, POLY_COLORS
28 28
29 29
30 # layout constants 30 # layout constants
31 MENU_WIDTH = 200
32 MENU_BUTTON_HEIGHT = 35 31 MENU_BUTTON_HEIGHT = 35
32 MENU_PAD = 6
33 MENU_HALF_PAD = MENU_PAD // 2
34 MENU_LEFT = SCREEN[0] + MENU_HALF_PAD
35 MENU_WIDTH = 200 - MENU_PAD
33 36
34 37
35 class EditorLevel(Level): 38 class EditorLevel(Level):
36 39
37 def __init__(self, name, x=800, y=600): 40 def __init__(self, name, x=800, y=600):
141 else: 144 else:
142 mouse_pos = None 145 mouse_pos = None
143 level.draw(surface, self.pos, mouse_pos, self.cur_poly, 146 level.draw(surface, self.pos, mouse_pos, self.cur_poly,
144 self.filled_mode) 147 self.filled_mode)
145 148
149 def change_poly(self, new_poly):
150 self.cur_poly = new_poly
151 if self.cur_poly is not None:
152 self.filled_mode = False
153
146 def key_down(self, ev): 154 def key_down(self, ev):
147 if ev.key == pgl.K_LEFT: 155 if ev.key == pgl.K_LEFT:
148 self._move_view((-10, 0)) 156 self._move_view((-10, 0))
149 elif ev.key == pgl.K_RIGHT: 157 elif ev.key == pgl.K_RIGHT:
150 self._move_view((10, 0)) 158 self._move_view((10, 0))
151 elif ev.key == pgl.K_UP: 159 elif ev.key == pgl.K_UP:
152 self._move_view((0, -10)) 160 self._move_view((0, -10))
153 elif ev.key == pgl.K_DOWN: 161 elif ev.key == pgl.K_DOWN:
154 self._move_view((0, 10)) 162 self._move_view((0, 10))
155 elif ev.key == pgl.K_1: 163 elif ev.key in (pgl.K_1, pgl.K_2, pgl.K_3, pgl.K_4, pgl.K_5, pgl.K_6):
156 self.cur_poly = 1 164 self.change_poly(ev.key - pgl.K_0)
157 self.filled_mode = False
158 elif ev.key == pgl.K_2:
159 self.cur_poly = 2
160 self.filled_mode = False
161 elif ev.key == pgl.K_3:
162 self.cur_poly = 3
163 self.filled_mode = False
164 elif ev.key == pgl.K_4:
165 self.cur_poly = 4
166 self.filled_mode = False
167 elif ev.key == pgl.K_5:
168 self.cur_poly = 5
169 self.filled_mode = False
170 elif ev.key == pgl.K_6:
171 self.cur_poly = 6
172 self.filled_mode = False
173 elif ev.key == pgl.K_0: 165 elif ev.key == pgl.K_0:
174 self.cur_poly = None 166 self.change_poly(None)
175 elif ev.key == pgl.K_d and self.cur_poly: 167 elif ev.key == pgl.K_d and self.cur_poly:
176 self.level.delete_point(self.cur_poly) 168 self.level.delete_point(self.cur_poly)
177 elif ev.key == pgl.K_s: 169 elif ev.key == pgl.K_s:
178 level.save() 170 level.save()
179 elif ev.key == pgl.K_f: 171 elif ev.key == pgl.K_f:
194 # Add a point 186 # Add a point
195 self.level.add_point(self.cur_poly, 187 self.level.add_point(self.cur_poly,
196 self._level_coordinates(ev.pos)) 188 self._level_coordinates(ev.pos))
197 189
198 190
191 class PolyButton(Button):
192 """Button for coosing the correct polygon"""
193
194 def __init__(self, index, level_widget):
195 if index is not None:
196 text = "Draw: %s" % index
197 else:
198 text = 'Exit Draw Mode'
199 super(PolyButton, self).__init__(text)
200 self.index = index
201 self.level_widget = level_widget
202
203 def action(self):
204 self.level_widget.change_poly(self.index)
205
206
199 class EditorApp(RootWidget): 207 class EditorApp(RootWidget):
200 208
201 def __init__(self, level, surface): 209 def __init__(self, level, surface):
202 super(EditorApp, self).__init__(surface) 210 super(EditorApp, self).__init__(surface)
203 self.level = level 211 self.level = level
204 self.level_widget = LevelWidget(self.level) 212 self.level_widget = LevelWidget(self.level)
205 self.add(self.level_widget) 213 self.add(self.level_widget)
206 214
215 # Add poly buttons
216 y = 15
217 for poly in range(1, 7):
218 but = PolyButton(poly, self.level_widget)
219 but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH // 2 - MENU_PAD,
220 MENU_BUTTON_HEIGHT)
221 if poly % 2:
222 but.rect.move_ip(MENU_LEFT, y)
223 else:
224 but.rect.move_ip(MENU_LEFT + MENU_WIDTH // 2 - MENU_HALF_PAD,
225 y)
226 y += MENU_BUTTON_HEIGHT + MENU_PAD
227 self.add(but)
228
229 end_poly_but = PolyButton(None, self.level_widget)
230 end_poly_but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH,
231 MENU_BUTTON_HEIGHT)
232 end_poly_but.rect.move_ip(MENU_LEFT, y)
233 self.add(end_poly_but)
234 y += MENU_BUTTON_HEIGHT + MENU_PAD
235
207 quit_but = Button('Quit', action=self.quit) 236 quit_but = Button('Quit', action=self.quit)
208 quit_but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH, MENU_BUTTON_HEIGHT) 237 quit_but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH, MENU_BUTTON_HEIGHT)
209 quit_but.rect.move_ip(SCREEN[0], 25) 238 quit_but.rect.move_ip(MENU_LEFT, y)
210 self.add(quit_but) 239 self.add(quit_but)
211 240
212 def key_down(self, ev): 241 def key_down(self, ev):
213 if ev.key == pgl.K_ESCAPE: 242 if ev.key == pgl.K_ESCAPE:
214 self.quit() 243 self.quit()