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):