Example #1
0
    private void checkState()
    {
        switch (this.state)
        {
        case State.Patrol:
            playerDetected = checkSight();
            if (playerDetected)
            {
                patrol.stopState();
                chase.startState(playerDetected);
                setState(State.Chasing);
                chaseTimer = chaseTime;
                break;
            }

            playerDetected = checkHear();
            if (playerDetected)
            {
                patrol.stopState();
                alert.startState(playerDetected);
                setState(State.Alert);
                alertTimer = alertTime;
            }
            break;

        case State.Alert:
            playerDetected = checkSight();
            if (playerDetected)
            {
                alert.stopState();
                chase.startState(playerDetected);
                setState(State.Chasing);
                chaseTimer = chaseTime;
                break;
            }

            playerDetected = checkHear();
            if (playerDetected)
            {
                alert.updateState(playerDetected);
                alertTimer = alertTime;
            }
            else
            {
                alertTimer -= Time.deltaTime;
                patrol.startState();
                setState(State.Patrol);
            }
            break;

        case State.Chasing:
            playerDetected = checkSight();
            if (playerDetected)
            {
                chaseTimer = chaseTime;
                chase.updateState(playerDetected);
            }
            else
            {
                playerDetected = checkHear();
                if (playerDetected)
                {
                    chaseTimer = chaseTime;
                    chase.updateState(playerDetected);
                }
                else                    //Ni veo ni oigo
                {
                    chaseTimer -= Time.deltaTime;
                    if (chaseTimer < 0)
                    {
                        chase.stopState();
                        alert.startState(null);
                        setState(State.Alert);
                        alertTimer = alertTime;
                    }
                }
            }
            break;
        }
    }