浏览代码

added SpecUtil funcs for creating and adapting specs to new level models

Darren Ranalli 22 年之前
父节点
当前提交
e1f49b2569
共有 1 个文件被更改,包括 27 次插入0 次删除
  1. 27 0
      direct/src/level/LevelUtil.py

+ 27 - 0
direct/src/level/LevelUtil.py

@@ -0,0 +1,27 @@
+"""LevelUtil module: contains Level utility funcs"""
+
+def getZoneNum2Node(levelModel):
+    """ given model, returns dict of ZoneNumber -> ZoneNode """
+    def findNumberedNodes(baseString, model):
+        # finds nodes whose name follows the pattern 'baseString#'
+        # where there are no characters after #
+        # returns dictionary that maps # to node
+        potentialNodes = model.findAllMatches(
+            '**/%s*' % baseString).asList()
+        num2node = {}
+        for potentialNode in potentialNodes:
+            name = potentialNode.getName()
+            print 'potential match for %s: %s' % (baseString, name)
+            try:
+                num = int(name[len(baseString):])
+            except:
+                continue
+
+            num2node[num] = potentialNode
+
+        return num2node
+
+    zoneNum2node = findNumberedNodes('Zone', levelModel)
+    # add the UberZone to the table
+    zoneNum2node[0] = levelModel
+    return zoneNum2node