Changeset 220:06c52529e2ed


Ignore:
Timestamp:
Sep 4, 2013, 2:37:10 PM (7 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
rebase_source:
249b6feefe8ffed4baefcd205b82bf996c67de41
Message:

Add placeholder object mode menu

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/area_editor.py

    r206 r220  
    3939MENU_LEFT = SCREEN[0] + MENU_HALF_PAD
    4040MENU_WIDTH = 200 - MENU_PAD
     41
     42BUTTON_RECT = pygame.rect.Rect(0, 0, MENU_WIDTH, MENU_BUTTON_HEIGHT)
     43CHECK_RECT = pygame.rect.Rect(0, 0, MENU_BUTTON_HEIGHT // 2,
     44                              MENU_BUTTON_HEIGHT // 2)
    4145
    4246
     
    354358        self.add(self.level_widget)
    355359
     360        self._dMenus = {}
     361
     362        self._make_draw_menu()
     363        self._make_objects_menu()
     364
     365        self._menu_mode = 'drawing'
     366        self._populate_menu()
     367
     368    def _make_draw_menu(self):
     369        widgets = []
     370
    356371        # Add poly buttons
    357372        y = 15
     
    366381                                 y)
    367382                y += MENU_BUTTON_HEIGHT + MENU_PAD
    368             self.add(but)
    369 
    370         button_rect = pygame.rect.Rect(0, 0, MENU_WIDTH, MENU_BUTTON_HEIGHT)
    371 
    372         check_rect = pygame.rect.Rect(0, 0, MENU_BUTTON_HEIGHT // 2,
    373                                       MENU_BUTTON_HEIGHT // 2)
     383            widgets.append(but)
    374384
    375385        end_poly_but = PolyButton(None, self.level_widget)
    376         end_poly_but.rect = button_rect.copy()
     386        end_poly_but.rect = BUTTON_RECT.copy()
    377387        end_poly_but.rect.move_ip(MENU_LEFT, y)
    378         self.add(end_poly_but)
     388        widgets.append(end_poly_but)
    379389        y += MENU_BUTTON_HEIGHT + MENU_PAD
    380390
    381391        draw_line = Button("Draw interior wall", self.level_widget.line_mode)
    382         draw_line.rect = button_rect.copy()
     392        draw_line.rect = BUTTON_RECT.copy()
    383393        draw_line.rect.move_ip(MENU_LEFT, y)
    384         self.add(draw_line)
     394        widgets.append(draw_line)
    385395        y += MENU_BUTTON_HEIGHT + MENU_PAD
    386396
    387397        fill_but = Button('Fill exterior', action=self.level_widget.set_filled)
    388         fill_but.rect = button_rect.copy()
     398        fill_but.rect = BUTTON_RECT.copy()
    389399        fill_but.rect.move_ip(MENU_LEFT, y)
    390         self.add(fill_but)
     400        widgets.append(fill_but)
    391401        y += MENU_BUTTON_HEIGHT + MENU_PAD
    392402
    393403        save_but = Button('Save Level', action=self.save)
    394         save_but.rect = button_rect.copy()
     404        save_but.rect = BUTTON_RECT.copy()
    395405        save_but.rect.move_ip(MENU_LEFT, y)
    396         self.add(save_but)
     406        widgets.append(save_but)
    397407        y += MENU_BUTTON_HEIGHT + MENU_PAD
    398408
    399409        close_poly_but = Button('Close Polygon',
    400410                                action=self.level_widget.close_poly)
    401         close_poly_but.rect = button_rect.copy()
     411        close_poly_but.rect = BUTTON_RECT.copy()
    402412        close_poly_but.rect.move_ip(MENU_LEFT, y)
    403         self.add(close_poly_but)
     413        widgets.append(close_poly_but)
    404414        y += MENU_BUTTON_HEIGHT + MENU_PAD
    405415
    406416        white = pygame.color.Color("white")
    407417        self.show_objs = CheckBox(fg_color=white)
    408         self.show_objs.rect = check_rect.copy()
     418        self.show_objs.rect = CHECK_RECT.copy()
    409419        self.show_objs.rect.move_ip(MENU_LEFT, y)
    410420        label = Label("Show Objects", fg_color=white)
    411421        label.rect.move_ip(MENU_LEFT + MENU_BUTTON_HEIGHT // 2 + MENU_PAD, y)
    412         self.add(self.show_objs)
    413         self.add(label)
     422        widgets.append(self.show_objs)
     423        widgets.append(label)
    414424        y += label.rect.height + MENU_PAD
    415425
    416426        self.show_enemies = CheckBox(fg_color=white)
    417         self.show_enemies.rect = check_rect.copy()
     427        self.show_enemies.rect = CHECK_RECT.copy()
    418428        self.show_enemies.rect.move_ip(MENU_LEFT, y)
    419429        label = Label("Show enemy start pos", fg_color=white)
    420430        label.rect.move_ip(MENU_LEFT + MENU_BUTTON_HEIGHT // 2 + MENU_PAD, y)
    421         self.add(self.show_enemies)
    422         self.add(label)
     431        widgets.append(self.show_enemies)
     432        widgets.append(label)
    423433        y += label.rect.height + MENU_PAD
    424434
     435        switch_but = Button('Switch to Objects', action=self.switch_to_objects)
     436        switch_but.rect = BUTTON_RECT.copy()
     437        switch_but.rect.move_ip(MENU_LEFT, y)
     438        widgets.append(switch_but)
     439        y += switch_but.rect.height + MENU_PAD
     440
    425441        quit_but = Button('Quit', action=self.quit)
    426         quit_but.rect = button_rect.copy()
     442        quit_but.rect = BUTTON_RECT.copy()
    427443        quit_but.rect.move_ip(MENU_LEFT, y)
    428         self.add(quit_but)
     444        widgets.append(quit_but)
     445
     446        self._dMenus['drawing'] = widgets
     447
     448    def _make_objects_menu(self):
     449        widgets = []
     450
     451        # Add poly buttons
     452        y = 15
     453
     454        save_but = Button('Save Level', action=self.save)
     455        save_but.rect = BUTTON_RECT.copy()
     456        save_but.rect.move_ip(MENU_LEFT, y)
     457        widgets.append(save_but)
     458        y += MENU_BUTTON_HEIGHT + MENU_PAD
     459
     460        switch_but = Button('Switch to Drawing', action=self.switch_to_draw)
     461        switch_but.rect = BUTTON_RECT.copy()
     462        switch_but.rect.move_ip(MENU_LEFT, y)
     463        widgets.append(switch_but)
     464        y += switch_but.rect.height + MENU_PAD
     465
     466        quit_but = Button('Quit', action=self.quit)
     467        quit_but.rect = BUTTON_RECT.copy()
     468        quit_but.rect.move_ip(MENU_LEFT, y)
     469        widgets.append(quit_but)
     470
     471        self._dMenus['objects'] = widgets
    429472
    430473    def key_down(self, ev):
     
    445488            # display errors
    446489            alert("Failed to save level.\n\n%s" % '\n'.join(messages))
     490
     491    def switch_to_draw(self):
     492        if self._menu_mode != 'drawing':
     493            self._clear_menu()
     494            self._menu_mode = 'drawing'
     495            self._populate_menu()
     496
     497    def switch_to_objects(self):
     498        if self._menu_mode != 'objects':
     499            self._clear_menu()
     500            self._menu_mode = 'objects'
     501            self._populate_menu()
     502
     503    def _clear_menu(self):
     504        for widget in self._dMenus[self._menu_mode]:
     505            self.remove(widget)
     506
     507    def _populate_menu(self):
     508        self.level_widget.change_poly(None)
     509        for widget in self._dMenus[self._menu_mode]:
     510            self.add(widget)
     511        self.invalidate()
    447512
    448513    def mouse_move(self, ev):
Note: See TracChangeset for help on using the changeset viewer.