public void Initialize(PlayerLobbySlot slot, LobbyMenu menu) { m_slot = slot; m_menu = menu; m_menu.SetSlotTeam(m_slot, m_team); m_slot.SetPlayerName(m_playerName); m_slot.SetReadyMarkerTexture(m_ready); }
/// <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 SetSlotTeam(PlayerLobbySlot slot, int team) { RectTransform baseRedRect = null; RectTransform baseBlueRect = null; if (m_redSlots.Count > 0) { baseRedRect = m_redSlots[0].GetComponent <RectTransform>(); } if (m_blueSlots.Count > 0) { baseBlueRect = m_blueSlots[0].GetComponent <RectTransform>(); } int currentIndex = -1; if (team == 0) { if (m_redSlots.Contains(slot)) { return; } currentIndex = m_blueSlots.IndexOf(slot); m_redSlots.Add(slot); m_blueSlots.Remove(slot); slot.transform.SetParent(m_redSlotsContainer.transform, false); if (baseRedRect == null) { baseRedRect = slot.GetComponent <RectTransform>(); baseRedRect.localPosition += new Vector3(0, (baseRedRect.rect.height + 5) * currentIndex, 0); } } else { if (m_blueSlots.Contains(slot)) { return; } currentIndex = m_redSlots.IndexOf(slot); m_blueSlots.Add(slot); m_redSlots.Remove(slot); slot.transform.SetParent(m_blueSlotsContainer.transform, false); if (baseBlueRect == null) { baseBlueRect = slot.GetComponent <RectTransform>(); baseBlueRect.localPosition += new Vector3(0, (baseBlueRect.rect.height + 5) * currentIndex, 0); } } Vector3 offset = new Vector3(0, 0, 0); for (int i = 0; i < m_redSlots.Count; i++) { m_redSlots[i].GetComponent <RectTransform>().localPosition = baseRedRect.localPosition - offset; offset.y += baseRedRect.rect.height + 5; } offset = new Vector3(0, 0, 0); for (int i = 0; i < m_blueSlots.Count; i++) { m_blueSlots[i].GetComponent <RectTransform>().localPosition = baseBlueRect.localPosition - offset; offset.y += baseBlueRect.rect.height + 5; } }
public void UpdateSlot(PlayerLobbySlot slot, PlayerLobbyManager lobbyManager) { slot.SetReadyMarkerTexture(lobbyManager.Ready()); }