protected BehaviorNode <BaseNavyArmy> OpportunitySequence() { Condition <BaseNavyArmy> condition = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(this.HasSecondaryTarget)); Condition <BaseNavyArmy> condition2 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(this.IsOpportunityGoodEnough)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(this.GatherOpportunities)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action2 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(this.SelectBestOpportunity)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action3 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(this.ComputePathToSecondary)); OrderAction <BaseNavyArmy> orderAction = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(this.MoveSecondary)); Sequence <BaseNavyArmy> sequence = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition, condition2 }); Sequence <BaseNavyArmy> sequence2 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { action, action2, condition2 }); Selector <BaseNavyArmy> selector = new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { sequence, sequence2 }); return(new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { selector, action3, orderAction })); }
protected BehaviorNode <BaseNavyArmy> MoveMainWithOpportunity() { Condition <BaseNavyArmy> condition = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.CanReachTargetThisTurn)); Condition <BaseNavyArmy> condition2 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.HasMovementLeft)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.ComputePathToMain)); OrderAction <BaseNavyArmy> orderAction = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(base.MoveMain)); BehaviorNode <BaseNavyArmy> behaviorNode = this.OpportunitySequence(); BehaviorNode <BaseNavyArmy> behaviorNode2 = this.OpportunityAttackSequence(); Sequence <BaseNavyArmy> sequence = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition, orderAction }); Selector <BaseNavyArmy> selector = new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { sequence, behaviorNode2, behaviorNode, orderAction }); Selector <BaseNavyArmy> selector2 = new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition2, behaviorNode2 }); return(new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { selector2, action, selector })); }
protected override BehaviorNode <BaseNavyArmy> InitializeRoot() { Condition <BaseNavyArmy> condition = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.IsCloseEnoughToAttackMain)); Condition <BaseNavyArmy> condition2 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.IsMainTargetUnderBombardment)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.WaitForNextTick)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action2 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.WaitForNextTurn)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action3 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.Optional)); OrderAction <BaseNavyArmy> orderAction = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(base.Bombard)); Sequence <BaseNavyArmy> sequence = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { action3, action }); Selector <BaseNavyArmy> selector = new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition2, orderAction }); Sequence <BaseNavyArmy> sequence2 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition, selector, sequence }); return(new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { base.SearchRuinSequence(), sequence2, base.MoveMainWithOpportunity(), action2 })); }
protected override BehaviorNode <BaseNavyArmy> InitializeRoot() { Condition <BaseNavyArmy> condition = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.IsCloseEnoughToAttackMain)); Condition <BaseNavyArmy> condition2 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.HasEnoughActionPoint)); Condition <BaseNavyArmy> condition3 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.CanReachTargetThisTurn)); Condition <BaseNavyArmy> condition4 = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.HasMovementLeft)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.WaitForNextTick)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action2 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.InvalidateBehavior)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action3 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.WaitForNextTurn)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action4 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(base.Optional)); OrderAction <BaseNavyArmy> orderAction = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(base.Attack)); OrderAction <BaseNavyArmy> orderAction2 = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(base.GotoAndAttackMain)); Sequence <BaseNavyArmy> sequence = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { action4, action }); Sequence <BaseNavyArmy> sequence2 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition2, orderAction }); Selector <BaseNavyArmy> selector = new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { sequence2, sequence }); Sequence <BaseNavyArmy> sequence3 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition, selector }); Sequence <BaseNavyArmy> sequence4 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition4, condition2, condition3, orderAction2 }); Sequence <BaseNavyArmy> sequence5 = new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition4, action2 }); return(new Selector <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { base.SearchRuinSequence(), sequence3, sequence4, base.MoveMainWithOpportunity(), sequence5, action3 })); }
protected BehaviorNode <BaseNavyArmy> OpportunityAttackSequence() { Condition <BaseNavyArmy> condition = new Condition <BaseNavyArmy>(new Func <BaseNavyArmy, bool>(base.HasEnoughActionPoint)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <BaseNavyArmy>(new Func <BaseNavyArmy, BehaviorNodeReturnCode>(this.CollectOpportunityArmies)); OrderAction <BaseNavyArmy> orderAction = new OrderAction <BaseNavyArmy>(new Func <BaseNavyArmy, Amplitude.Unity.Game.Orders.Order>(this.GotoAndAttackOpportunity)); return(new Sequence <BaseNavyArmy>(new BehaviorNode <BaseNavyArmy>[] { condition, action, orderAction })); }
protected override BehaviorNode <CatspawArmy> InitializeRoot() { Condition <CatspawArmy> condition = new Condition <CatspawArmy>(new Func <CatspawArmy, bool>(base.IsCloseEnoughToAttackSecondary)); Condition <CatspawArmy> condition2 = new Condition <CatspawArmy>(new Func <CatspawArmy, bool>(base.HasEnoughActionPoint)); Condition <CatspawArmy> condition3 = new Condition <CatspawArmy>(new Func <CatspawArmy, bool>(base.HasMovementLeft)); Condition <CatspawArmy> condition4 = new Condition <CatspawArmy>(new Func <CatspawArmy, bool>(base.IsSecondaryValid)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy> action = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy>(new Func <CatspawArmy, BehaviorNodeReturnCode>(base.WaitForNextTurn)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy> action2 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy>(new Func <CatspawArmy, BehaviorNodeReturnCode>(base.ComputePathToSecondary)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy> action3 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy>(new Func <CatspawArmy, BehaviorNodeReturnCode>(base.ComputePathToRoaming)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy> action4 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy>(new Func <CatspawArmy, BehaviorNodeReturnCode>(base.ChooseSecondaryAttackableTarget)); Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy> action5 = new Amplitude.Unity.AI.SimpleBehaviorTree.Action <CatspawArmy>(new Func <CatspawArmy, BehaviorNodeReturnCode>(base.ChoosePositionAwayFromMain)); OrderAction <CatspawArmy> orderAction = new OrderAction <CatspawArmy>(new Func <CatspawArmy, Amplitude.Unity.Game.Orders.Order>(base.AttackSecondary)); OrderAction <CatspawArmy> orderAction2 = new OrderAction <CatspawArmy>(new Func <CatspawArmy, Amplitude.Unity.Game.Orders.Order>(base.MoveSecondary)); OrderAction <CatspawArmy> orderAction3 = new OrderAction <CatspawArmy>(new Func <CatspawArmy, Amplitude.Unity.Game.Orders.Order>(base.MoveRoaming)); Selector <CatspawArmy> selector = new Selector <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { condition4, action4 }); Sequence <CatspawArmy> sequence = new Sequence <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { condition2, orderAction }); Selector <CatspawArmy> selector2 = new Selector <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { sequence, action }); Sequence <CatspawArmy> sequence2 = new Sequence <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { condition, selector2 }); Sequence <CatspawArmy> sequence3 = new Sequence <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { condition3, action2, orderAction2 }); Selector <CatspawArmy> selector3 = new Selector <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { sequence2, sequence3 }); Sequence <CatspawArmy> sequence4 = new Sequence <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { selector, selector3 }); Sequence <CatspawArmy> sequence5 = new Sequence <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { condition3, action5, action3, orderAction3 }); return(new Selector <CatspawArmy>(new BehaviorNode <CatspawArmy>[] { sequence4, sequence5, condition3, action })); }