Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <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));
 }