Mercurial > nagslang
comparison tools/area_editor.py @ 535:5f7a44b0d330
Merge
author | David Sharpe <decoydavid@gmail.com> |
---|---|
date | Sat, 07 Sep 2013 21:00:56 +0200 |
parents | 811481b20689 |
children | 80264aee0af2 |
comparison
equal
deleted
inserted
replaced
534:62784e479ed2 | 535:5f7a44b0d330 |
---|---|
33 from nagslang.constants import SCREEN | 33 from nagslang.constants import SCREEN |
34 from nagslang.level import Level, POLY_COLORS, LINE_COLOR | 34 from nagslang.level import Level, POLY_COLORS, LINE_COLOR |
35 from nagslang.yamlish import load_s | 35 from nagslang.yamlish import load_s |
36 import nagslang.enemies as ne | 36 import nagslang.enemies as ne |
37 import nagslang.game_object as ngo | 37 import nagslang.game_object as ngo |
38 import nagslang.collectable as collectable | |
38 import nagslang.puzzle as np | 39 import nagslang.puzzle as np |
39 | 40 |
40 # layout constants | 41 # layout constants |
41 MENU_BUTTON_HEIGHT = 35 | 42 MENU_BUTTON_HEIGHT = 35 |
42 MENU_PAD = 4 | 43 MENU_PAD = 4 |
198 | 199 |
199 def get_class(self, classname, mod=None): | 200 def get_class(self, classname, mod=None): |
200 # Get the class given the classname | 201 # Get the class given the classname |
201 modules = { | 202 modules = { |
202 'game_object': ngo, | 203 'game_object': ngo, |
204 'collectable': collectable, | |
203 'enemies': ne, | 205 'enemies': ne, |
204 'puzzle': np, | 206 'puzzle': np, |
205 } | 207 } |
206 if '.' in classname: | 208 if '.' in classname: |
207 modname, classname = classname.split('.') | 209 modname, classname = classname.split('.') |
208 mod = modules[modname] | 210 mod = modules[modname] |
209 if mod is None: | 211 if mod is None: |
210 mod = ngo | 212 mod = ngo |
386 | 388 |
387 def get_poly(self): | 389 def get_poly(self): |
388 try: | 390 try: |
389 try: | 391 try: |
390 index = int(self.poly_choice.get_text()) | 392 index = int(self.poly_choice.get_text()) |
391 except TypeError: | 393 except ValueError: |
392 index = 0 | 394 index = 0 |
393 data = self.level_widget.level.polygons[index][:] | 395 data = self.level_widget.level.polygons[index][:] |
394 except KeyError: | 396 except KeyError: |
395 data = [] | 397 data = [] |
396 if data: | 398 if data: |
821 choice_box.get_selection = lambda: table.get_selection() | 823 choice_box.get_selection = lambda: table.get_selection() |
822 return choice_box | 824 return choice_box |
823 | 825 |
824 def add_game_object(self): | 826 def add_game_object(self): |
825 classes = ngo.get_editable_game_objects() | 827 classes = ngo.get_editable_game_objects() |
828 classes.extend(("collectable.%s" % cls_name, cls) | |
829 for cls_name, cls | |
830 in collectable.get_editable_game_objects()) | |
826 choose = self._make_choice_dialog(classes) | 831 choose = self._make_choice_dialog(classes) |
827 res = choose.present() | 832 res = choose.present() |
828 choice = choose.get_selection() | 833 choice = choose.get_selection() |
829 if res == 'OK' and choice is not None: | 834 if res == 'OK' and choice is not None: |
830 classname = choice['classname'] | 835 classname = choice['classname'] |
869 edit_dlg.cleanup() | 874 edit_dlg.cleanup() |
870 | 875 |
871 def _update_pos(self, obj, new_pos): | 876 def _update_pos(self, obj, new_pos): |
872 data = self.level.lookup[obj] | 877 data = self.level.lookup[obj] |
873 new_coords = self.level.point_to_pymunk(new_pos) | 878 new_coords = self.level.point_to_pymunk(new_pos) |
874 data['args'][0][0] = new_coords[0] | 879 args = data['args'] |
875 data['args'][0][1] = new_coords[1] | 880 old_coords = list(args[0]) |
881 args[0][0] = new_coords[0] | |
882 args[0][1] = new_coords[1] | |
883 param_defs = obj.requires()[1:] # chop off name | |
884 for i, (_key, key_type) in enumerate(param_defs): | |
885 if i > len(args): | |
886 break | |
887 if key_type == "polygon (convex)": | |
888 args[i] = self.level.translate_poly( | |
889 args[i], old_coords, new_coords) | |
890 print args[i] | |
876 self.level.reset_objs() | 891 self.level.reset_objs() |
877 self.invalidate() | 892 self.invalidate() |
878 | 893 |
879 | 894 |
880 class HighLightButton(Button): | 895 class HighLightButton(Button): |