public override Bt_Result doAction() { Bt_Result _result = Bt_Result.RUNING; string msg = "test node TestNodeRuning"; Bt_Debug.Debug(_result, msg); return(_result); }
static void testBt_Decorator() { Console.WriteLine("test Bt_Decorator=>"); Bt_Decorator pasel = new Bt_Decorator(); TestNodeFail _test1 = new TestNodeFail(); TestNodeSuccess _test2 = new TestNodeSuccess(); TestNodeRuning _test3 = new TestNodeRuning(); Bt_Result result = pasel.doAction(); Console.WriteLine("test Bt_Decorator result =>" + result); }
static void testBt_ParallelSequence() { Console.WriteLine("test Bt_ParallelSequence=>"); Bt_ParallelSequence paseq = new Bt_ParallelSequence(); TestNodeFail _test1 = new TestNodeFail(); TestNodeSuccess _test2 = new TestNodeSuccess(); TestNodeRuning _test3 = new TestNodeRuning(); paseq.addChild(_test1); paseq.addChild(_test2); paseq.addChild(_test3); Bt_Result result = paseq.doAction(); Console.WriteLine("test Bt_ParallelSequence result =>" + result); }
static void testBt_ParallelSelector() { Console.WriteLine("test Bt_ParallelSelector=>"); Bt_ParallelSelector pasel = new Bt_ParallelSelector(); TestNodeFail _test1 = new TestNodeFail(); TestNodeSuccess _test2 = new TestNodeSuccess(); TestNodeRuning _test3 = new TestNodeRuning(); pasel.addChild(_test1); pasel.addChild(_test2); pasel.addChild(_test3); Bt_Result result = pasel.doAction(); Console.WriteLine("test testBt_ParallelSelector result =>" + result); }
static void testBt_Select() { Console.WriteLine("test Bt_Select=>"); Bt_Select sel = new Bt_Select(); TestNodeFail _test1 = new TestNodeFail(); TestNodeSuccess _test2 = new TestNodeSuccess(); TestNodeRuning _test3 = new TestNodeRuning(); sel.addChild(_test1); sel.addChild(_test2); sel.addChild(_test3); Bt_Result result = sel.doAction(); Console.WriteLine("test testBt_Select result =>" + result); }
public override Bt_Result Do_Action() { if (this.children == null || this.children.Count == 0) { return(Bt_Result.Successful); } Bt_Result result = Bt_Result.None; List <Bt_Node> waitNodes = new List <Bt_Node>(); List <Bt_Node> mainNodes = new List <Bt_Node>(); mainNodes = this.m_pWaitNodes.Count > 0 ? this.m_pWaitNodes : this.children; for (int length = mainNodes.Count, i = 0; i < length; i++) { result = mainNodes[i].Do_Action(); switch (result) { case Bt_Result.Successful: this.m_PIsSuccess = true; break; case Bt_Result.Runing: waitNodes.Add(mainNodes[i]); break; default: break; } } //存在等待节点就返回等待节点 if (waitNodes.Count > 0) { this.m_pWaitNodes = waitNodes; return(Bt_Result.Runing); } //检查返回结果 this.m_pWaitNodes = waitNodes; Reset(); return(Bt_Result.Runing); }
public static void Debug(Bt_Result _result,string msg) { switch (_result) { case Bt_Result.FAIL: Console.ForegroundColor = ConsoleColor.Red; break; case Bt_Result.RUNING: Console.ForegroundColor = ConsoleColor.Yellow; break; case Bt_Result.SUCCESSFUL: Console.ForegroundColor = ConsoleColor.Green; break; default: Console.ForegroundColor = ConsoleColor.White; break; } Console.WriteLine(msg); Console.ForegroundColor = ConsoleColor.White; }