예제 #1
0
        private static void Postfix(TextBoxTMP __instance)
        {
            bool flag = TheOtherRolesPlugin.StreamerMode.Value && (__instance.name == "GameIdText" || __instance.name == "IpTextBox" || __instance.name == "PortTextBox");

            if (flag)
            {
                __instance.outputText.text = new string('*', __instance.text.Length);
            }
        }
예제 #2
0
 public static void Update(TextBoxTMP __instance)
 {
     if (ArrowEnter.ArrowEnterBase == null && __instance.transform.parent?.name == "JoinGameButton")
     {
         ArrowEnter.Build(__instance.transform.parent);
     }
     if (MyTextBox.TextBoxBase == null && __instance.transform.name == "GameIdText")
     {
         MyTextBox.CopyTextBox(__instance.transform);
     }
 }
예제 #3
0
        public static void Prefix(TextBoxTMP __instance, [HarmonyArgument(0)] ref string input)
        {
            if (HudManager.Instance?.Chat?.TextArea == null)
            {
                return;
            }
            if (__instance != HudManager.Instance.Chat.TextArea)
            {
                return;
            }

            AbilityBlackmail[] blackmailAbilities = Ability.GetAllAbilities <AbilityBlackmail>();
            if (blackmailAbilities.All(blackmailAbility => blackmailAbility.BlackmailedPlayer != LocalPlayer))
            {
                return;
            }

            var lastChar = ' ';

            foreach (char c in input)
            {
                lastChar = c;
            }

            switch (lastChar)
            {
            case '\r':
            case '\n':
                input = BlackmailedString + '\r';
                break;

            case '\b':
                break;

            default: input = BlackmailedString.Substring(0, Mathf.Min(input.Length, BlackmailedString.Length));
                break;
            }
        }
예제 #4
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]);
                }
            }
        }
예제 #5
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;
                    }
                }
            }
        }