lcy
7 小时以前 f3c3e3c6e12d832093a20ad9f01f459573400305
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using System;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
 
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 (name.Length < 4)
        {
            errorCode = 1;
            return false;
        }
        if (name.Length > 12)
        {
            errorCode = 2;
            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("NameError4");
                break;
            case 2:
                // 名字长度过长
                SysNotifyMgr.Instance.ShowTip("NameError5");
                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;
    }
}