/// <summary> /// Validates the node. /// Overloaded in child classes to validate that each type of node follows the correct business logic. /// This checks stuff that isn't validated by the XML validation /// </summary> public override void ValidateNode() { base.ValidateNode(); //check for a bullet node BulletDescriptionNode = GetChild(ENodeName.bullet) as BulletNode; //if it didn't find one, check for the bulletref node if (null == BulletDescriptionNode) { //make sure that dude knows what he's doing BulletRefNode refNode = GetChild(ENodeName.bulletRef) as BulletRefNode; refNode.FindMyBulletNode(); BulletDescriptionNode = refNode.ReferencedBulletNode; } Debug.Assert(null != BulletDescriptionNode); }
/// <summary> /// Finds the referenced bullet node. /// </summary> public void FindMyBulletNode() { if (null == ReferencedBulletNode) { //Find the action node this dude references BulletMLNode refNode = GetRootNode().FindLabelNode(Label, ENodeName.bullet); //make sure we foud something if (null == refNode) { throw new NullReferenceException("Couldn't find the bullet node \"" + Label + "\""); } ReferencedBulletNode = refNode as BulletNode; if (null == ReferencedBulletNode) { throw new NullReferenceException("The BulletMLNode \"" + Label + "\" isn't a bullet node"); } } }