PhoneBindingView.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System.Collections;
  2. using System.Text.RegularExpressions;
  3. using ET;
  4. using UnityEngine;
  5. using UI.RoleInfo;
  6. using FairyGUI;
  7. namespace GFGGame
  8. {
  9. public class PhoneBindingView : BaseWindow
  10. {
  11. private UI_PhoneBindingUI _ui;
  12. private float countTimeSpeed = 0.000035f;
  13. private bool isCountTime = false;
  14. private EffectUI _effectUI1;
  15. private EffectUI _effectUI2;
  16. public override void Dispose()
  17. {
  18. EffectUIPool.Recycle(_effectUI1);
  19. _effectUI1 = null;
  20. EffectUIPool.Recycle(_effectUI2);
  21. _effectUI2 = null;
  22. if (_ui != null)
  23. {
  24. _ui.Dispose();
  25. _ui = null;
  26. }
  27. base.Dispose();
  28. }
  29. protected override void OnInit()
  30. {
  31. base.OnInit();
  32. packageName = UI_PhoneBindingUI.PACKAGE_NAME;
  33. _ui = UI_PhoneBindingUI.Create();
  34. this.viewCom = _ui.target;
  35. this.viewCom.Center();
  36. this.modal = true;
  37. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  38. _ui.m_btnSure.target.onClick.Add(OnBtnSureClick);
  39. _ui.m_btnClose.onClick.Add(Hide);
  40. _ui.m_btnSendCode.onClick.Add(() =>
  41. {
  42. if (!Regex.IsMatch(_ui.m_inputPhoneNumber.text.Trim(), // 匹配所有中国大陆手机号(11 位,包括物联网和卫星电话)
  43. @"^(?:\+86)?1(?:3\d{3}|4[5-9]\d{2}|5[0-35-9]\d{2}|6[2567]\d{2}|7[0-8]\d{2}|8\d{3}|9[0-35-9]\d{2})\d{6}$"))
  44. {
  45. PromptController.Instance.ShowFloatTextPrompt("输入的手机号格式有误");
  46. return;
  47. }
  48. _ui.m_btnSendCode.enabled = false;
  49. //在此发送验证码
  50. SecurityHelper.GetMobileVerification(_ui.m_inputPhoneNumber.text, SendCodeType.BindPhone)
  51. .Coroutine();
  52. float endTime = Time.time + 60;
  53. Timers.inst.Add(1, 0, timerCallback, endTime);
  54. timerCallback(endTime);
  55. });
  56. AddEffect();
  57. }
  58. private void timerCallback(object param)
  59. {
  60. float endTime = (float)param;
  61. float remainTime = endTime - Time.time;
  62. if (remainTime <= 0)
  63. {
  64. _ui.m_btnSendCode.text = "发送验证码";
  65. _ui.m_btnSendCode.enabled = true;
  66. Timers.inst.Remove(timerCallback);
  67. }
  68. else
  69. {
  70. _ui.m_btnSendCode.text = (int)remainTime + "s后重发";
  71. }
  72. }
  73. protected override void OnShown()
  74. {
  75. base.OnShown();
  76. _ui.m_inputPhoneNumber.text = "";
  77. _ui.m_txtCode.text = "";
  78. isCountTime = false;
  79. }
  80. protected override void OnHide()
  81. {
  82. base.OnHide();
  83. Timers.inst.Remove(timerCallback);
  84. }
  85. private async void OnBtnSureClick()
  86. {
  87. if (!string.IsNullOrEmpty(ActivityDataManager.Instance.PhoneNumber))
  88. {
  89. PromptController.Instance.ShowFloatTextPrompt(string.Format("号码{0}已绑定!",
  90. ActivityDataManager.Instance.PhoneNumber));
  91. Hide();
  92. }
  93. S2C_BindMobilePhoneNumber res =
  94. await SecurityHelper.BindMobilePhoneNumber(_ui.m_inputPhoneNumber.text, _ui.m_txtCode.text);
  95. if (res is { Error: ErrorCode.ERR_Success })
  96. {
  97. PromptController.Instance.ShowFloatTextPrompt("绑定成功!");
  98. ActivityDataManager.Instance.PhoneNumber = res.PhoneNumber;
  99. Hide();
  100. EventAgent.DispatchEvent(ConstMessage.PhoneChange);
  101. }
  102. else
  103. {
  104. ErrorCodeController.Handler(res.Error);
  105. }
  106. }
  107. private void AddEffect()
  108. {
  109. //邊框左上角特效
  110. _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up");
  111. //邊框右下角特效
  112. _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down");
  113. }
  114. }
  115. }