Пример #1
0
 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);
 }
Пример #2
0
    /// <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();
            }
        }
    }
Пример #3
0
    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;
        }
    }
Пример #4
0
 public void UpdateSlot(PlayerLobbySlot slot, PlayerLobbyManager lobbyManager)
 {
     slot.SetReadyMarkerTexture(lobbyManager.Ready());
 }