Пример #1
0
 public void AddPlayerToList(NetWerewolfPlayer player, bool localPlayer)
 {
     InvokerObj.Invoke(() => {
         LobbyPlayerPanelHelper newPlayer = Instantiate(LobbyPlayerPrefab, PlayerListContent);
         newPlayer.SetupText(player, localPlayer);
         playerPanels.Add(newPlayer);
     });
 }
Пример #2
0
 private void UpdateHostBox(bool isHost)
 {
     InvokerObj.Invoke(() =>
     {
         HostRoleListPanel.gameObject.SetActive(isHost);
         ClientRoleListPanel.gameObject.SetActive(!isHost);
     });
 }
Пример #3
0
    private void BackToLobby()
    {
        ClientNetEvents.ChatMessageReceived.RemoveListener(WriteChatMessage);
        ClientNetEvents.UpdatePlayerList.RemoveListener(PlayerListUpdated);
        ClientNetEvents.UpdateTimer.RemoveListener(UpdateTimer);
        ClientNetEvents.FlipGameScene.RemoveListener(BackToLobby);

        InvokerObj.Invoke(() =>
        {
            SceneManager.LoadScene("LobbyScene");
        });
    }
Пример #4
0
    private void Switching()
    {
        InvokerObj.Invoke(() =>
        {
            ClientNetEvents.UpdatePlayerList.RemoveListener(PlayerListUpdated);
            ClientNetEvents.ChatMessageReceived.RemoveListener(WriteChatMessage);
            ClientNetEvents.UpdateHostBox.RemoveListener(UpdateHostBox);
            ClientNetEvents.UpdateActiveRoleList.RemoveListener(UpdateActiveRoleList);
            ClientNetEvents.FlipGameScene.RemoveListener(Switching);

            SceneManager.LoadScene("GameScene");
        });
    }
Пример #5
0
    private void PlayerListUpdated(uint pid, bool dead)
    {
        if (dead)
        {
            GamePlayerButton pan = playerPanels.Find(p => p.PlayerID == pid);

            InvokerObj.Invoke(() => {
                pan.SetAlive(false);
                pan.SetSelectable(false);
            });
        }
        else
        {
            InvokerObj.Invoke(() => {
                GamePlayerButton newPlayer = Instantiate(GamePlayerPrefab, PlayerListContentTransform);
                newPlayer.SetupText(NetworkingGlobal.ConnectedPlayers.Find(p => p.PlayerID == pid), NetworkingGlobal.LocalPlayer.PlayerID == pid);
                playerPanels.Add(newPlayer);
            });
        }
    }
Пример #6
0
    private void PlayerListUpdated(uint pid, bool remove)
    {
        if (remove)
        {
            LobbyPlayerPanelHelper pan = playerPanels.Find(p => p.PlayerID == pid);
            playerPanels.Remove(pan);

            InvokerObj.Invoke(() => {
                Destroy(pan.gameObject);
            });
        }
        else
        {
            InvokerObj.Invoke(() => {
                LobbyPlayerPanelHelper newPlayer = Instantiate(LobbyPlayerPrefab, PlayerListContent);
                newPlayer.SetupText(NetworkingGlobal.ConnectedPlayers.Find(p => p.PlayerID == pid), NetworkingGlobal.LocalPlayer.PlayerID == pid);
                playerPanels.Add(newPlayer);
            });
        }
    }
Пример #7
0
    private void Start()
    {
        if (FindObjectsOfType(typeof(InvokerObj)).Length > 1)
        {
            Destroy(this);
        }
        else
        {
            DontDestroyOnLoad(this);
            instance = this;
#if !UNITY_EDITOR
            Destroy(DebugCanvasRef);
#else
            NetBase.DebugInfoReceived += NetBase_DebugInfoReceived;
#endif
            Application.wantsToQuit += Application_quitting;
        }

        ErrorReasonText.autoSizeTextContainer = true;
        ErrorCanvasRef.SetActive(false);
    }
Пример #8
0
    public void WriteChatMessage(NetWerewolfPlayer player, string message)
    {
        InvokerObj.Invoke(() =>
        {
            float oldPos = ChatScrollView.normalizedPosition.y;

            if (player != null)
            {
                ChatTextField.text += $"[{player.PlayerID}] {player.Name}: {message}{Environment.NewLine}";
            }
            else
            {
                ChatTextField.text += $"SYSTEM: {message}{Environment.NewLine}";
            }

            LayoutRebuilder.ForceRebuildLayoutImmediate((RectTransform)ChatScrollView.transform);

            if (oldPos <= 0.0001f)
            {
                ChatScrollView.normalizedPosition = Vector2.zero;
            }
        });
    }
Пример #9
0
    private void UpdateActiveRoleList(string roleHash, bool remove)
    {
        // TODO: non-host role list

        if (remove)
        {
            int activeIndex = hostRolePanels.FindIndex(x => x.RoleHash == roleHash);

            if (activeIndex == -1)
            {
                return;
            }

            InvokerObj.Invoke(() =>
            {
                Destroy(hostRolePanels[activeIndex].gameObject);
                hostRolePanels.RemoveAt(activeIndex);

                Destroy(clientRolePanels[activeIndex].gameObject);
                clientRolePanels.RemoveAt(activeIndex);
            });
        }
        else
        {
            InvokerObj.Invoke(() =>
            {
                LobbyHostRoleHelper rp = Instantiate(HostRoleItemPrefab, HostRolesListContent);
                rp.SetupTextAndEvent(roleHash, true);
                hostRolePanels.Add(rp);

                LobbyHostRoleHelper rpc = Instantiate(ClientRoleItemPrefab, ClientRolesListContent);
                rpc.SetupTextAndEvent(roleHash, false);
                clientRolePanels.Add(rpc);
            });
        }
    }
Пример #10
0
 public void UpdateTimer(int timeSeconds)
 {
     InvokerObj.Invoke(() => {
         TimerText.SetText(TimeSpan.FromSeconds(timeSeconds).ToString(@"m\:ss"));
     });
 }