/// <summary> /// Effectue un scan de tous les PlayerManager ayant été créés. Si un PlayerManager scanné n'est pas trouvé /// dans le dictionnaire du menu, on considère qu'il est nouveau et qu'il faut l'ajouter au dictionnaire. /// En l'ajoutant au dictionnaire, le PlayerManager est paramétré et son emplacement dans le Lobby créé. /// </summary> public void ScanForNewPlayerManager() { List <PlayerManager> allPlayerManagers = PlayerManager.AllPlayerManagers(); // On suppose que si les listes sont de la même taille, on a pas perdu de joueur ou un nouveau joueur. // Cela dit, un cas extrême serait qu'un joueur se déconnecte et qu'un autre se connecte à l'exact même moment // Afin de rendre cette condition invalide... if (m_displayedPlayers.Count == allPlayerManagers.Count) { return; } foreach (PlayerManager playerManager in allPlayerManagers) { if (!m_displayedPlayers.Contains(playerManager)) { GameObject newSlot = Instantiate(m_slotPrefab); PlayerLobbySlot lobbySlot = newSlot.GetComponent <PlayerLobbySlot>(); m_displayedPlayers.Add(playerManager); int teamCount; if (playerManager.Team() == 0) { teamCount = m_redSlots.Count; newSlot.transform.SetParent(m_redSlotsContainer.transform, false); m_redSlots.Add(lobbySlot); } else { teamCount = m_blueSlots.Count; newSlot.transform.SetParent(m_blueSlotsContainer.transform, false); m_blueSlots.Add(lobbySlot); } RectTransform newSlotRectT = newSlot.GetComponent <RectTransform>(); Vector3 offset = new Vector3(0, (newSlotRectT.rect.height + 5) * teamCount, 0); newSlotRectT.localPosition = newSlotRectT.localPosition - offset; playerManager.LobbyManager().Initialize(lobbySlot, this); if (playerManager.isLocalPlayer) { m_localPlayerManager = playerManager; m_localPlayerLobbyManager = m_localPlayerManager.LobbyManager(); } } } if (allPlayerManagers.Count > 0) { m_startButton.GetComponent <Button>().interactable = true; if (m_localPlayerLobbyManager != null) { m_swapTeamButton.interactable = !m_localPlayerLobbyManager.Ready(); } } }
public void UpdateSlot(PlayerLobbySlot slot, PlayerLobbyManager lobbyManager) { slot.SetReadyMarkerTexture(lobbyManager.Ready()); }