NickNameManager.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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. ResetSucceed();
  94. return;
  95. }
  96. if (cost > Manager.Coin)
  97. {
  98. Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false);
  99. return;
  100. }
  101. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Checking));
  102. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = false;
  103. if (ChectInputFieldValue ())
  104. {
  105. HttpManager.SetNickName
  106. (
  107. NicknameInputField.text,
  108. ResetSucceed,
  109. ResetFailed
  110. );
  111. }
  112. else
  113. {
  114. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit));
  115. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  116. }
  117. }
  118. public static void ResetFailed(string str)
  119. {
  120. ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit));
  121. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  122. Bubble.Show(null, str);
  123. }
  124. public static void ResetSucceed()
  125. {
  126. Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false);
  127. ResourceManager.Get<CanvasGroup>(CanvasLabel.T_NickNameBK).interactable = true;
  128. SetNickName(NicknameInputField.text);
  129. AudioManager.PlayClip(AudioLabel.Close);
  130. CloseNickNameSettingPanel();
  131. OnSetNickNameSucceed.SafeInvoke();
  132. }
  133. public static bool ChectInputFieldValue()
  134. {
  135. NicknameInputField.text = NicknameInputField.text.Trim();
  136. int charCnt = 0;
  137. int maxLengthIndex = 0;
  138. for (int i = 0; i < NicknameInputField.text.Length; i++)
  139. {
  140. if (NicknameInputField.text[i] <= 127)//英文字符
  141. {
  142. charCnt++;
  143. }
  144. else if (NicknameInputField.text[i] > 127)//中文字符
  145. {
  146. charCnt += 2;
  147. }
  148. if (charCnt > MaxNicknameLength)
  149. {
  150. maxLengthIndex = i;
  151. }
  152. }
  153. if (charCnt == 0)
  154. {
  155. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_AllWhiteSpace));
  156. return false;
  157. }
  158. else if (charCnt > MaxNicknameLength)
  159. {
  160. Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_TooLong));
  161. NicknameInputField.text = NicknameInputField.text.Substring(0, maxLengthIndex);
  162. return false;
  163. }
  164. else
  165. {
  166. if (StringFilter.ContainSensitiveWord(NicknameInputField.text))
  167. {
  168. Bubble.Show(null, Language.GetStr(LanguageLabel.Common__ContainSensitiveWord));
  169. return false;
  170. }
  171. else
  172. {
  173. return true;
  174. }
  175. }
  176. }
  177. }