Mercurial > mamba
annotate mamba/habitats/editor.py @ 396:171c3d817c48
Refresh display after saving level. (A hack, but it does the job.)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 09:21:21 +0200 |
parents | f86188a0f259 |
children | 001c3797a63b |
rev | line source |
---|---|
42
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
1 """Habitat for editing levels.""" |
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
2 |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
3 import pygame.display |
343
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
4 from pygame.locals import SWSURFACE, KEYDOWN, K_1, K_2, MOUSEBUTTONDOWN |
353
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
5 import sys |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
6 import traceback |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
7 |
64
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
8 from mamba.engine import Habitat, NewHabitatEvent |
120 | 9 from mamba.widgets.level import EditLevelWidget |
174 | 10 from mamba.widgets.text import TextWidget, TextButton |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
11 from mamba.widgets.imagebutton import ImageButtonWidget |
276
9c57025781e7
Warn on enter filename results
Neil Muller <drnlmuller@gmail.com>
parents:
275
diff
changeset
|
12 from mamba.widgets.messagebox import MessageBox |
229 | 13 from mamba.widgets.entrybox import EntryBox |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
14 from mamba.widgets.listbox import ListBox |
265
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
15 from mamba.widgets.toollist import ToolListWidget |
353
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
16 from mamba.widgets.editsprite import EditSpriteBox |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
17 from mamba.level import Level, Tileset, TILE_MAP, THING_MAP, InvalidMapError |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
18 from mamba.data import (check_level_exists, get_level_list, get_tileset_list, |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
19 get_track_list) |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
20 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS, |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
21 RESERVED_NAMES) |
42
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
22 |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
23 MAX_TOOLS = 6 |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
24 MODE_HEIGHT = 500 |
240
f0c14d9abd84
Hack in multi-page toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
237
diff
changeset
|
25 |
42
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
26 |
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
27 class EditorHabitat(Habitat): |
314
fba74abad7b7
Pass Level() objects to LevelHabitat and LevelEditorHabitat, in preparation for generating thumbnails from levels in levelmenu
Stefano Rivera <stefano@rivera.za.net>
parents:
284
diff
changeset
|
28 def __init__(self, level): |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
29 super(EditorHabitat, self).__init__(EDIT_SCREEN) |
314
fba74abad7b7
Pass Level() objects to LevelHabitat and LevelEditorHabitat, in preparation for generating thumbnails from levels in levelmenu
Stefano Rivera <stefano@rivera.za.net>
parents:
284
diff
changeset
|
30 self.level = level |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
31 self.container.paused = False |
172
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
32 self.edit_widget = EditLevelWidget(self.level) |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
33 self.container.add(self.edit_widget) |
64
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
34 self.container.add_callback(KEYDOWN, self.keydown_event) |
343
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
35 self.container.add_callback(MOUSEBUTTONDOWN, self.mouse_event) |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
36 self.mode = 'Tiles' |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
37 self.sprite_mode = 'Add' |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
38 |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
39 def on_enter(self): |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
40 # We need to juggle the display to the correct size |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
41 # This is a horrible hack |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
42 pygame.display.quit() |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
43 pygame.display.init() |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
44 pygame.display.set_mode(EDIT_SCREEN, SWSURFACE) |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
45 pygame.display.set_caption('%s Level editor' % NAME) |
64
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
46 super(EditorHabitat, self).on_enter() |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
47 self.setup_toolbar() |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
48 |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
49 def on_exit(self): |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
50 # We need to juggle the display to the correct size |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
51 # This is a horrible hack |
64
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
52 super(EditorHabitat, self).on_exit() |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
53 pygame.display.quit() |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
54 pygame.display.init() |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
55 pygame.display.set_mode(SCREEN, SWSURFACE) |
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
42
diff
changeset
|
56 pygame.display.set_caption(NAME) |
64
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
57 |
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
58 def keydown_event(self, ev, widget): |
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
59 if ev.key in ESCAPE_KEYS: |
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
60 from mamba.habitats.mainmenu import MainMenu |
fbb5cc655b47
More screen size fiddling hackery
Neil Muller <drnlmuller@gmail.com>
parents:
52
diff
changeset
|
61 NewHabitatEvent.post(MainMenu()) |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
62 return True |
267
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
63 elif ev.key == K_1: |
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
64 # Activate floor button |
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
65 self.floor_button.forced_click() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
66 return True |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
67 |
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
68 def setup_toolbar(self): |
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
69 """Draw the editor toolbar""" |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
70 button_height = 5 |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
71 button_left = 820 |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
72 button_padding = 2 |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
73 |
229 | 74 filename = TextButton( |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
75 (button_left, button_height), |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
76 'File: %s' % self.level.level_name, color='white') |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
77 filename.add_callback('clicked', self.do_edit, |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
78 'Specify filename', self.level.level_name, self.check_file) |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
79 self.container.add(filename) |
229 | 80 button_height += filename.rect.height + button_padding |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
81 levelname = TextButton((button_left, button_height), |
170 | 82 'Level: %s' % self.level.name, color='white') |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
83 levelname.add_callback('clicked', self.do_edit, |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
84 'Edit Level Title', self.level.name, self.update_name) |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
85 self.container.add(levelname) |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
86 button_height += levelname.rect.height + button_padding |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
87 |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
88 tilesetname = TextButton((button_left, button_height), |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
89 'Tileset: %s' % self.level.tileset.name, color='white') |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
90 tilesetname.add_callback('clicked', self.list_tilesets) |
94
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
91 self.container.add(tilesetname) |
aba653f8383e
Start adding editor toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
64
diff
changeset
|
92 button_height += tilesetname.surface.get_height() + button_padding |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
93 trackname = TextButton((button_left, button_height), |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
94 'Music: %s' % self.level.background_track, color='white') |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
95 trackname.add_callback('clicked', self.list_tracks) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
96 self.container.add(trackname) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
97 button_height += trackname.surface.get_height() + button_padding |
172
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
98 # TODO: Add Image widget for the current tool |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
99 if self.mode != 'Sprites': |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
100 self.current_tool = TextWidget((button_left, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
101 'Tool: Floor', color='white') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
102 else: |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
103 self.current_tool = TextWidget((button_left, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
104 '%s Sprite' % self.sprite_mode, color='white') |
172
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
105 self.container.add(self.current_tool) |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
106 button_height += self.current_tool.surface.get_height() |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
107 button_height += button_padding |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
108 if self.mode != 'Sprites': |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
109 self.floor_button = ImageButtonWidget( |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
110 (button_left, button_height), self.level.tileset.floor, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
111 'Floor', color='white') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
112 self.container.add(self.floor_button) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
113 self.floor_button.add_callback('clicked', self.change_tool, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
114 '.', 'Floor') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
115 self.edit_widget.set_tool('.') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
116 button_height += (self.floor_button.surface.get_height() |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
117 + button_padding) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
118 if self.mode == 'Tiles': |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
119 tile_map = TILE_MAP |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
120 elif self.mode == 'Things': |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
121 tile_map = THING_MAP |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
122 else: |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
123 tile_map = [] |
265
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
124 tool_list = [] |
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
125 for tile_char in sorted(tile_map): |
113
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
126 try: |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
127 tile = self.level.tileset[tile_char] |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
128 except pygame.error: |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
129 # Ignore stuff we can't load for now |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
130 continue |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
131 if tile is None: |
c5d6d0ba3b2b
Fill in more toolbar stuff
Neil Muller <drnlmuller@gmail.com>
parents:
103
diff
changeset
|
132 continue |
170 | 133 if tile.name: |
134 text = tile.name | |
135 else: | |
136 text = 'Tile' | |
265
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
137 tile_button = ImageButtonWidget((0, 0), tile.image, text, |
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
138 color='white') |
172
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
139 tile_button.add_callback('clicked', self.change_tool, |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
140 tile_char, text) |
265
74ae1645df6e
Move hackery into list widget
Neil Muller <drnlmuller@gmail.com>
parents:
240
diff
changeset
|
141 tool_list.append(tile_button) |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
142 if self.mode == "Sprites": |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
143 for name in ['Add', 'Edit', 'Delete']: |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
144 tile_button = TextButton((0, 0), '%s Sprite' % name) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
145 tile_button.add_callback('clicked', self.sprite_tool, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
146 name) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
147 tool_list.append(tile_button) |
267
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
148 self.tool_widget = ToolListWidget((button_left, button_height), |
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
149 tool_list, MAX_TOOLS, start_key=K_2) |
1e8dca95c48a
Hook up hot-keys in editor for jerith
Neil Muller <drnlmuller@gmail.com>
parents:
265
diff
changeset
|
150 self.container.add(self.tool_widget) |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
151 button_height = self.container.rect.top + MODE_HEIGHT |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
152 if self.mode == 'Tiles': |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
153 mode_button1 = TextButton((button_left, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
154 'Things') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
155 mode_button1.add_callback('clicked', self.change_toolbar, 'Things') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
156 mode_button2 = TextButton((button_left + 100, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
157 'Sprites') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
158 mode_button2.add_callback('clicked', self.change_toolbar, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
159 'Sprites') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
160 elif self.mode == 'Things': |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
161 mode_button1 = TextButton((button_left, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
162 'Tiles') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
163 mode_button1.add_callback('clicked', self.change_toolbar, 'Tiles') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
164 mode_button2 = TextButton((button_left + 100, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
165 'Sprites') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
166 mode_button2.add_callback('clicked', self.change_toolbar, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
167 'Sprites') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
168 elif self.mode == 'Sprites': |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
169 mode_button1 = TextButton((button_left, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
170 'Tiles') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
171 mode_button1.add_callback('clicked', self.change_toolbar, 'Tiles') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
172 mode_button2 = TextButton((button_left + 100, button_height), |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
173 'Things') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
174 mode_button2.add_callback('clicked', self.change_toolbar, |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
175 'Things') |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
176 self.container.add(mode_button1) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
177 self.container.add(mode_button2) |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
178 button_height += mode_button1.rect.height + button_padding |
237
9498b259c248
compress layout a tad more
Neil Muller <drnlmuller@gmail.com>
parents:
236
diff
changeset
|
179 button_height += 2 |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
180 |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
181 new = TextButton((button_left, button_height), "New") |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
182 new.add_callback('clicked', self.new) |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
183 self.container.add(new) |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
184 load = TextButton((button_left + 60, button_height), "Load") |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
185 load.add_callback('clicked', self.load) |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
186 self.container.add(load) |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
187 |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
188 save = TextButton((button_left + 120, button_height), "Save") |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
189 save.add_callback('clicked', self.save) |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
190 self.container.add(save) |
172
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
191 |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
192 def change_tool(self, ev, widget, new_tool, text): |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
193 self.edit_widget.set_tool(new_tool) |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
194 self.current_tool.text = 'Tool: %s' % text |
dabf13abb3fd
Add basic drawing to level editor
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
195 self.current_tool.prepare() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
196 return True |
174 | 197 |
198 def save(self, ev, widget): | |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
199 message = None |
277 | 200 if not self.level.level_name: |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
201 message = MessageBox((300, 300), 'Please enter a name') |
277 | 202 elif self.level.level_name in RESERVED_NAMES: |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
203 message = MessageBox((300, 300), 'Reserved level name') |
363
21caf90f604e
Validate levels before saving them
Neil Muller <drnlmuller@gmail.com>
parents:
361
diff
changeset
|
204 try: |
21caf90f604e
Validate levels before saving them
Neil Muller <drnlmuller@gmail.com>
parents:
361
diff
changeset
|
205 self.level.validate_level() |
21caf90f604e
Validate levels before saving them
Neil Muller <drnlmuller@gmail.com>
parents:
361
diff
changeset
|
206 except InvalidMapError, error: |
21caf90f604e
Validate levels before saving them
Neil Muller <drnlmuller@gmail.com>
parents:
361
diff
changeset
|
207 message = MessageBox((300, 300), "Map isn't valid\n%s" % error) |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
208 if message: |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
209 self.container.paused = True |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
210 self.container.add(message) |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
211 message.grab_focus() |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
212 return |
174 | 213 self.level.save_level() |
396
171c3d817c48
Refresh display after saving level. (A hack, but it does the job.)
Jeremy Thurgood <firxen@gmail.com>
parents:
387
diff
changeset
|
214 self.refresh_display() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
215 return True |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
216 |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
217 def new(self, ev, widget): |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
218 self.load_level(ev, widget, 'blank') |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
219 return True |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
220 |
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
221 def load(self, ev, widget): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
222 self.container.paused = True |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
223 levels = get_level_list() |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
224 load_list = [] |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
225 for level_name in levels: |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
226 if level_name in RESERVED_NAMES: |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
227 continue |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
228 load_button = TextButton((0, 0), level_name) |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
229 load_button.add_callback('clicked', self.load_level, level_name) |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
230 load_list.append(load_button) |
387 | 231 load_dialog = ListBox((200, 200), 'Select Level', load_list, 6) |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
232 self.container.add(load_dialog) |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
233 load_dialog.grab_focus() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
234 return True |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
235 |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
236 def load_level(self, ev, widget, level_name): |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
237 try: |
361
d4062344d8f4
Level namespaces (for telling that a level is complete, no matter where it came from)
Stefano Rivera <stefano@rivera.za.net>
parents:
353
diff
changeset
|
238 new_level = Level(level_name, 'official') |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
239 except (IOError, InvalidMapError, pygame.error), error: |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
240 message = MessageBox((300, 300), |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
241 'Loading Level Failed: %s' % error, color='red') |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
242 self.container.paused = True |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
243 self.container.add(message) |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
244 message.grab_focus() |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
245 return False |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
246 self.container.remove(self.edit_widget) |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
247 self.level = new_level |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
248 if level_name in RESERVED_NAMES: |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
249 self.level.level_name = '' # Special case for new level |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
250 self.container.paused = False |
272
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
251 self.edit_widget = EditLevelWidget(self.level) |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
252 self.container.add(self.edit_widget) |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
253 self.clear_toolbar() |
a061dd62127c
Hook up load and new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
270
diff
changeset
|
254 self.setup_toolbar() |
387 | 255 return True |
270
3c95ba7408f1
Add protected level name list. Add load & new buttons
Neil Muller <drnlmuller@gmail.com>
parents:
267
diff
changeset
|
256 |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
257 def change_toolbar(self, ev, widget, new_mode): |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
258 self.mode = new_mode |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
259 self.edit_widget.tile_mode = (self.mode != 'Sprites') |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
260 self.clear_toolbar() |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
261 self.setup_toolbar() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
262 return True |
180
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
263 |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
264 def clear_toolbar(self): |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
265 """Remove every non-edit widget from the container""" |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
266 for widget in self.container.children[:]: |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
267 if widget is not self.edit_widget: |
d9ee0e50a78f
Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents:
175
diff
changeset
|
268 self.container.remove(widget) |
229 | 269 |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
270 def do_edit(self, ev, widget, message, init_value, callback): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
271 self.container.paused = True |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
272 editbox = EntryBox((200, 200), message, init_value, callback) |
229 | 273 self.container.add(editbox) |
274 editbox.grab_focus() | |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
275 return True |
229 | 276 |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
277 def update_name(self, new_name): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
278 self.container.paused = False |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
279 self.level.name = new_name |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
280 self.clear_toolbar() |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
281 self.setup_toolbar() |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
282 return True |
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
283 |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
284 def list_tilesets(self, ev, widget): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
285 self.container.paused = True |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
286 tilesets = get_tileset_list() |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
287 load_list = [] |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
288 for name in tilesets: |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
289 if name == 'common': |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
290 continue |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
291 load_button = TextButton((0, 0), name) |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
292 load_button.add_callback('clicked', self.change_tileset, name) |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
293 load_list.append(load_button) |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
294 load_dialog = ListBox((200, 200), 'Select Level', load_list) |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
295 self.container.add(load_dialog) |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
296 load_dialog.grab_focus() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
297 return True |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
298 |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
299 def list_tracks(self, ev, widget): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
300 self.container.paused = True |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
301 tracks = get_track_list() |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
302 load_list = [] |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
303 for name in tracks: |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
304 load_button = TextButton((0, 0), name) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
305 load_button.add_callback('clicked', self.change_track, name) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
306 load_list.append(load_button) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
307 load_dialog = ListBox((200, 200), 'Select Level', load_list, 6) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
308 self.container.add(load_dialog) |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
309 load_dialog.grab_focus() |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
310 return True |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
311 |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
312 def change_tileset(self, ev, widget, new_name): |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
313 self.level.update_tiles_ascii() |
279
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
314 old_tileset = self.level.tileset |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
315 try: |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
316 self.level.tileset = Tileset(new_name) |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
317 self.level.restart() |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
318 except pygame.error, error: |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
319 self.level.tileset = old_tileset |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
320 message = MessageBox((300, 300), |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
321 'Unable to change tileset:: %s' % error, |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
322 self.refresh_display, color='red') |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
323 self.container.paused = True |
279
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
324 self.container.add(message) |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
325 message.grab_focus() |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
326 return True |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
327 self.container.paused = False |
279
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
328 self.clear_toolbar() |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
329 self.setup_toolbar() |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
330 return True |
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
331 |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
332 def change_track(self, ev, widget, new_name): |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
333 self.container.paused = False |
325
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
334 self.level.background_track = new_name |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
335 self.clear_toolbar() |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
336 self.setup_toolbar() |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
337 return True |
00c36ff53de9
Teach editor about background tracks
Neil Muller <drnlmuller@gmail.com>
parents:
314
diff
changeset
|
338 |
279
162bddbbc5d0
Protect against bad tilesets as well
Neil Muller <drnlmuller@gmail.com>
parents:
278
diff
changeset
|
339 def refresh_display(self): |
275
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
340 self.level.restart() |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
341 self.clear_toolbar() |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
342 self.setup_toolbar() |
51bec5e6191e
Rework selecting tilesets
Neil Muller <drnlmuller@gmail.com>
parents:
272
diff
changeset
|
343 return True |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
344 |
229 | 345 def check_file(self, new_name): |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
346 message = None |
229 | 347 if new_name == self.level.level_name: |
348 return True # No-op change | |
276
9c57025781e7
Warn on enter filename results
Neil Muller <drnlmuller@gmail.com>
parents:
275
diff
changeset
|
349 if not new_name: |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
350 message = MessageBox((300, 300), 'Please enter a name') |
277 | 351 if new_name in RESERVED_NAMES: |
352 # This case is caught by the existance check, but the | |
353 # importance of the reserved names means we use a different | |
354 # message | |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
355 message = MessageBox((300, 300), 'Reserved level name') |
277 | 356 elif check_level_exists(new_name): |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
357 message = MessageBox((300, 300), 'Name already in use') |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
358 if message: |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
359 self.container.paused = True |
278
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
360 self.container.add(message) |
f10d06fc64b2
Add some robustness against broken levels
Neil Muller <drnlmuller@gmail.com>
parents:
277
diff
changeset
|
361 message.grab_focus() |
229 | 362 return False |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
363 self.container.paused = False |
229 | 364 self.level.level_name = new_name |
365 self.clear_toolbar() | |
366 self.setup_toolbar() | |
236
09247e08aeda
Refactor edit calling code. Tweak toolbar layout
Neil Muller <drnlmuller@gmail.com>
parents:
229
diff
changeset
|
367 return True |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
368 |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
369 def sprite_tool(self, ev, widget, sprite_mode): |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
370 """Handle sprite stuff""" |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
371 self.sprite_mode = sprite_mode |
343
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
372 self.level.update_tiles_ascii() # commit any changes |
284
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
373 self.clear_toolbar() |
96b4ad9b4d30
Start work on sprite editor. Tweak layout issues
Neil Muller <drnlmuller@gmail.com>
parents:
279
diff
changeset
|
374 self.setup_toolbar() |
337
170d4a43c00e
Don't edit the level when interacting with dialogs
Neil Muller <drnlmuller@gmail.com>
parents:
325
diff
changeset
|
375 return True |
343
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
376 |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
377 def mouse_event(self, ev, widget): |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
378 """Handle mouse clicks when we are in sprite mode""" |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
379 if self.mode != 'Sprites': |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
380 return False |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
381 if self.container.paused: |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
382 return False |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
383 tile_pos = self.edit_widget.convert_pos(ev.pos) |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
384 sprite = self.level.get_sprite_at(tile_pos) |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
385 if self.sprite_mode == 'Delete' and sprite: |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
386 self.level.remove_sprite(sprite) |
353
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
387 self.level.restart() |
343
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
388 elif self.sprite_mode == 'Edit' and sprite: |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
389 self.edit_sprite(tile_pos, sprite) |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
390 elif self.sprite_mode == 'Add' and sprite is None: |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
391 self.edit_sprite(tile_pos, sprite) |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
392 return True |
5bf35267ddc0
Hook up sprite deletion. Framework work for sprite editing & adding
Neil Muller <drnlmuller@gmail.com>
parents:
337
diff
changeset
|
393 |
353
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
394 def edit_sprite(self, tile_pos, sprite): |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
395 self.container.paused = True |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
396 sprite_editor = EditSpriteBox((200, 100), tile_pos, sprite, |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
397 post_callback=self.commit_line) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
398 self.container.add(sprite_editor) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
399 sprite_editor.grab_focus() |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
400 |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
401 def commit_line(self, sprite): |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
402 try: |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
403 self.level.validate_sprite(sprite) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
404 except: |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
405 # We don't know what errors thwe constructor may show, so |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
406 # we catch everything |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
407 # We use sys.exc_info to get slight neater info |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
408 exc_type, info, _ = sys.exc_info() |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
409 info = traceback.format_exception_only(exc_type, info)[0] |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
410 message = MessageBox((300, 300), |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
411 'Validation failed:\n%s' % info) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
412 self.container.paused = True |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
413 self.container.add(message) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
414 message.grab_focus() |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
415 return False |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
416 # Validation successful, so add to level |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
417 if self.sprite_mode == 'Add': |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
418 self.level.add_sprite(sprite) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
419 elif self.sprite_mode == 'Edit': |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
420 self.level.replace_sprite(sprite) |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
421 self.level.restart() |
62a2a659c69b
Call sprite editor dialog
Neil Muller <drnlmuller@gmail.com>
parents:
343
diff
changeset
|
422 return True |