# HG changeset patch # User Neil Muller # Date 1378127082 -7200 # Node ID 6415db718b36fe592cf960951282b720688dd087 # Parent d1a96fc62d26a104a02e5740da5dcfc636c79511 More albow diff -r d1a96fc62d26 -r 6415db718b36 tools/area_editor.py --- a/tools/area_editor.py Mon Sep 02 15:00:28 2013 +0200 +++ b/tools/area_editor.py Mon Sep 02 15:04:42 2013 +0200 @@ -28,8 +28,11 @@ # layout constants -MENU_WIDTH = 200 MENU_BUTTON_HEIGHT = 35 +MENU_PAD = 6 +MENU_HALF_PAD = MENU_PAD // 2 +MENU_LEFT = SCREEN[0] + MENU_HALF_PAD +MENU_WIDTH = 200 - MENU_PAD class EditorLevel(Level): @@ -143,6 +146,11 @@ level.draw(surface, self.pos, mouse_pos, self.cur_poly, self.filled_mode) + def change_poly(self, new_poly): + self.cur_poly = new_poly + if self.cur_poly is not None: + self.filled_mode = False + def key_down(self, ev): if ev.key == pgl.K_LEFT: self._move_view((-10, 0)) @@ -152,26 +160,10 @@ self._move_view((0, -10)) elif ev.key == pgl.K_DOWN: self._move_view((0, 10)) - elif ev.key == pgl.K_1: - self.cur_poly = 1 - self.filled_mode = False - elif ev.key == pgl.K_2: - self.cur_poly = 2 - self.filled_mode = False - elif ev.key == pgl.K_3: - self.cur_poly = 3 - self.filled_mode = False - elif ev.key == pgl.K_4: - self.cur_poly = 4 - self.filled_mode = False - elif ev.key == pgl.K_5: - self.cur_poly = 5 - self.filled_mode = False - elif ev.key == pgl.K_6: - self.cur_poly = 6 - self.filled_mode = False + elif ev.key in (pgl.K_1, pgl.K_2, pgl.K_3, pgl.K_4, pgl.K_5, pgl.K_6): + self.change_poly(ev.key - pgl.K_0) elif ev.key == pgl.K_0: - self.cur_poly = None + self.change_poly(None) elif ev.key == pgl.K_d and self.cur_poly: self.level.delete_point(self.cur_poly) elif ev.key == pgl.K_s: @@ -196,6 +188,22 @@ self._level_coordinates(ev.pos)) +class PolyButton(Button): + """Button for coosing the correct polygon""" + + def __init__(self, index, level_widget): + if index is not None: + text = "Draw: %s" % index + else: + text = 'Exit Draw Mode' + super(PolyButton, self).__init__(text) + self.index = index + self.level_widget = level_widget + + def action(self): + self.level_widget.change_poly(self.index) + + class EditorApp(RootWidget): def __init__(self, level, surface): @@ -204,9 +212,30 @@ self.level_widget = LevelWidget(self.level) self.add(self.level_widget) + # Add poly buttons + y = 15 + for poly in range(1, 7): + but = PolyButton(poly, self.level_widget) + but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH // 2 - MENU_PAD, + MENU_BUTTON_HEIGHT) + if poly % 2: + but.rect.move_ip(MENU_LEFT, y) + else: + but.rect.move_ip(MENU_LEFT + MENU_WIDTH // 2 - MENU_HALF_PAD, + y) + y += MENU_BUTTON_HEIGHT + MENU_PAD + self.add(but) + + end_poly_but = PolyButton(None, self.level_widget) + end_poly_but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH, + MENU_BUTTON_HEIGHT) + end_poly_but.rect.move_ip(MENU_LEFT, y) + self.add(end_poly_but) + y += MENU_BUTTON_HEIGHT + MENU_PAD + quit_but = Button('Quit', action=self.quit) quit_but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH, MENU_BUTTON_HEIGHT) - quit_but.rect.move_ip(SCREEN[0], 25) + quit_but.rect.move_ip(MENU_LEFT, y) self.add(quit_but) def key_down(self, ev):