direction = None
speed = None
- def __init__(self, actions=[], direction=None, speed=None):
+ def __init__(self, actions=[], direction=None, speed=None, tags=()):
self.direction = direction
self.speed = speed
self.actions = list(actions)
+ self.tags = set(tags)
def __getstate__(self):
state = []
state.append(("speed", self.speed))
if self.actions:
state.append(("actions", self.actions))
+ if self.tags:
+ state.append(("tags", list(self.tags)))
return state
def __setstate__(self, state):
actions.append(ActionDef.FromXML(doc, subelem))
elif tag == "actionRef":
actions.append(ActionRef.FromXML(doc, subelem))
+ elif tag == "tag":
+ self.tags.add(subelem.text)
dfn = cls(actions, direction, speed)
doc._bullets[element.get("label")] = dfn
return dfn
return (
self.direction and self.direction(params, rank),
self.speed and self.speed(params, rank),
+ self.tags,
actions)
def __repr__(self):
class FireDef(object):
"""Fire definition (creates a bullet)."""
- def __init__(self, bullet, direction=None, speed=None, offset=None):
+ def __init__(
+ self, bullet, direction=None, speed=None, offset=None, tags=()):
self.bullet = bullet
self.direction = direction
self.speed = speed
self.offset = offset
+ self.tags = set(tags)
def __getstate__(self):
state = []
state.append(("speed", self.speed))
if self.offset:
state.append(("offset", self.offset))
+ if self.tags:
+ state.append(("tags", list(self.tags)))
try:
params = self.bullet.params
except AttributeError:
bullet = BulletRef.FromXML(doc, subelem)
elif tag == "offset":
offset = Offset.FromXML(doc, subelem)
+ elif tag == "tag":
+ self.tags.add(subelem.text)
try:
fire = cls(bullet, direction, speed, offset)
except UnboundLocalError as exc:
return fire
def __call__(self, params, rank):
- direction, speed, actions = self.bullet(params, rank)
+ direction, speed, tags, actions = self.bullet(params, rank)
if self.direction:
direction = self.direction(params, rank)
if self.speed:
speed = self.speed(params, rank)
- return direction, speed, actions, self.offset
+ tags = tags.union(self.tags)
+ return direction, speed, self.offset, tags, actions
def __repr__(self):
return "%s(direction=%r, speed=%r, bullet=%r)" % (