| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.SceneManagement;
- using System.Text.RegularExpressions;
- public class LoginView : MonoBehaviour
- {
- //登录方式-左侧切换按钮-按钮纹理
- [SerializeField] Sprite[] loginModeSprites;
- //登录方式-左侧切换按钮
- [SerializeField] GameObject loginNormalTab;
- [SerializeField] GameObject loginPhoneTab;
- //用户登录
- [SerializeField] GameObject loginInUser;
- [SerializeField] GameObject loginInPWD;
- [SerializeField] GameObject loginInCaptcha1;
- //手机登录
- [SerializeField] GameObject loginInPhone;
- [SerializeField] GameObject loginInCode;
- [SerializeField] GameObject loginValidTime;
- [SerializeField] GameObject loginInCaptcha2;
- //协议栏
- [SerializeField] Transform agreementTF;
- int loginMode = 1;
- //状态记录
- public int captcha_Login = -222222222;
- public int captcha_LoginPhone = -222222222;
- public static LoginView ins;
- void Awake() {
- ins = this;
- }
- void Start()
- {
- InitInputLimit();
- InitAgreementOnClickListeners();
- SelectLoginMode(1);
- }
- void OnDestroy() {
- if (ins == this) ins = null;
- }
- void Update() {
- #if UNITY_EDITOR
- if (Input.GetKeyDown(KeyCode.Q)) {
- GetInputField(loginInUser).text = "lvjincheng";
- GetInputField(loginInPWD).text = "19980301";
- GetInputField(loginInCaptcha1).text = captcha_Login.ToString();
- LoginNormal();
- }
- if (Input.GetKeyDown(KeyCode.W)) {
- GetInputField(loginInUser).text = "tester";
- GetInputField(loginInPWD).text = "123456";
- GetInputField(loginInCaptcha1).text = captcha_Login.ToString();
- LoginNormal();
- }
- #endif
- }
- void InitInputLimit() {
- GameObject[] inputNodes = {loginInUser, loginInPWD};
- 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 InitAgreementOnClickListeners() {
- agreementTF.Find("TextA").GetComponent<Button>().onClick.AddListener(delegate() {
- GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/AgreementView"));
- o.GetComponent<AgreementView>().EnterUserAgreement();
- });
- agreementTF.Find("TextB").GetComponent<Button>().onClick.AddListener(delegate() {
- GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/AgreementView"));
- o.GetComponent<AgreementView>().EnterPrivacyAgreement();
- });
- }
- public void SelectLoginMode(int mode) {
- loginMode = mode;
- if (loginMode == 1) {
- loginNormalTab.GetComponent<Image>().sprite = loginModeSprites[1];
- loginPhoneTab.GetComponent<Image>().sprite = loginModeSprites[0];
- loginInUser.SetActive(true);
- loginInPWD.SetActive(true);
- loginInCaptcha1.SetActive(true);
- loginInPhone.SetActive(false);
- loginInCode.SetActive(false);
- loginValidTime.SetActive(false);
- loginInCaptcha2.SetActive(false);
- if (captcha_Login < 0) {
- ChnageCaptcha1();
- }
- }
- else if (loginMode == 2) {
- loginNormalTab.GetComponent<Image>().sprite = loginModeSprites[0];
- loginPhoneTab.GetComponent<Image>().sprite = loginModeSprites[1];
- loginInUser.SetActive(false);
- loginInPWD.SetActive(false);
- loginInCaptcha1.SetActive(false);
- loginInPhone.SetActive(true);
- loginInCode.SetActive(true);
- loginValidTime.SetActive(true);
- loginInCaptcha2.SetActive(true);
- if (captcha_LoginPhone < 0) {
- ChnageCaptcha2();
- }
- }
- }
- InputField GetInputField(GameObject inputNode) {
- return inputNode.transform.Find("InputField").GetComponent<InputField>();
- }
- public void ChnageCaptcha1() {
- StartCoroutine(CaptchaController.ins.GetCaptcha(
- loginInCaptcha1.transform.Find("CodeImage").GetComponent<Image>(),
- (code) => { captcha_Login = code; }
- ));
- }
- public void ChnageCaptcha2() {
- StartCoroutine(CaptchaController.ins.GetCaptcha(
- loginInCaptcha2.transform.Find("CodeImage").GetComponent<Image>(),
- (code) => { captcha_LoginPhone = code; }
- ));
- }
- public void Login() {
- if (loginMode == 1) {
- LoginNormal();
- } else if (loginMode == 2) {
- LoginByPhone();
- }
- }
- JC.CS.Throttler throttlerLoginNormal = new JC.CS.Throttler(2000);
- void LoginNormal() {
- InputField user = GetInputField(loginInUser);
- if (user.text.Trim().Length == 0) {
- PopupMgr.ins.ShowTip("请输入用户名");
- return;
- }
- InputField pwd = GetInputField(loginInPWD);
- if (pwd.text.Trim().Length == 0) {
- PopupMgr.ins.ShowTip("请输入密码");
- return;
- }
- InputField captcha = GetInputField(loginInCaptcha1);
- if (!captcha.text.Equals(captcha_Login.ToString())) {
- PopupMgr.ins.ShowTip("验证码错误");
- return;
- }
- if (!agreementTF.Find("Toggle").GetComponent<Toggle>().isOn) {
- PopupMgr.ins.ShowTip("登录需要勾选同意App协议");
- return;
- }
- if (throttlerLoginNormal.CanPass() == false) {
- PopupMgr.ins.ShowTip("操作过于频繁");
- return;
- }
- StartCoroutine(LoginController.ins.LoginNormal(
- user.text, pwd.text, (res) => {
- PopupMgr.ins.ShowTip(res.msg);
- if (res.code == 0) {
- string IdAndToken = (string)res.data;
- PlayerPrefs.SetString("IdAndToken", IdAndToken);
- SceneManager.LoadScene("Home", LoadSceneMode.Single);
- }
- }
- ));
- }
- void LoginByPhone() {
- }
- public void SetAgreementChecked(bool value) {
- agreementTF.Find("Toggle").GetComponent<Toggle>().isOn = value;
- }
- public void FillLoginInput(string username, string password) {
- GetInputField(loginInUser).text = username;
- GetInputField(loginInPWD).text = password;
- }
- }
|