Mercurial > nagslang
changeset 528:811481b20689
Add support for collectables.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 07 Sep 2013 20:54:13 +0200 |
parents | 276f664ec5da |
children | 3f6981264a8b |
files | nagslang/collectable.py tools/area_editor.py |
diffstat | 2 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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()