public void Setup(string[] playerIds, string[] playerNames) { _stock = Cards.Count(); _players = new Dictionary <string, CardPlayer>(playerIds.Length); foreach (var cardPlayer in PlayersParent.GetComponentsInChildren <CardPlayer>()) { Destroy(cardPlayer.gameObject); } for (var i = 0; i < playerIds.Length; i++) { var playerId = playerIds[i]; var prefab = ServiceManager.User.Id.Equals(playerId) ? MainPlayerPrefab : _extraPlayerPrefab; var parent = ServiceManager.User.Id.Equals(playerId) ? PlayersParent : ExtraPlayersParent; var cardPlayer = Instantiate(prefab, parent).GetComponent <CardPlayer>(); cardPlayer.Name = playerNames[i]; cardPlayer.Id = playerId; _players.Add(playerId, cardPlayer); } }
private IEnumerator LateNewGame() { yield return(null); _players = new List <CardPlayer>(PlayersParent.GetComponentsInChildren <CardPlayer>()); foreach (var cardPlayer in _players) { cardPlayer.SetScore(0); } if (_players.Count == 0) { yield break; } CurrentPlayer.SetFocused(true); CardStock.Clear(); CardStock.AddRange(Cards.Take(_initialStock)); CardStock.Shuffle(); Utils.SetChildrenVisible(transform, false); Deal(_defaultCards); }
void Initialize() { Players = new List <Player>(); for (int i = 0; i < PlayersParent.childCount; i++) { var player = PlayersParent.GetChild(i).GetComponent <Player>(); if (player != null) { if (Players.Any(x => x.PlayerNumber == player.PlayerNumber)) { Debug.LogError($"Same PlayerNumber '{player.PlayerNumber}' in Players."); } Players.Add(player); } else { Debug.LogError("Invalid object in Players Parent game object"); } } NumberOfPlayers = Players.Count; CurrentPlayerNumber = Players.Min(p => p.PlayerNumber); Cells = new List <Cell>(); for (int i = 0; i < transform.childCount; i++) { var cell = transform.GetChild(i).gameObject.GetComponent <Cell>(); if (cell != null) { Cells.Add(cell); } else { Debug.LogError("Invalid object in cells parent game object"); } } foreach (var cell in Cells) { cell.CellClicked += OnCellClicked; cell.CellHighlighted += OnCellHighlighted; cell.CellDehighlighted += OnCellDehighlighted; cell.GetNeighbours(Cells); } Units = new List <Unit>(); var unitGenerator = GetComponent <IUnitGenerator>(); if (unitGenerator != null) { var units = unitGenerator.SpawnUnits(Cells); foreach (var unit in units) { Units.Add(unit); unit.UnitClicked += OnUnitClicked; unit.UnitDestroyed += OnUnitDestroyed; UnitAdded?.Invoke(this, new UnitCreatedEventArgs(unit.transform)); } } else { Debug.LogError("No IUnitGenerator script attached to cell grid"); } }