コード例 #1
0
    public override void EnterState(BasicAI owner)
    {
        IWarnState ownerWithWarningInterface = owner as IWarnState;

        if (ownerWithWarningInterface != null)
        {
            ownerWithWarningInterface.IndicateDanger();
        }
    }
コード例 #2
0
    // Can change to States:
    // -> FollowState, if shouldFollow is true
    // -> WarnState, if warnTrigger is set
    // -> IdleState, else
    public override void UpdateState(BasicAI owner)
    {
        IFollowState ownerWithFollowInterface  = owner as IFollowState;
        IWarnState   ownerWithWarningInterface = owner as IWarnState;

        if (ownerWithFollowInterface != null && ownerWithFollowInterface.shouldFollow)
        {
            owner.stateMachine.ChangeState(FollowState.Instance);
        }
        else if (ownerWithWarningInterface != null && ownerWithWarningInterface.dangerApparent == true)
        {
            owner.stateMachine.ChangeState(WarnState.Instance);
        }
        else
        {
            owner.stateMachine.ChangeState(IdleState.Instance);
        }
    }
コード例 #3
0
    // Can change to States:
    // -> IndicateSafteyState, if safteyTrigger is true
    // -> WaitForSafetyState, else
    public override void UpdateState(BasicAI owner)
    {
        IWarnState       ownerWithWarnInterdace       = owner as IWarnState;
        IFollowState     ownerWithFollowInterface     = owner as IFollowState;
        IDangerZoneState ownerWithDangerZoneInterface = owner as IDangerZoneState;

        if (ownerWithWarnInterdace != null && ownerWithWarnInterdace.dangerApparent == false)
        {
            owner.stateMachine.ChangeState(IndicateSafteyState.Instance);
        }
        else if (ownerWithDangerZoneInterface != null && ownerWithDangerZoneInterface.immediateDangerApparent == true)
        {
            owner.stateMachine.ChangeState(EnterDangerZoneState.Instance);
        }
        else if (ownerWithFollowInterface != null && ownerWithFollowInterface.shouldFollow == true)
        {
            owner.stateMachine.ChangeState(WaitForSafetyFollowState.Instance);
        }
        else
        {
            owner.stateMachine.ChangeState(WaitForSafetyState.Instance);
        }
    }