from __future__ import division
+import math
+
from xml.etree.ElementTree import ElementTree
try:
return cls(element.get("type", default), NumberDef(element.text))
def __call__(self, params, rank):
- return (self.value(params, rank), self.type)
+ return (math.radians(self.value(params, rank)), self.type)
def __repr__(self):
return "%s(%r, type=%r)" % (
fire=FireDef,
)
- def __init__(self, source):
+ def __init__(self, type="none", bullets={}, fires={}, actions={}):
+ self.type = type
self.bullets = {}
self.actions = {}
self.fires = {}
- self._bullet_refs = []
- self._action_refs = []
- self._fire_refs = []
-
+ @classmethod
+ def FromDocument(cls, source):
if isinstance(source, (str, unicode)):
source = StringIO(source)
tree = ElementTree()
root = tree.parse(source)
- self.type = root.get("type", "none")
+ self = cls(type=root.get("type", "none"))
+
+ self._bullet_refs = []
+ self._action_refs = []
+ self._fire_refs = []
for element in root.getchildren():
tag = realtag(element)
self.actions.pop(None, None)
self.fires.pop(None, None)
+ return self
+
@property
def top(self):
"""Get a list of all top-level actions."""