Пример #1
0
        public static void Postfix(RegionMenu __instance)
        {
            var template = DestroyableSingleton <JoinGameButton> .Instance;

            if (ipField == null || ipField.gameObject == null)
            {
                ipField = UnityEngine.Object.Instantiate(template.GameIdText, __instance.transform);
                ipField.gameObject.name = "IpTextBox";
                UnityEngine.Object.DestroyImmediate(ipField.transform.FindChild("arrowEnter").gameObject);

                ipField.transform.localPosition = new Vector3(0, -1f, -100f);
                ipField.characterLimit          = 30;
                ipField.AllowSymbols            = true;
                ipField.ForceUppercase          = false;
                ipField.SetText(StreamHatsPlugin.Ip.Value);
                __instance.StartCoroutine(Effects.Lerp(0.1f, new Action <float>((p) => {
                    ipField.outputText.SetText(StreamHatsPlugin.Ip.Value);
                    ipField.SetText(StreamHatsPlugin.Ip.Value);
                })));

                ipField.ClearOnFocus = false;
                ipField.OnEnter      = ipField.OnChange = new Button.ButtonClickedEvent();
                ipField.OnFocusLost  = new Button.ButtonClickedEvent();
                ipField.OnChange.AddListener((UnityAction)onEnterOrIpChange);
                ipField.OnFocusLost.AddListener((UnityAction)onFocusLost);

                void onEnterOrIpChange()
                {
                    StreamHatsPlugin.Ip.Value = ipField.text;
                }

                void onFocusLost()
                {
                    StreamHatsPlugin.UpdateRegions();
                    __instance.ChooseOption(ServerManager.DefaultRegions[ServerManager.DefaultRegions.Length - 1]);
                }
            }
            if (portField == null || portField.gameObject == null)
            {
                portField = UnityEngine.Object.Instantiate(template.GameIdText, __instance.transform);
                portField.gameObject.name = "PortTextBox";
                UnityEngine.Object.DestroyImmediate(portField.transform.FindChild("arrowEnter").gameObject);

                portField.transform.localPosition = new Vector3(0, -1.75f, -100f);
                portField.characterLimit          = 5;
                portField.SetText(StreamHatsPlugin.Port.Value.ToString());
                __instance.StartCoroutine(Effects.Lerp(0.1f, new Action <float>((p) => {
                    portField.outputText.SetText(StreamHatsPlugin.Port.Value.ToString());
                    portField.SetText(StreamHatsPlugin.Port.Value.ToString());
                })));


                portField.ClearOnFocus = false;
                portField.OnEnter      = portField.OnChange = new Button.ButtonClickedEvent();
                portField.OnFocusLost  = new Button.ButtonClickedEvent();
                portField.OnChange.AddListener((UnityAction)onEnterOrPortFieldChange);
                portField.OnFocusLost.AddListener((UnityAction)onFocusLost);

                void onEnterOrPortFieldChange()
                {
                    ushort port = 0;

                    if (ushort.TryParse(portField.text, out port))
                    {
                        StreamHatsPlugin.Port.Value = port;
                        portField.outputText.color  = Color.white;
                    }
                    else
                    {
                        portField.outputText.color = Color.red;
                    }
                }

                void onFocusLost()
                {
                    StreamHatsPlugin.UpdateRegions();
                    __instance.ChooseOption(ServerManager.DefaultRegions[ServerManager.DefaultRegions.Length - 1]);
                }
            }
        }
Пример #2
0
        public static void Postfix(RegionMenu __instance)
        {
            var template = DestroyableSingleton <JoinGameButton> .Instance;

            if (ipField == null || ipField.gameObject == null)
            {
                ipField = UnityEngine.Object.Instantiate(template.GameIdText, __instance.transform);
                ipField.gameObject.name = "IpTextBox";
                UnityEngine.Object.DestroyImmediate(ipField.transform.FindChild("arrowEnter").gameObject);

                ipField.transform.localPosition = new Vector3(0, -1f, -100f);
                ipField.characterLimit          = 30;
                ipField.AllowSymbols            = true;
                ipField.SetText(TheOtherRolesPlugin.Ip.Value);
                __instance.StartCoroutine(Effects.Lerp(0.1f, new Action <float>((p) => {
                    ipField.outputText.SetText(TheOtherRolesPlugin.Ip.Value);
                    ipField.SetText(TheOtherRolesPlugin.Ip.Value);
                })));

                ipField.ClearOnFocus = false;
                ipField.OnFocusLost  = ipField.OnEnter = ipField.OnChange = new Button.ButtonClickedEvent();
                ipField.OnChange.AddListener((UnityAction)ipEvent);

                void ipEvent()
                {
                    TheOtherRolesPlugin.Ip.Value = ipField.text;
                    TheOtherRolesPlugin.CustomRegion.DefaultIp = ipField.text;
                }
            }
            if (portField == null || portField.gameObject == null)
            {
                portField = UnityEngine.Object.Instantiate(template.GameIdText, __instance.transform);
                portField.gameObject.name = "PortTextBox";
                UnityEngine.Object.DestroyImmediate(portField.transform.FindChild("arrowEnter").gameObject);

                portField.transform.localPosition = new Vector3(0, -1.75f, -100f);
                portField.characterLimit          = 5;
                portField.SetText(TheOtherRolesPlugin.Port.Value.ToString());
                __instance.StartCoroutine(Effects.Lerp(0.1f, new Action <float>((p) => {
                    portField.outputText.SetText(TheOtherRolesPlugin.Port.Value.ToString());
                    portField.SetText(TheOtherRolesPlugin.Port.Value.ToString());
                })));


                portField.ClearOnFocus = false;
                portField.OnFocusLost  = portField.OnEnter = portField.OnChange = new Button.ButtonClickedEvent();
                portField.OnChange.AddListener((UnityAction)portEvent);

                void portEvent()
                {
                    ushort port = 0;

                    if (ushort.TryParse(portField.text, out port))
                    {
                        TheOtherRolesPlugin.Port.Value        = port;
                        TheOtherRolesPlugin.CustomRegion.Port = port;
                        portField.outputText.color            = Color.white;
                    }
                    else
                    {
                        portField.outputText.color = Color.red;
                    }
                }
            }
        }