ChangeNameView.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using UI.RoleInfo;
  2. using System.Text.RegularExpressions;
  3. using ET;
  4. using UnityEngine;
  5. using FairyGUI;
  6. using System;
  7. using cfg.GfgCfg;
  8. namespace GFGGame
  9. {
  10. public class ChangeNameView : BaseWindow
  11. {
  12. private UI_ChangeNameUI _ui;
  13. private EffectUI _effectUI1;
  14. private EffectUI _effectUI2;
  15. public override void Dispose()
  16. {
  17. EffectUIPool.Recycle(_effectUI1);
  18. _effectUI1 = null;
  19. EffectUIPool.Recycle(_effectUI2);
  20. _effectUI2 = null;
  21. if (_ui != null)
  22. {
  23. _ui.Dispose();
  24. _ui = null;
  25. }
  26. base.Dispose();
  27. }
  28. protected override void OnInit()
  29. {
  30. base.OnInit();
  31. packageName = UI_ChangeNameUI.PACKAGE_NAME;
  32. _ui = UI_ChangeNameUI.Create();
  33. this.viewCom = _ui.target;
  34. this.viewCom.Center();
  35. this.modal = true;
  36. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  37. _ui.m_btnSure.onClick.Add(OnClickBtnSureAsync);
  38. _ui.m_btnRandom.onClick.Add(RandomRoleName);
  39. _ui.m_btnClose.onClick.Add(Hide);
  40. AddEffect();
  41. ItemCfg cfg =
  42. CommonDataManager.Tables.TblItemCfg.GetOrDefault(
  43. CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  44. //_ui.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res);
  45. _ui.m_loaIcon.url = ResPathUtil.GetIconPath(cfg.Res, "png");
  46. _ui.m_loaIcon.onClick.Add(OnBtnIconClick);
  47. }
  48. protected override void OnShown()
  49. {
  50. base.OnShown();
  51. this._ui.m_inputName.text = "";
  52. UpdateView();
  53. }
  54. protected override void OnHide()
  55. {
  56. base.OnHide();
  57. }
  58. private void AddEffect()
  59. {
  60. //邊框左上角特效
  61. EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up",
  62. onComplete: (effect) =>
  63. {
  64. if (effect != null)
  65. {
  66. _effectUI1 = effect;
  67. }
  68. });
  69. //邊框右下角特效
  70. EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down",
  71. onComplete: (effect) =>
  72. {
  73. if (effect != null)
  74. {
  75. _effectUI2 = effect;
  76. }
  77. });
  78. }
  79. protected override void AddEventListener()
  80. {
  81. base.AddEventListener();
  82. EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItem);
  83. }
  84. protected override void RemoveEventListener()
  85. {
  86. base.RemoveEventListener();
  87. EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItem);
  88. }
  89. private void OnClickBtnSureAsync()
  90. {
  91. string roleName = _ui.m_inputName.text;
  92. if (string.IsNullOrEmpty(roleName))
  93. {
  94. PromptController.Instance.ShowFloatTextPrompt("角色名不能为空");
  95. return;
  96. }
  97. if (roleName.Length > GlobalConst.MaxNameLen)
  98. {
  99. PromptController.Instance.ShowFloatTextPrompt("角色名最多七个字");
  100. return;
  101. }
  102. if (!Regex.IsMatch(roleName, @"^[\u4e00-\u9fa5_0-9]+$")) //角色起名仅允许汉字、数字、底划线
  103. {
  104. PromptController.Instance.ShowFloatTextPrompt("角色名仅允许汉字、数字、下划线");
  105. return;
  106. }
  107. string costName = ItemUtil.GetItemName(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  108. int count = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[1];
  109. long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  110. if (haveNum >= count)
  111. {
  112. AlertUI.Show(string.Format("是否花费{0}个{1}改名1次?", count, costName))
  113. .SetLeftButton(true).SetRightButton(true, "确定", (object data) => { ChangeName(roleName); });
  114. }
  115. else
  116. {
  117. PromptController.Instance.ShowFloatTextPrompt("改名卡数量不足");
  118. }
  119. }
  120. private async void ChangeName(string roleName)
  121. {
  122. bool result = await RoleInfoSProxy.ReqModifyRoleName(roleName);
  123. if (result)
  124. {
  125. this.Hide();
  126. }
  127. }
  128. private async void RandomRoleName()
  129. {
  130. (int result, string name) = await LoginHelper.ReqRandomRoleName();
  131. if (result == ErrorCode.ERR_Success)
  132. {
  133. _ui.m_inputName.text = name;
  134. }
  135. else
  136. {
  137. ErrorCodeController.Handler(result);
  138. }
  139. }
  140. private void OnBtnIconClick(EventContext context)
  141. {
  142. ItemCfg itemCfg =
  143. CommonDataManager.Tables.TblItemCfg.GetOrDefault(
  144. CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  145. object[] sourceDatas = new object[]
  146. { itemCfg.Id, new object[] { typeof(ChangeNameView).FullName, this.viewData } };
  147. GoodsItemTipsController.ShowItemTips(itemCfg.Id, sourceDatas);
  148. }
  149. private void UpdateItem(EventContext context)
  150. {
  151. int itemID = (int)context.data;
  152. if (itemID != CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0])
  153. {
  154. return;
  155. }
  156. UpdateView();
  157. }
  158. private void UpdateView()
  159. {
  160. long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  161. long needNum = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[1];
  162. if (haveNum < needNum)
  163. {
  164. _ui.m_txtNeed.text = string.Format("改名卡:[color=#E26A21]{0}[color]/{1}", haveNum, needNum);
  165. }
  166. else
  167. {
  168. _ui.m_txtNeed.text = string.Format("改名卡:{0}/{1}", haveNum, needNum);
  169. }
  170. }
  171. }
  172. }