/// <summary>
/// Initialize this bullet with a top level node
/// </summary>
/// <param name="rootNode">This is a top level node... find the first "top" node and use it to define this bullet</param>
public void InitTopNode(BulletMLNode rootNode)
{
Debug.Assert(null != rootNode);
//okay find the item labelled 'top'
bool bValidBullet = false;
BulletMLNode topNode = rootNode.FindLabelNode("top", ENodeName.action);
if (topNode != null)
{
//initialize with the top node we found!
InitNode(topNode);
bValidBullet = true;
}
else
{
//ok there is no 'top' node, so that means we have a list of 'top#' nodes
for (int i = 1; i < 10; i++)
{
topNode = rootNode.FindLabelNode("top" + i, ENodeName.action);
if (topNode != null)
{
if (!bValidBullet)
{
//Use this bullet!
InitNode(topNode);
bValidBullet = true;
}
else
{
//Create a new bullet
Bullet newDude = _bulletManager.CreateBullet();
//set the position to this dude's position
newDude.X = this.X;
newDude.Y = this.Y;
//initialize with the node we found
newDude.InitNode(topNode);
}
}
}
}
if (!bValidBullet)
{
//We didnt find a "top" node for this dude, remove him from the game.
_bulletManager.RemoveBullet(this);
}
}