using System;
|
using System.Text;
|
|
public class RenameManager : GameSystemManager<RenameManager>
|
{
|
public int moneyType;
|
public int moneyNeed;
|
public override void Init()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
|
|
FuncConfigConfig config = FuncConfigConfig.Get("PlayerRename");
|
int[] arr = ConfigParse.GetMultipleStr<int>(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;
|
}
|
}
|