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()); }
private void setPlayerTurn(VasilPlayer pPlayer) { _currentPlayerTurn = pPlayer; foreach (VasilPlayer p in _players) { if (p == _currentPlayerTurn) { p.StartTurn(); } } }
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; }
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); }
public void SetPlayer(VasilPlayer pPlayer) { _player = pPlayer; }
private void Start() { _player = GetComponent <Pawn>().Player; Pawn.onPawnReachedFinalTileWithGameObject += playSound; }
public void SetPlayer(VasilPlayer pPlayer) { _player = pPlayer; GetComponent <Image>().sprite = pPlayer.CharacterImage; }