Mercurial > mamba
diff mamba/habitats/editor.py @ 343:5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Fri, 16 Sep 2011 22:24:39 +0200 |
parents | 170d4a43c00e |
children | 62a2a659c69b |
line wrap: on
line diff
--- a/mamba/habitats/editor.py Fri Sep 16 22:02:38 2011 +0200 +++ b/mamba/habitats/editor.py Fri Sep 16 22:24:39 2011 +0200 @@ -1,7 +1,7 @@ """Habitat for editing levels.""" import pygame.display -from pygame.locals import SWSURFACE, KEYDOWN, K_1, K_2 +from pygame.locals import SWSURFACE, KEYDOWN, K_1, K_2, MOUSEBUTTONDOWN from mamba.engine import Habitat, NewHabitatEvent from mamba.widgets.level import EditLevelWidget @@ -29,6 +29,7 @@ self.edit_widget = EditLevelWidget(self.level) self.container.add(self.edit_widget) self.container.add_callback(KEYDOWN, self.keydown_event) + self.container.add_callback(MOUSEBUTTONDOWN, self.mouse_event) self.mode = 'Tiles' self.sprite_mode = 'Add' @@ -359,6 +360,31 @@ def sprite_tool(self, ev, widget, sprite_mode): """Handle sprite stuff""" self.sprite_mode = sprite_mode + self.level.update_tiles_ascii() # commit any changes self.clear_toolbar() self.setup_toolbar() return True + + def mouse_event(self, ev, widget): + """Handle mouse clicks when we are in sprite mode""" + if self.mode != 'Sprites': + return False + if self.container.paused: + return False + tile_pos = self.edit_widget.convert_pos(ev.pos) + sprite = self.level.get_sprite_at(tile_pos) + if self.sprite_mode == 'Delete' and sprite: + self.level.remove_sprite(sprite) + elif self.sprite_mode == 'Edit' and sprite: + self.edit_sprite(tile_pos, sprite) + elif self.sprite_mode == 'Add' and sprite is None: + self.edit_sprite(tile_pos, sprite) + else: + return True # Don't refresh the level if we're doing nothing + self.level.restart() + # edit sprite can pause the container, so unpause here + self.container.paused = False + return True + + def edit_sprite(self, tile_pos, sprite_line): + pass