Beispiel #1
0
 private void Start()
 {
     possibleMovements    = new List <movement>();
     actualState          = fsm.random;
     currentMovement      = movement.none;
     chaseMovement        = movement.none;
     changeDirectionClock = 0;
     lCheckBool           = lCheck.GetComponent <Check>();
     rCheckBool           = rCheck.GetComponent <Check>();
     uCheckBool           = uCheck.GetComponent <Check>();
     dCheckBool           = dCheck.GetComponent <Check>();
 }
Beispiel #2
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected override void UpdateRun( fsm.State _curState )
 {
     base.UpdateRun(_curState);
     spawnTimer += Time.deltaTime;
     if (spawnTimer > interval) {
         if (currentBulletCount < maxBulletCount) {
             SpawnATridentBulletAt(startPos);
             spawnTimer = 0.0f;
         } else {
             currentRepCount++;
             StartARound();
             spawnTimer = 0.0f;
         }
     }
 }
Beispiel #3
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void UpdateGameOverState( fsm.State _curState )
 {
 }
Beispiel #4
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected virtual void ExitPauseState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     AcceptInput(true);
 }
Beispiel #5
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void ExitMainLoopState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     Screen.showCursor = true;
 }
Beispiel #6
0
 ///////////////////////////////////////////////////////////////////////////////
 // Pause state
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected virtual void EnterPauseState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     AcceptInput(false);
 }
Beispiel #7
0
 ///////////////////////////////////////////////////////////////////////////////
 // GameOver state
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void EnterGameOverState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     AcceptInput(false);
     gamePanel.ShowGameOver();
     challengeMng.StopChallenges();
     gamePanel.panelGameOver.ShowNamePrompt(true);
     StartCoroutine(Game.instance.snsMng.SetLeaderBoard(Mathf.FloorToInt(Stage.instance.timer)));
     StartCoroutine(Game.instance.snsMng.GetUser());
 }
Beispiel #8
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void UpdateFinish( fsm.State _curState )
 {
 }
Beispiel #9
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterFinish( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     stateMachine.Send( (int) EventType.Deactive);
 }
Beispiel #10
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterStageState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     StartCoroutine( DelayInit() );
 }
Beispiel #11
0
 ///////////////////////////////////////////////////////////////////////////////
 // loading state
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterLoadingState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     LoadStageEvent e = _event as LoadStageEvent;
     if ( e != null ) {
         StartCoroutine( StartLoading( e.scene, 1.0f ) );
     }
 }
Beispiel #12
0
 ///////////////////////////////////////////////////////////////////////////////
 // launch state
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterLaunchState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     Application.LoadLevel( "MainMenu" );
     stateMachine.Send( (int)EventType.ShowStage );
 }
Beispiel #13
0
    private void Update()
    {
        possibleMovements.Clear();
        possibleMovementsCount = 0;
        changeDirectionClock  += Time.deltaTime;

        //-----------possible movement raycasts-----------------
        //Physics.Raycast(transform.position, transform.forward, out RaycastHit moveUp, 0.7f);
        //Physics.Raycast(transform.position, -transform.forward, out RaycastHit moveDown, 0.7f);
        //Physics.Raycast(transform.position, -transform.right, out RaycastHit moveLeft, 0.7f);
        //Physics.Raycast(transform.position, transform.right, out RaycastHit moveRight, 0.7f);

        //----------player seeking raycasts---------------------
        Physics.Raycast(transform.position, transform.forward, out RaycastHit viewUp, visionRange);
        Physics.Raycast(transform.position, -transform.forward, out RaycastHit viewDown, visionRange);
        Physics.Raycast(transform.position, -transform.right, out RaycastHit viewLeft, visionRange);
        Physics.Raycast(transform.position, transform.right, out RaycastHit viewRight, visionRange);

        //----------player seen check--------------------------
        if (viewUp.transform != null && viewUp.transform.tag == "Player")
        {
            chaseMovement = movement.up;
            actualState   = fsm.chase;
        }
        else
        {
            if (viewDown.transform != null && viewDown.transform.tag == "Player")
            {
                chaseMovement = movement.down;
                actualState   = fsm.chase;
            }
            else
            {
                if (viewLeft.transform != null && viewLeft.transform.tag == "Player")
                {
                    chaseMovement = movement.left;
                    actualState   = fsm.chase;
                }
                else
                {
                    if (viewRight.transform != null && viewRight.transform.tag == "Player")
                    {
                        chaseMovement = movement.right;
                        actualState   = fsm.chase;
                    }
                    else
                    {
                        chaseMovement = movement.none;
                        actualState   = fsm.random;
                    }
                }
            }
        }

        //---------possible movement checks--------------------
        if (!uCheckBool.isTrigger)
        {
            possibleMovements.Insert(possibleMovementsCount, movement.up);
            possibleMovementsCount++;
        }
        else
        {
            if (currentMovement == movement.up)
            {
                currentMovement      = movement.none;
                changeDirectionClock = 0;
            }
        }

        if (!dCheckBool.isTrigger)
        {
            possibleMovements.Insert(possibleMovementsCount, movement.down);
            possibleMovementsCount++;
        }
        else
        {
            if (currentMovement == movement.down)
            {
                currentMovement      = movement.none;
                changeDirectionClock = 0;
            }
        }

        if (!lCheckBool.isTrigger)
        {
            possibleMovements.Insert(possibleMovementsCount, movement.left);
            possibleMovementsCount++;
        }
        else
        {
            if (currentMovement == movement.left)
            {
                currentMovement      = movement.none;
                changeDirectionClock = 0;
            }
        }

        if (!rCheckBool.isTrigger)
        {
            possibleMovements.Insert(possibleMovementsCount, movement.right);
            possibleMovementsCount++;
        }
        else
        {
            if (currentMovement == movement.right)
            {
                currentMovement      = movement.none;
                changeDirectionClock = 0;
            }
        }


        //----------FSM-----------------------
        switch (actualState)
        {
        case fsm.random:
            if (possibleMovementsCount == 0)
            {
                currentMovement = movement.none;
            }
            else
            {
                if (changeDirectionClock >= changeDirectionTime)
                {
                    currentMovement      = possibleMovements[Random.Range(0, possibleMovementsCount)];
                    changeDirectionClock = 0;
                }
            }
            break;

        case fsm.chase:
            changeDirectionClock = 0;
            currentMovement      = chaseMovement;
            break;
        }

        //--------actual movement--------------
        float offsetZ = Mathf.Abs(transform.position.z) - Mathf.Floor(Mathf.Abs(transform.position.z));
        float offsetX = Mathf.Abs(transform.position.x) - Mathf.Floor(Mathf.Abs(transform.position.x));

        switch (currentMovement)
        {
        case movement.up:
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + speed * Time.deltaTime);
            if (Mathf.Abs(0.5f - offsetX) > snapThreshold)
            {
                if (offsetX >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x + correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x - correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z);
                }
            }
            else
            {
                if (offsetX >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x + Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x - Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z);
                }
            }
            break;

        case movement.down:
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - speed * Time.deltaTime);
            if (Mathf.Abs(0.5f - offsetX) > snapThreshold)
            {
                if (offsetX >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x + correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x - correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z);
                }
            }
            else
            {
                if (offsetX >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x + Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x - Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z);
                }
            }
            break;

        case movement.left:
            transform.position = new Vector3(transform.position.x - speed * Time.deltaTime, transform.position.y, transform.position.z);
            if (Mathf.Abs(0.5f - offsetZ) > snapThreshold)
            {
                if (offsetZ >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + correctionSpeed * Time.deltaTime);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - correctionSpeed * Time.deltaTime);
                }
            }
            else
            {
                if (offsetZ >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + Mathf.Abs(0.5f - offsetZ));
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - Mathf.Abs(0.5f - offsetZ));
                }
            }
            break;

        case movement.right:
            transform.position = new Vector3(transform.position.x + speed * Time.deltaTime, transform.position.y, transform.position.z);
            if (Mathf.Abs(0.5f - offsetZ) > snapThreshold)
            {
                if (offsetZ >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + correctionSpeed * Time.deltaTime);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - correctionSpeed * Time.deltaTime);
                }
            }
            else
            {
                if (offsetZ >= 0.5)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + Mathf.Abs(0.5f - offsetZ));
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - Mathf.Abs(0.5f - offsetZ));
                }
            }
            break;

        case movement.none:
            break;
        }
    }
throw new StateIdAlreadyAddedException(fsm, states[i].Item1.ToString());
Beispiel #15
0
    ///////////////////////////////////////////////////////////////////////////////
    //
    ///////////////////////////////////////////////////////////////////////////////
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    void EnterGetReady( fsm.State _from, fsm.State _to, fsm.Event _event )
    {
        if (_event.id == (int)EventType.Restart) {
            Reset();
        }

        StartCoroutine(gamePanel.ShowStart());
        AcceptInput(false);
        stateMachine.Send( fsm.Event.NEXT );
    }
Beispiel #16
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void ExitLaunchState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #17
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void ExitLoadingState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     // loadingIndicator.gameObject.SetActiveRecursively(false);
 }
Beispiel #18
0
 ///////////////////////////////////////////////////////////////////////////////
 // states
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterSleep( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     sleepTimer = 0.0f;
 }
Beispiel #19
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void ExitStageState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #20
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void UpdateSleep( fsm.State _curState )
 {
     if (startTime > 0.0f) {
         sleepTimer += Time.deltaTime;
         if (sleepTimer > startTime) {
             StartBullets();
         }
     }
 }
Beispiel #21
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void EnterPrepare( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     stateMachine.Send( (int)EventType.Run );
 }
Beispiel #22
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void EnterNoBullet( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     Invoke ( "StartGame", 2.0f );
 }
Beispiel #23
0
 ///////////////////////////////////////////////////////////////////////////////
 // Main Loop State
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected virtual void EnterRun( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #24
0
 ///////////////////////////////////////////////////////////////////////////////
 // Restart state
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void EnterRestartState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     Reset();
     stateMachine.Send( (int) EventType.Restart );
 }
Beispiel #25
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected virtual void ExitPause( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #26
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void ExitNoBullet( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #27
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void ExitPrepare( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #28
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void ExitRestartState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     gamePanel.HideGameOver();
 }
Beispiel #29
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected virtual void UpdateRun( fsm.State _curState )
 {
 }
Beispiel #30
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected void UpdateMainLoopState( fsm.State _curState )
 {
     timer += Time.deltaTime;
     if (Mathf.FloorToInt(timer)%10 == 1) {
         challengeMng.UpdateSpeed();
     }
 }
Beispiel #31
0
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterDeactive( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
 }
Beispiel #32
0
 ///////////////////////////////////////////////////////////////////////////////
 // Main Loop State
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void EnterMainLoopState( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     challengeMng.StartChallenges();
     Screen.showCursor = false;
     AcceptInput(true);
 }
Beispiel #33
0
 ///////////////////////////////////////////////////////////////////////////////
 // Main Loop State
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 protected override void EnterRun( fsm.State _from, fsm.State _to, fsm.Event _event )
 {
     base.EnterRun( _from, _to, _event );
     StartARound();
 }