Ejemplo n.º 1
0
    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
        }));
    }
Ejemplo n.º 2
0
    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
        }));
    }
Ejemplo n.º 3
0
    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
        }));
    }
Ejemplo n.º 5
0
    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
        }));
    }
Ejemplo n.º 6
0
    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
        }));
    }