ChangeNameView.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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 = CommonDataManager.Tables.TblItemCfg.GetOrDefault( CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  42. //_ui.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res);
  43. _ui.m_loaIcon.url = ResPathUtil.GetIconPath(cfg.Res, "png");
  44. _ui.m_loaIcon.onClick.Add(OnBtnIconClick);
  45. }
  46. protected override void OnShown()
  47. {
  48. base.OnShown();
  49. this._ui.m_inputName.text = "";
  50. UpdateView();
  51. }
  52. protected override void OnHide()
  53. {
  54. base.OnHide();
  55. }
  56. private void AddEffect()
  57. {
  58. //邊框左上角特效
  59. _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up");
  60. //邊框右下角特效
  61. _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down");
  62. }
  63. protected override void AddEventListener()
  64. {
  65. base.AddEventListener();
  66. EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItem);
  67. }
  68. protected override void RemoveEventListener()
  69. {
  70. base.RemoveEventListener();
  71. EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItem);
  72. }
  73. private void OnClickBtnSureAsync()
  74. {
  75. string roleName = _ui.m_inputName.text;
  76. if (string.IsNullOrEmpty(roleName))
  77. {
  78. PromptController.Instance.ShowFloatTextPrompt("角色名不能为空");
  79. return;
  80. }
  81. if (roleName.Length > GlobalConst.MaxNameLen)
  82. {
  83. PromptController.Instance.ShowFloatTextPrompt("角色名最多七个字");
  84. return;
  85. }
  86. if (!Regex.IsMatch(roleName, @"^[\u4e00-\u9fa5_0-9]+$"))//角色起名仅允许汉字、数字、底划线
  87. {
  88. PromptController.Instance.ShowFloatTextPrompt("角色名仅允许汉字、数字、下划线");
  89. return;
  90. }
  91. string costName = ItemUtil.GetItemName(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  92. int count = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[1];
  93. long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  94. if (haveNum >= count)
  95. {
  96. AlertUI.Show(string.Format("是否花费{0}个{1}改名1次?", count, costName))
  97. .SetLeftButton(true).SetRightButton(true, "确定", (object data) =>
  98. {
  99. ChangeName(roleName);
  100. });
  101. }
  102. else
  103. {
  104. PromptController.Instance.ShowFloatTextPrompt("改名卡数量不足");
  105. }
  106. }
  107. private async void ChangeName(string roleName)
  108. {
  109. bool result = await RoleInfoSProxy.ReqModifyRoleName(roleName);
  110. if (result)
  111. {
  112. this.Hide();
  113. }
  114. }
  115. private async void RandomRoleName()
  116. {
  117. (int result, string name) = await LoginHelper.ReqRandomRoleName();
  118. if (result == ErrorCode.ERR_Success)
  119. {
  120. _ui.m_inputName.text = name;
  121. }
  122. else
  123. {
  124. ErrorCodeController.Handler(result);
  125. }
  126. }
  127. private void OnBtnIconClick(EventContext context)
  128. {
  129. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  130. object[] sourceDatas = new object[]
  131. { itemCfg.Id, new object[] { typeof(ChangeNameView).FullName, this.viewData } };
  132. GoodsItemTipsController.ShowItemTips(itemCfg.Id, sourceDatas);
  133. }
  134. private void UpdateItem(EventContext context)
  135. {
  136. int itemID = (int)context.data;
  137. if(itemID != CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0])
  138. {
  139. return;
  140. }
  141. UpdateView();
  142. }
  143. private void UpdateView()
  144. {
  145. long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]);
  146. long needNum = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[1];
  147. if (haveNum < needNum)
  148. {
  149. _ui.m_txtNeed.text = string.Format("改名卡:[color=#E26A21]{0}[color]/{1}", haveNum, needNum);
  150. }
  151. else
  152. {
  153. _ui.m_txtNeed.text = string.Format("改名卡:{0}/{1}", haveNum, needNum);
  154. }
  155. }
  156. }
  157. }