NickNameManager.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.Events;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Xml;
  9. public class NickNameManager : Regist
  10. {
  11. #region Config
  12. private static int MaxNicknameLength = 12;
  13. public static string NickName;
  14. public static InputField NicknameInputField;
  15. public static Action OnSetNickNameSucceed;
  16. public static double cost;
  17. public static string costFml;
  18. public static Text costTxt;
  19. private static List<string> DefaultLastNames = new List<string>();
  20. private static List<string> DefaultFirstNames = new List<string>();
  21. #endregion
  22. public override void FirstInit()
  23. {
  24. SetNickName (ConfigManager.GetStringFormConfig (PlayerConfigLabel.NickName));
  25. costTxt = ResourceManager.Get<Text> (CanvasLabel.T_CostTxt);
  26. NicknameInputField = ResourceManager.Get<InputField> (CanvasLabel.T_InputField);
  27. string defaultNames = ResourceManager.Load<TextAsset>(ResourceLabel.DefaultNickName, Folder.Config).text;
  28. string[] names = defaultNames.Split('\n');
  29. DefaultFirstNames = names[0].Split('|')[1].Split(',').ToList();
  30. DefaultLastNames = names[1].Split('|')[1].Split(',').ToList();
  31. XmlDocument document = ConfigManager.GetXmlDocument(ResourceLabel.CostConfig);
  32. costFml = document.SelectSingleNode(ConfigLabel.RootNode + "/" + ConfigLabel.ChildNode).Attributes[1].Value;
  33. //Debug.Log(FirstNames.Count);
  34. //Debug.Log(LastNames.Count);
  35. //foreach (var VARIABLE in FirstNames)
  36. //{
  37. // Debug.Log(VARIABLE);
  38. //}
  39. //foreach (var VARIABLE in LastNames)
  40. //{
  41. // Debug.LogWarning(VARIABLE);
  42. //}
  43. }
  44. public static bool ShowNickNameSettingPanelFirstTime()
  45. {
  46. if (!string.IsNullOrEmpty (NickName))
  47. return false;
  48. ShowNickNameSettingPanel();
  49. return true;
  50. }
  51. public static void ShowNickNameSettingPanel()
  52. {
  53. if (string.IsNullOrEmpty(NickName))
  54. {
  55. cost = 0;
  56. costTxt.SetActive(false);
  57. ResourceManager.SetActive(CanvasLabel.T_Close, false);
  58. }
  59. else
  60. {
  61. cost = Auxiliary.FmlParse(costFml, "c", (Manager.CoinPerson*100).ToString("0"));
  62. costTxt.SetActive(true);
  63. costTxt.text = TransferLabel.CoinSprite + " " + Auxiliary.ShrinkAllNumberStr(cost);
  64. ResourceManager.SetActive(CanvasLabel.T_Close, true);
  65. NicknameInputField.text = NickName;
  66. }
  67. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit));
  68. if (!TutorialManager.PlazaRoomTutorial && !TutorialManager.VisitTutorial && !TutorialManager.DressroomTutorial)
  69. {
  70. ResourceManager.Get(CanvasLabel.C_Main).TweenBacCG();
  71. }
  72. ResourceManager.Get (CanvasLabel.T_NickNameBK).TweenForCG ();
  73. }
  74. public static void CloseNickNameSettingPanel()
  75. {
  76. ResourceManager.Get (CanvasLabel.C_Main).TweenForCG ();
  77. ResourceManager.Get (CanvasLabel.T_NickNameBK).TweenBacCG ();
  78. }
  79. public static void SetNickName(string nickName)
  80. {
  81. NickName = nickName;
  82. ConfigManager.SaveStringToConfig(PlayerConfigLabel.NickName, nickName);
  83. ResourceManager.SetText(CanvasLabel.C_NickNameLab, nickName);
  84. }
  85. public static void SetRandomName()
  86. {
  87. NicknameInputField.text = DefaultFirstNames.Random()[0].Trim('\'') + DefaultLastNames.Random()[0].Trim('\'');
  88. }
  89. public static void ResetNickName()
  90. {
  91. if (NicknameInputField.text == NickName && !string.IsNullOrEmpty(NickName))
  92. {
  93. cost = 0;
  94. ResetSucceed();
  95. return;
  96. }
  97. if (cost > Manager.Coin)
  98. {
  99. Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false);
  100. return;
  101. }
  102. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Checking));
  103. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = false;
  104. if (ChectInputFieldValue ())
  105. {
  106. HttpManager.SetNickName
  107. (
  108. NicknameInputField.text,
  109. ResetSucceed,
  110. ResetFailed
  111. );
  112. }
  113. else
  114. {
  115. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit));
  116. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  117. }
  118. }
  119. public static void ResetFailed(string str)
  120. {
  121. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit));
  122. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  123. Bubble.Show(null, str);
  124. }
  125. public static void ResetSucceed()
  126. {
  127. Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false);
  128. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  129. SetNickName(NicknameInputField.text);
  130. AudioManager.PlayClip(AudioLabel.Close);
  131. CloseNickNameSettingPanel();
  132. OnSetNickNameSucceed.SafeInvoke();
  133. }
  134. public static bool ChectInputFieldValue()
  135. {
  136. NicknameInputField.text = NicknameInputField.text.Trim();
  137. int charCnt = 0;
  138. int maxLengthIndex = 0;
  139. for (int i = 0; i < NicknameInputField.text.Length; i++)
  140. {
  141. if (NicknameInputField.text[i] <= 127)//英文字符
  142. {
  143. charCnt++;
  144. }
  145. else if (NicknameInputField.text[i] > 127)//中文字符
  146. {
  147. charCnt += 2;
  148. }
  149. if (charCnt > MaxNicknameLength)
  150. {
  151. maxLengthIndex = i;
  152. }
  153. }
  154. if (charCnt == 0)
  155. {
  156. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_AllWhiteSpace));
  157. return false;
  158. }
  159. else if (charCnt > MaxNicknameLength)
  160. {
  161. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_TooLong));
  162. NicknameInputField.text = NicknameInputField.text.Substring(0, maxLengthIndex);
  163. return false;
  164. }
  165. else
  166. {
  167. if (StringFilter.ContainSensitiveWord(NicknameInputField.text))
  168. {
  169. Bubble.Show(null, Language.GetStr(LanguageLabel.Common__ContainSensitiveWord));
  170. return false;
  171. }
  172. else
  173. {
  174. return true;
  175. }
  176. }
  177. }
  178. }