Example #1
0
    private void playerSkipTurn(VasilPlayer pPlayer)
    {
        pPlayer.turnsToSkip++;
        for (int i = 0; i < _playerAvatars.Count; i++)
        {
            if (_playerAvatars[i].GetComponent <TurnOrderPlayerAvatar>().Player == pPlayer)
            {
                if (_currentPlayerTurn == pPlayer && i == 0)
                {
                    if (_playerAvatars.Count == _players.Count)
                    {
                        StartCoroutine(createSkippedTurn(pPlayer));
                        StartCoroutine(createNextPlayableTurn());
                        return;
                    }
                    continue;
                }

                _playerAvatars[i].GetComponent <TurnOrderPlayerAvatar>().SelfDestroy();
                _positions.RemoveAt(i);
                _playerAvatars.RemoveAt(i);
                break;
            }
        }

        if (_playerAvatars.Count >= _players.Count)
        {
            for (int i = _players.Count - 1; i >= 0; i--)
            {
                if (_playerAvatars[_playerAvatars.Count - 1 - i].GetComponent <TurnOrderPlayerAvatar>().Player != _playersByTurnOrder[_players.Count - 1 - i])
                {
                    break;
                }

                if (i == 0 && _playerAvatars.Count != _players.Count)
                {
                    return;
                }
            }
        }

        if (_playerAvatars.Count < _players.Count ||
            (_playerAvatars.Count <= _players.Count && !pPlayer.hasActedThisTurn))
        {
            //Show turns in which pPlayer is skipped
            StartCoroutine(createSkippedTurn(pPlayer));
        }
        else
        {
            _hasCreatingSkippedTurnFinished = true;
        }

        //Show the next turn that the pPlayer can play
        StartCoroutine(createNextPlayableTurn());
    }
Example #2
0
 private void setPlayerTurn(VasilPlayer pPlayer)
 {
     _currentPlayerTurn = pPlayer;
     foreach (VasilPlayer p in _players)
     {
         if (p == _currentPlayerTurn)
         {
             p.StartTurn();
         }
     }
 }
Example #3
0
    private IEnumerator createSkippedTurn(VasilPlayer pPlayer)
    {
        //Waiting for other turns to be drawn
        while (_hasCreatingSkippedTurnFinished)
        {
            yield return(null);
        }

        for (int i = 0; i < _playersByTurnOrderPositionPrefabs.Count; i++)
        {
            if (_playersByTurnOrderPositionPrefabs[i].GetComponentInChildren <TurnOrderPlayerAvatar>().Player == pPlayer ||
                _playersByTurnOrderPositionPrefabs[i].GetComponentInChildren <TurnOrderPlayerAvatar>().Player.hasActedThisTurn)
            {
                continue;
            }

            createNewPosition(i);
            yield return(new WaitForSeconds(0.05f));
        }

        _hasCreatingSkippedTurnFinished = true;
    }
Example #4
0
    private void nextPlayer()
    {
        if (!_currentPlayerTurn.IsOutOfActions)
        {
            return;
        }

        VasilPlayer currentPlayer = _playerAvatars[0].GetComponent <TurnOrderPlayerAvatar>().Player;

        currentPlayer.hasActedThisTurn = true;
        currentPlayer.EndTurn();

        if (hasFinalPlayerActed())
        {
            _round++;
            //GameObject.Find("RoundCount").GetComponent<TextMeshProUGUI>().text = string.Format("Round: {0}", _round);

            foreach (VasilPlayer p in _players)
            {
                if (p.turnsToSkip == 0)
                {
                    p.hasActedThisTurn = false;
                }

                if (p.turnsToSkip > 0)
                {
                    p.turnsToSkip--;
                }
            }
        }

        GameObject firstPlayer = _playerAvatars[0];

        _playerAvatars.RemoveAt(0);
        _playerAvatars.Add(firstPlayer);

        for (int i = 0; i < _positions.Count; i++)
        {
            _playerAvatars[i].transform.SetParent(_positions[i].transform);

            if (i == 0)
            {
                _playerAvatars[i].GetComponent <ExtendTurnOrderAvatar>().IsFirst = true;
            }
            else
            {
                _playerAvatars[i].GetComponent <ExtendTurnOrderAvatar>().IsFirst = false;
            }
        }

        if (_playerAvatars.Count > _players.Count)
        {
            _playerAvatars[_playerAvatars.Count - 1].GetComponent <LerpToZero>().enabled     = false;
            _playerAvatars[_playerAvatars.Count - 1].GetComponent <Image>().enabled          = false;
            _playerAvatars[_playerAvatars.Count - 1].GetComponent <RectTransform>().position = new Vector2(_turnOrderParent.transform.parent.parent.position.x, _playerAvatars[_playerAvatars.Count - 1].GetComponent <RectTransform>().position.y);
            _playerAvatars[_playerAvatars.Count - 1].GetComponent <TurnOrderPlayerAvatar>().SelfDestroy();
            _positions.RemoveAt(_positions.Count - 1);
            _playerAvatars.RemoveAt(_playerAvatars.Count - 1);
        }

        setPlayerTurn(_playerAvatars[0].GetComponent <TurnOrderPlayerAvatar>().Player);
    }
Example #5
0
 public void SetPlayer(VasilPlayer pPlayer)
 {
     _player = pPlayer;
 }
 private void Start()
 {
     _player = GetComponent <Pawn>().Player;
     Pawn.onPawnReachedFinalTileWithGameObject += playSound;
 }
Example #7
0
 public void SetPlayer(VasilPlayer pPlayer)
 {
     _player = pPlayer;
     GetComponent <Image>().sprite = pPlayer.CharacterImage;
 }