# HG changeset patch # User Simon Cross # Date 1378580053 -7200 # Node ID 811481b2068949c985271890fa9aa5afe9cfb93f # Parent 276f664ec5dace1752dc3981997042388e56b8b1 Add support for collectables. diff -r 276f664ec5da -r 811481b20689 nagslang/collectable.py --- a/nagslang/collectable.py Sat Sep 07 20:49:33 2013 +0200 +++ b/nagslang/collectable.py Sat Sep 07 20:54:13 2013 +0200 @@ -8,6 +8,14 @@ from nagslang.resources import resources +def get_editable_game_objects(): + classes = [] + for cls_name, cls in globals().iteritems(): + if isinstance(cls, type) and hasattr(cls, 'requires'): + classes.append((cls_name, cls)) + return classes + + class CollectibleGameObject(GameObject): zorder = ZORDER_LOW diff -r 276f664ec5da -r 811481b20689 tools/area_editor.py --- a/tools/area_editor.py Sat Sep 07 20:49:33 2013 +0200 +++ b/tools/area_editor.py Sat Sep 07 20:54:13 2013 +0200 @@ -35,6 +35,7 @@ from nagslang.yamlish import load_s import nagslang.enemies as ne import nagslang.game_object as ngo +import nagslang.collectable as collectable import nagslang.puzzle as np # layout constants @@ -200,9 +201,10 @@ # Get the class given the classname modules = { 'game_object': ngo, + 'collectable': collectable, 'enemies': ne, 'puzzle': np, - } + } if '.' in classname: modname, classname = classname.split('.') mod = modules[modname] @@ -823,6 +825,9 @@ def add_game_object(self): classes = ngo.get_editable_game_objects() + classes.extend(("collectable.%s" % cls_name, cls) + for cls_name, cls + in collectable.get_editable_game_objects()) choose = self._make_choice_dialog(classes) res = choose.present() choice = choose.get_selection()