/// <summary> /// Create a BehaviorTreeClass /// </summary> /// <param name="tree">BehaviorTree model</param> public BehaviorTreeClass(BehaviorTreeData tree) : base(tree.Name) { this._Tree = tree; this._Behaviors = new List <BehaviorData>(); this._CreateTreeMethodBody = new StringBuilder(); CreateBehaviorList(); ProcessNodes(); AddInherit("Skill.Framework.AI.BehaviorTree"); // states class BehaviorTreeStateNamesClass states = new BehaviorTreeStateNamesClass(tree); Add(states); if (!_Tree.ExpandMethods) { ClassModifier = ClassModifiers.Abstract; EnumClass actions = new EnumClass("Actions") { Modifier = Modifiers.Protected }; EnumClass conditions = new EnumClass("Conditions") { Modifier = Modifiers.Protected }; EnumClass decorators = new EnumClass("Decorators") { Modifier = Modifiers.Protected }; foreach (var b in _Behaviors) { switch (b.BehaviorType) { case BehaviorType.Action: actions.Add(b.Name); break; case BehaviorType.Condition: conditions.Add(b.Name); break; case BehaviorType.Decorator: decorators.Add(b.Name); break; } } if (actions.Count > 0) { Add(actions); Add(new Method("Skill.Framework.AI.BehaviorResult", "OnAction", "", "Actions action", "object sender", "Skill.Framework.AI.BehaviorParameterCollection parameters") { SubMethod = SubMethod.Abstract, Modifier = Modifiers.Protected }); Add(new Method("void", "OnActionReset", "", "Actions action") { SubMethod = SubMethod.Abstract, Modifier = Modifiers.Protected }); } if (conditions.Count > 0) { Add(conditions); Add(new Method("bool", "OnCondition", "", "Conditions condition", "object sender", "Skill.Framework.AI.BehaviorParameterCollection parameters") { SubMethod = SubMethod.Abstract, Modifier = Modifiers.Protected }); } if (decorators.Count > 0) { Add(decorators); Add(new Method("bool", "OnDecorator", "", "Decorators decorator", "object sender", "Skill.Framework.AI.BehaviorParameterCollection parameters") { SubMethod = SubMethod.Abstract, Modifier = Modifiers.Protected }); } IsPartial = false; } // add DefaultState property Property defaultState = new Property("string", "DefaultState", string.Format("\"{0}\"", _Tree.DefaultState), false) { Modifier = Modifiers.Public, SubMethod = SubMethod.Override }; Add(defaultState); //Method constructor = new Method("", Name, "", ""); //constructor.Modifier = Modifiers.Public; //Add(constructor); Method createTree = new Method("Skill.Framework.AI.BehaviorTreeState[]", "CreateTree", this._CreateTreeMethodBody.ToString()); createTree.IsPartial = false; createTree.SubMethod = SubMethod.Override; createTree.Modifier = Modifiers.Protected; Add(createTree); }
/// <summary> /// Remove specyfied Enum /// </summary> /// <param name="e">Enum to remove</param> /// <returns>True if success, othrwise false</returns> public bool Remove(EnumClass e) { return(_Enums.Remove(e)); }