コード例 #1
0
        public static void CreateOrUpdateMultiplayerButton()
        {
            Log.Info("Creating multiplayer button...");

            // Find pause menu view.
            UIPanel pauseUiPanel = UIView.GetAView()?.FindUIComponent("Menu") as UIPanel;

            if (pauseUiPanel == null)
            {
                return;
            }

            // Find button.
            UIButton _multiplayerButton = UIView.GetAView().FindUIComponent("Multiplayer") as UIButton;

            // Find divider.
            UIPanel _multiplayerDivider = UIView.GetAView().FindUIComponent("multiplayerDivider") as UIPanel;

            // Add the button & divider if it does not exist and assign
            // the click event.
            if (_multiplayerButton == null)
            {
                // Add multiplayer button.
                _multiplayerButton = (UIButton)pauseUiPanel.AddUIComponent(typeof(UIButton));

                // Add multiplayer divider.
                _multiplayerDivider = (UIPanel)pauseUiPanel.AddUIComponent(typeof(UIPanel));

                // Respond to button click.
                _multiplayerButton.eventClick += (component, param) =>
                {
                    // Close pause menu.
                    ReflectionHelper.Call(new PauseMenu(), "Resume");

                    // Open host game menu if not in multiplayer session, else open connection panel
                    if (MultiplayerManager.Instance.CurrentRole == MultiplayerRole.None)
                    {
                        PanelManager.TogglePanel <HostGamePanel>();

                        // Display warning if DLCs or other mods are enabled
                        if (DLCHelper.GetOwnedDLCs() != SteamHelper.DLC_BitMask.None ||
                            Singleton <PluginManager> .instance.enabledModCount > 1)
                        {
                            MessagePanel msgPanel = PanelManager.ShowPanel <MessagePanel>();
                            msgPanel.DisplayContentWarning();
                        }
                    }
                    else
                    {
                        PanelManager.TogglePanel <ConnectionPanel>();
                    }
                };
            }

            // Set multiplayer button properties.
            _multiplayerButton.name              = "Multiplayer";
            _multiplayerButton.text              = "MULTIPLAYER";
            _multiplayerButton.width             = 310;
            _multiplayerButton.height            = 57;
            _multiplayerButton.textScale         = 1.25f;
            _multiplayerButton.normalBgSprite    = "ButtonMenu";
            _multiplayerButton.disabledBgSprite  = "ButtonMenuDisabled";
            _multiplayerButton.hoveredBgSprite   = "ButtonMenuHovered";
            _multiplayerButton.focusedBgSprite   = "ButtonMenuFocused";
            _multiplayerButton.pressedBgSprite   = "ButtonMenuPressed";
            _multiplayerButton.textColor         = new Color32(255, 255, 255, 255);
            _multiplayerButton.disabledTextColor = new Color32(7, 7, 7, 255);
            _multiplayerButton.hoveredTextColor  = new Color32(7, 132, 255, 255);
            _multiplayerButton.focusedTextColor  = new Color32(255, 255, 255, 255);
            _multiplayerButton.pressedTextColor  = new Color32(30, 30, 44, 255);

            // Set multiplayer divider properties.
            _multiplayerDivider.height = 7;
            _multiplayerDivider.name   = "multiplayerDivider";

            // Enable button sounds.
            _multiplayerButton.playAudioEvents = true;
        }
コード例 #2
0
ファイル: LoadingExtension.cs プロジェクト: kaenganxt/Tango
        public override void OnLevelLoaded(LoadMode mode)
        {
            base.OnLevelLoaded(mode);

            if (MultiplayerManager.Instance.CurrentRole == MultiplayerRole.Client)
            {
                MultiplayerManager.Instance.CurrentClient.Status = ClientStatus.Connected;
                Command.SendToServer(new ClientLevelLoadedCommand());
            }

            UIView uiView = UIView.GetAView();

            // Add the chat log
            uiView.AddUIComponent(typeof(ChatLogPanel));

            _multiplayerButton = (UIButton)uiView.AddUIComponent(typeof(UIButton));

            _multiplayerButton.text   = "Multiplayer";
            _multiplayerButton.width  = 150;
            _multiplayerButton.height = 40;

            _multiplayerButton.normalBgSprite    = "ButtonMenu";
            _multiplayerButton.disabledBgSprite  = "ButtonMenuDisabled";
            _multiplayerButton.hoveredBgSprite   = "ButtonMenuHovered";
            _multiplayerButton.focusedBgSprite   = "ButtonMenuFocused";
            _multiplayerButton.pressedBgSprite   = "ButtonMenuPressed";
            _multiplayerButton.textColor         = new Color32(255, 255, 255, 255);
            _multiplayerButton.disabledTextColor = new Color32(7, 7, 7, 255);
            _multiplayerButton.hoveredTextColor  = new Color32(7, 132, 255, 255);
            _multiplayerButton.focusedTextColor  = new Color32(255, 255, 255, 255);
            _multiplayerButton.pressedTextColor  = new Color32(30, 30, 44, 255);

            // Enable button sounds.
            _multiplayerButton.playAudioEvents = true;

            // Place the button.
            _multiplayerButton.transformPosition = new Vector3(-1.45f, 0.97f);

            // Respond to button click.
            _multiplayerButton.eventClick += (component, param) =>
            {
                // Open host game menu if not in multiplayer session, else open connection panel
                if (MultiplayerManager.Instance.CurrentRole == MultiplayerRole.None)
                {
                    PanelManager.TogglePanel <HostGamePanel>();

                    // Display warning if DLCs or other mods are enabled
                    if (DLCHelper.GetOwnedDLCs() != SteamHelper.DLC_BitMask.None ||
                        Singleton <PluginManager> .instance.enabledModCount > 1)
                    {
                        MessagePanel msgPanel = PanelManager.ShowPanel <MessagePanel>();
                        msgPanel.DisplayContentWarning();
                    }
                }
                else
                {
                    PanelManager.TogglePanel <ConnectionPanel>();
                }

                _multiplayerButton.Unfocus();
            };
        }