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