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]); } } }
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; } } } }