Ejemplo n.º 1
0
 private void ChangeState(IState newState)
 {
     if (currentlyRunningState != null)
     {
         currentlyRunningState.Exit(this);
     }
     previouslyRunningState = currentlyRunningState;
     currentlyRunningState  = newState;
     currentlyRunningState.Enter(this);
     _playerMoney.CheckIfOnMoney(this);
 }
    public IEnumerator Move(Player player)
    {
        PlayMoveSoundEffect();
        var mouseUI = player.mouseUI.GetComponent <MouseUI>();

        _mouse.Clear(mouseUI);
        _playerFogOfWar.ChangeFogOfWar(player, player.visitedAlphaLevel);
        _playerFogOfWar.RevealPlayersRefineries(player);

        player._isMoving = true;
        var startPos = player.transform.position;
        var t        = 0f;

        var endPos = new Vector3(GetMousePos(player).x, GetMousePos(player).y, startPos.z);

        while (player.transform.position != endPos)
        {
            t += Time.deltaTime * player.moveSpeed;
            player.transform.position = Vector3.Lerp(startPos, endPos, t);
            yield return(null);
        }

        _playerFogOfWar.ChangeFogOfWar(player, player.revealAlphaLevel);
        player._isMoving = false;
        AddAllTilesOf(player);
        _playerMoney.CheckIfOnMoney(player);
        _gameMap.CheckAndHideGameEntities(player);

        // check if more moves are available
        if (_gameSceneManager.numberOfMoves > 0)
        {
            _mouse.DrawMoveSuggestions(player);
        }

        yield return(0);
    }