using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Collections; using System.Collections.Generic; using System.Linq; public class NickNameManager : Regist { #region Config private static int MaxNicknameLength = 12; public static string NickName; public static InputField NicknameInputField; public static Action OnSetNickNameSucceed; private static List DefaultLastNames = new List(); private static List DefaultFirstNames = new List(); #endregion public override void FirstInit() { SetNickName (ConfigManager.GetStringFormConfig (PlayerConfigLabel.NickName)); 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(); //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)) { ResourceManager.SetActive(CanvasLabel.T_Close, false); } else { 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; } 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() { 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; } } } }