using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Xml; public class NickNameManager : Regist { #region Config private static int MaxNicknameLength = 12; public static string NickName; public static InputField NicknameInputField; public static Action OnSetNickNameSucceed; public static double cost; public static string costFml; public static Text costTxt; private static List DefaultLastNames = new List(); private static List DefaultFirstNames = new List(); #endregion public override void FirstInit() { SetNickName (ConfigManager.GetStringFormConfig (PlayerConfigLabel.NickName)); costTxt = ResourceManager.Get (CanvasLabel.T_CostTxt); NicknameInputField = ResourceManager.Get (CanvasLabel.T_InputField); string defaultNames = ResourceManager.Load(ResourceLabel.DefaultNickName, Folder.Config).text; string[] names = defaultNames.Split('\n'); DefaultFirstNames = names[0].Split('|')[1].Split(',').ToList(); DefaultLastNames = names[1].Split('|')[1].Split(',').ToList(); XmlDocument document = ConfigManager.GetXmlDocument(ResourceLabel.CostConfig); costFml = document.SelectSingleNode(ConfigLabel.RootNode + "/" + ConfigLabel.ChildNode).Attributes[1].Value; //Debug.Log(FirstNames.Count); //Debug.Log(LastNames.Count); //foreach (var VARIABLE in FirstNames) //{ // Debug.Log(VARIABLE); //} //foreach (var VARIABLE in LastNames) //{ // Debug.LogWarning(VARIABLE); //} } public static bool ShowNickNameSettingPanelFirstTime() { if (!string.IsNullOrEmpty (NickName)) return false; ShowNickNameSettingPanel(); return true; } public static void ShowNickNameSettingPanel() { if (string.IsNullOrEmpty(NickName)) { cost = 0; costTxt.SetActive(false); ResourceManager.SetActive(CanvasLabel.T_Close, false); } else { cost = Auxiliary.FmlParse(costFml, "c", (Manager.CoinPerson*100).ToString("0")); costTxt.SetActive(true); costTxt.text = TransferLabel.CoinSprite + " " + Auxiliary.ShrinkAllNumberStr(cost); ResourceManager.SetActive(CanvasLabel.T_Close, true); NicknameInputField.text = NickName; } ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit)); if (!TutorialManager.PlazaRoomTutorial && !TutorialManager.VisitTutorial && !TutorialManager.DressroomTutorial) { ResourceManager.Get(CanvasLabel.C_Main).TweenBacCG(); } ResourceManager.Get (CanvasLabel.T_NickNameBK).TweenForCG (); } public static void CloseNickNameSettingPanel() { ResourceManager.Get (CanvasLabel.C_Main).TweenForCG (); ResourceManager.Get (CanvasLabel.T_NickNameBK).TweenBacCG (); } public static void SetNickName(string nickName) { NickName = nickName; ConfigManager.SaveStringToConfig(PlayerConfigLabel.NickName, nickName); ResourceManager.SetText(CanvasLabel.C_NickNameLab, nickName); } public static void SetRandomName() { NicknameInputField.text = DefaultFirstNames.Random()[0].Trim('\'') + DefaultLastNames.Random()[0].Trim('\''); } public static void ResetNickName() { if (NicknameInputField.text == NickName && !string.IsNullOrEmpty(NickName)) { ResetSucceed(); return; } if (cost > Manager.Coin) { Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false); return; } ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Checking)); ResourceManager.Get(CanvasLabel.T_NickNameBK).interactable = false; if (ChectInputFieldValue ()) { HttpManager.SetNickName ( NicknameInputField.text, ResetSucceed, ResetFailed ); } else { ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit)); ResourceManager.Get(CanvasLabel.T_NickNameBK).interactable = true; } } public static void ResetFailed(string str) { ResourceManager.SetText(CanvasLabel.T_Tit, Language.GetStr(LanguageLabel.UI__T_Tit)); ResourceManager.Get(CanvasLabel.T_NickNameBK).interactable = true; Bubble.Show(null, str); } public static void ResetSucceed() { Manager.Pay("", cost, Current.Coin, () => { }, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None, false, false); ResourceManager.Get(CanvasLabel.T_NickNameBK).interactable = true; SetNickName(NicknameInputField.text); AudioManager.PlayClip(AudioLabel.Close); CloseNickNameSettingPanel(); OnSetNickNameSucceed.SafeInvoke(); } public static bool ChectInputFieldValue() { NicknameInputField.text = NicknameInputField.text.Trim(); int charCnt = 0; int maxLengthIndex = 0; for (int i = 0; i < NicknameInputField.text.Length; i++) { if (NicknameInputField.text[i] <= 127)//英文字符 { charCnt++; } else if (NicknameInputField.text[i] > 127)//中文字符 { charCnt += 2; } if (charCnt > MaxNicknameLength) { maxLengthIndex = i; } } if (charCnt == 0) { Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_AllWhiteSpace)); return false; } else if (charCnt > MaxNicknameLength) { Bubble.Show(null, Language.GetStr(LanguageLabel.UI__T_TooLong)); NicknameInputField.text = NicknameInputField.text.Substring(0, maxLengthIndex); return false; } else { if (StringFilter.ContainSensitiveWord(NicknameInputField.text)) { Bubble.Show(null, Language.GetStr(LanguageLabel.Common__ContainSensitiveWord)); return false; } else { return true; } } } }