using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using UnityEngine.Networking; using System.Text.RegularExpressions; using DG.Tweening; using Newtonsoft.Json; /* 注册界面 */ public class RegisterView : MonoBehaviour { [SerializeField] GameObject registerInUser; [SerializeField] GameObject registerInPWD1; [SerializeField] GameObject registerInPWD2; [SerializeField] GameObject registerInCaptcha; [SerializeField] GameObject registerInNickname; [SerializeField] GameObject registerInGender; [SerializeField] GameObject registerInBirthday; [SerializeField] GameObject registerInLocation; [SerializeField] GameObject btnNext; [SerializeField] GameObject btnSave; //状态记录 public int captcha_Register = -222222222; void OnEnable() { InitPage(); //弹出协议,不同意则退出注册 AgreementPopup agreementPopup = transform.parent.Find("AgreementPopup").GetComponent(); agreementPopup.onDisagree = () => { agreementPopup.onDisagree = null; GameObject.FindObjectOfType().showLoginView(); }; agreementPopup.gameObject.SetActive(true); } void Start() { InitInputLimit(); } void InitInputLimit() { GameObject[] inputNodes = {registerInUser, registerInPWD1, registerInPWD2}; foreach (var inputNode in inputNodes) { InputField inputField = GetInputField(inputNode); inputField.onValueChanged.AddListener(delegate(string text) { Match match = new Regex("[^A-Za-z0-9]").Match(text); if (match.Success) { inputField.text = text.Replace(match.Value, ""); } }); } } void InitPage(bool isNext = false) { registerInUser.SetActive(!isNext); registerInPWD1.SetActive(!isNext); registerInPWD2.SetActive(!isNext); registerInCaptcha.SetActive(!isNext); btnNext.SetActive(!isNext); registerInNickname.SetActive(isNext); registerInGender.SetActive(isNext); registerInBirthday.SetActive(isNext); registerInLocation.SetActive(isNext); btnSave.SetActive(isNext); if (!isNext) { ChnageCaptcha(); } } InputField GetInputField(GameObject inputNode) { return inputNode.transform.Find("InputField").GetComponent(); } public void ChnageCaptcha() { StartCoroutine(CaptchaController.ins.GetCaptcha( registerInCaptcha.transform.Find("CodeImage").GetComponent(), (code) => { captcha_Register = code; } )); } private string usrRecord = ""; private string pwdRecord = ""; JC.CS.Throttler throttlerRegisterNext = new JC.CS.Throttler(2000); public void RegisterNext() { InputField user = GetInputField(registerInUser); if (user.text.Length < 6) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("用户名长度至少6位")); return; } InputField pwd1 = GetInputField(registerInPWD1); if (pwd1.text.Length < 6) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("密码长度至少6位")); return; } InputField pwd2 = GetInputField(registerInPWD2); if (pwd1.text != pwd2.text) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("两次输入的密码不一致")); return; } InputField captcha = GetInputField(registerInCaptcha); if (!captcha.text.Equals(captcha_Register.ToString())) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("验证码错误")); return; } if (!AgreenmentOption.ins.IsAgreementChecked()) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请阅读并同意App协议")); return; } if (throttlerRegisterNext.CanPass() == false) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("操作过于频繁")); return; } usrRecord = user.text; pwdRecord = pwd1.text; StartCoroutine(LoginController.ins.Register( usrRecord, pwdRecord, (res) => { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey(res.msg)); if (res.code == 0) { InitPage(true); //前往完善用户信息 LoginView.ins.FillLoginInput(usrRecord, pwdRecord); } } )); } JC.CS.Throttler throttlerRegisterSave = new JC.CS.Throttler(2000); public void RegisterSave() { InputField nickname = GetInputField(registerInNickname); if (nickname.text.Trim().Length == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请输入游戏昵称")); return; } int gender = 0; Transform toggleGroup = registerInGender.transform.Find("ToggleGroup"); for (int i = 0; i < toggleGroup.childCount; i++) { if (toggleGroup.GetChild(i).GetComponent().isOn) { gender = i == 0 ? 1 : 2; break; } } InputField birthday = GetInputField(registerInBirthday); if (birthday.text.Length != 10) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("未填写出生日期")); return; } InputField location = GetInputField(registerInLocation); if (location.text.Length == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("未填写所在地区")); return; } if (!AgreenmentOption.ins.IsAgreementChecked()) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请阅读并同意App协议")); return; } if (throttlerRegisterSave.CanPass() == false) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("操作过于频繁")); return; } StartCoroutine(LoginController.ins.CompleteUserInfo( usrRecord, pwdRecord, nickname.text, gender, birthday.text, countryCode, stateCode, cityCode ,(res) => { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey(res.msg)); if (res.code == 0) { GameObject.FindObjectOfType().showLoginView(); } } )); } #region Picker [SerializeField] GameObject datePickerPrefab; public void OpenDatePicker() { GameObject o = GameObject.Instantiate(datePickerPrefab); o.GetComponentInChildren().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => { GetInputField(registerInBirthday).text = picker.GetSelectDateStr(); }; } [SerializeField] GameObject locationPickerPrefab; private string countryCode = "", stateCode = "", cityCode = ""; public void OpenLocationPicker() { GameObject o = GameObject.Instantiate(locationPickerPrefab); o.GetComponentInChildren().onEnter += (JC.Unity.Picker.LocationInfo info) => { countryCode = info.GetCountryRegion().Item2; stateCode = info.GetState().Item2; cityCode = info.GetCity().Item2; GetInputField(registerInLocation).text = info.GetCountryRegion().Item1 + " " + info.GetState().Item1 + " " + info.GetCity().Item1; }; } #endregion }