using System; using System.Text; public class RenameManager : GameSystemManager { public int moneyType; public int moneyNeed; public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent; FuncConfigConfig config = FuncConfigConfig.Get("PlayerRename"); int[] arr = ConfigParse.GetMultipleStr(config.Numerical3); moneyType = arr[0]; moneyNeed = arr[1]; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent; } private void OnBeforePlayerDataInitializeEvent() { RenameManagerCount = 0; } public event Action OnUpdateRenameResultEvent; public void UpdateRenameResult(HA921_tagSCRenameResult vNetData) { if (vNetData == null) return; PlayerDatas.Instance.baseData.PlayerName = UIHelper.ServerStringTrim(vNetData.PlayerName); SysNotifyMgr.Instance.ShowTip("RenameSuccess"); OnUpdateRenameResultEvent?.Invoke(); } int RenameManagerCount = 0; // 改名次数 为1 代表已经首次改名过,未改过上线不会收到该封包 public event Action OnUpdatePlayerNameCountEvent; public void UpdatePlayerNameCount(HA123_tagUpdatePlayerNameCount vNetData) { if (vNetData == null) return; RenameManagerCount = (int)vNetData.Count; OnUpdatePlayerNameCountEvent?.Invoke(); } public void SendRenamePack(string name) { CA122_tagUpdatePlayerName pack = new CA122_tagUpdatePlayerName(); pack.NewName = name; pack.NewNameLen = (byte)GetUTF8InfoLen(name); GameNetSystem.Instance.SendInfo(pack); } public bool IsFirstRename() { return RenameManagerCount == 0; } public string GetRondomNameByJob(int job) { if (!RandomNameConfig.TryGetRandomName1ByJob(job, out var randomNameList1)) return string.Empty; if (!RandomNameConfig.TryGetRandomName2ByJob(job, out var randomNameList2)) return string.Empty; int randomNameIndex1 = UnityEngine.Random.Range(0, randomNameList1.Count - 1); int randomNameIndex2 = UnityEngine.Random.Range(0, randomNameList2.Count - 1); return StringUtility.Contact(randomNameList1[randomNameIndex1], randomNameList2[randomNameIndex2]); } public bool CheckNameLimit(string name, out int errorCode) { errorCode = 0; if (string.IsNullOrEmpty(name)) { errorCode = 0; return false; } if (!UIHelper.SatisfyNameLength(name, out errorCode)) { return false; } if (DirtyWordConfig.IsDirtWord(name) || UIHelper.HasSpecialCharac(name) || DirtyNameConfig.IsDirtName(name)) { errorCode = 3; return false; } if (name == PlayerDatas.Instance.baseData.PlayerName) { errorCode = 4; return false; } return true; } public void ShowNameErrorTip(int _errorCode) { switch (_errorCode) { case 0: //空 SysNotifyMgr.Instance.ShowTip("FamilyNameChangeNoNull"); break; case 1: // 名字长度过长 SysNotifyMgr.Instance.ShowTip("NameError2", 7); break; case 2: // 名字长度过短 SysNotifyMgr.Instance.ShowTip("NameError1", 2); break; case 3: // 脏字 SysNotifyMgr.Instance.ShowTip("NameSensitive"); break; case 4: // 名字已存在 SysNotifyMgr.Instance.ShowTip("NameExists"); break; } } public string GetSafeRandomName() { int job = PlayerDatas.Instance.baseData.Job; for (int i = 0; i < 9999; i++) { string name = GetRondomNameByJob(job); if (CheckNameLimit(name, out int errorCode)) return name; } return string.Empty; } public static int GetUTF8InfoLen(string msg) { return Encoding.UTF8.GetBytes(msg).Length; } }