少年修仙传客户端代码仓库
client_linchunjie
2018-09-07 7d22f5bf3a9c6d2effc07e3fe4c3de45680537ac
3333【前端】 新增主角名字屏幕列表
5个文件已修改
4个文件已添加
287 ■■■■■ 已修改文件
Core/GameEngine/Login/LaunchPostProcess.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DirtyNameConfig.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DirtyNameConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/DirtyNameConfig.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/DirtyNameConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyCreateWin.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyModel.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CreateRoleWin.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Login/LaunchPostProcess.cs
@@ -39,6 +39,7 @@
                AnyCountDownUtility.Instance.Initialize();
                MapTransferUtility.Instance.Initialize();
                DirtyWordConfig.Init();
                DirtyNameConfig.Init();
                NewBieCenter.Instance.Init();
                DebugEx.LogFormat("解析配置表耗时:{0}", Time.time - startTime);
Core/GameEngine/Model/Config/DirtyNameConfig.cs
New file
@@ -0,0 +1,41 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Friday, September 07, 2018
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class DirtyNameConfig : ConfigBase {
        public int id { get ; private set ; }
        public string word { get ; private set; }
        public override string getKey()
        {
            return id.ToString();
        }
        public override void Parse() {
            try
            {
                id=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                word = rawContents[1].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/DirtyNameConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 82951a956f653c244b4289f30d794187
timeCreated: 1536292732
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -189,6 +189,7 @@
        AddAsyncTask<TrialRewardsConfig>();
        AddAsyncTask<DogzEquipPlusConfig>();
        AddAsyncTask<FairyGrabBossConfig>();
        AddAsyncTask<DirtyNameConfig>();
        while (!AllCompleted())
        {
            var completedCount = 0;
Core/GameEngine/Model/TelPartialConfig/DirtyNameConfig.cs
New file
@@ -0,0 +1,211 @@
// ------------------------------------------------------------------------------
//  <autogenerated>
//      This code was generated by a tool.
//      Mono Runtime Version: 2.0.50727.1433
//
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  </autogenerated>
// ------------------------------------------------------------------------------
namespace TableConfig
{
    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using UnityEngine;
    using System.Threading;
    public partial class DirtyNameConfig : ConfigBase, IConfigPostProcess
    {
        private static WordGroup[] DIRTYWORLD = new WordGroup[(int)char.MaxValue];
        private static List<string> memoryList = new List<string>();
        private static bool inited = false;
        static int cursor = 0;
        static int wordlenght = 0;
        static int nextCursor = 0;
        public void OnConfigParseCompleted()
        {
            string key = ToDBC(word);
            memoryList.Add(key);
        }
        private static string ToDBC(string input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 12288)
                {
                    c[i] = (char)32;
                    continue;
                }
                if (c[i] > 65280 && c[i] < 65375)
                    c[i] = (char)(c[i] - 65248);
            }
            return new string(c).ToLower();
        }
        public static bool IsDirtName(string source)
        {
            if (!inited)
            {
                Init();
            }
            if (source != string.Empty)
            {
                cursor = 0;
                nextCursor = 0;
                for (int i = 0; i < source.Length; i++)
                {
                    //查询以该字为首字符的词组
                    WordGroup group = DIRTYWORLD[(int)ToDBC(source)[i]];
                    if (group != null)
                    {
                        for (int z = 0; z < group.Count(); z++)
                        {
                            string word = group.GetWord(z);
                            if (word.Length == 0 || Check(word, source))
                            {
                                return true;
                            }
                        }
                    }
                    cursor++;
                }
            }
            return false;
        }
        private static bool Check(string blackWord, string source)
        {
            wordlenght = 0;
            int wordCnt = 0;
            //检测源下一位游标
            nextCursor = cursor + 1;
            bool found = false;
            //遍历词的每一位做匹配
            for (int i = 0; i < blackWord.Length; i++)
            {
                //特殊字符偏移游标
                int offset = 0;
                if (nextCursor >= source.Length)
                {
                    break;
                }
                else
                {
                    //检测下位字符如果不是汉字 数字 字符 偏移量加1,,过滤特殊字符
                    for (int y = nextCursor; y < source.Length; y++)
                    {
                        //if (!IsCHS(source[y]) && !IsNum(source[y]) && !IsAlphabet(source[y])) {
                        if (IsSpecial(source[y]))
                        {
                            offset++;
                            //避让特殊字符,下位游标如果>=字符串长度 跳出
                            if (nextCursor + offset >= source.Length) break;
                            wordlenght++;
                        }
                        else break;
                    }
                    if (nextCursor + offset >= source.Length)
                    {
                        break;
                    }
                    if ((int)blackWord[i] == (int)source[nextCursor + offset])
                    {
                        wordCnt++;
                        found = true;
                    }
                    else
                    {
                        found = false;
                        break;
                    }
                }
                nextCursor = nextCursor + 1 + offset;
                wordlenght++;
            }
            if (blackWord.Length != wordCnt) return false;
            return found;
        }
        private static bool IsSpecial(char character)
        {
            if (character == ' ')
            {
                return true;
            }
            return false;
        }
        static public void Init()
        {
            if (inited)
            {
                return;
            }
            inited = true;
            ThreadPool.QueueUserWorkItem((object aaa) =>
            {
                memoryList.Sort((string x, string y) =>
                {
                    return x.CompareTo(y);
                });
                for (int i = memoryList.Count - 1; i > 0; i--)
                {
                    if (memoryList[i].ToString() == memoryList[i - 1].ToString())
                    {
                        memoryList.RemoveAt(i);
                    }
                }
                foreach (string word in memoryList)
                {
                    WordGroup group = DIRTYWORLD[(int)word[0]];
                    if (group == null)
                    {
                        group = new WordGroup();
                        DIRTYWORLD[(int)word[0]] = group;
                    }
                    group.Add(word.Substring(1));
                }
            });
        }
        public static bool IsCHS(char character)
        {
            //  中文表意字符的范围 4E00-9FA5
            int charVal = (int)character;
            return (charVal >= 0x4e00 && charVal <= 0x9fa5);
        }
        private static bool IsNum(char character)
        {
            int charVal = (int)character;
            return (charVal >= 48 && charVal <= 57);
        }
        private static bool IsAlphabet(char character)
        {
            int charVal = (int)character;
            return ((charVal >= 97 && charVal <= 122) || (charVal >= 65 && charVal <= 90));
        }
        private const string FACE_REPLACE = @"#~[0-9a-zA-Z]{1,3}";
        private static Regex FaceRegex = new Regex(FACE_REPLACE, RegexOptions.Singleline);
        public static string FitterSpecial(string source)
        {
            return FaceRegex.Replace(source, "     ");
        }
    }
}
Core/GameEngine/Model/TelPartialConfig/DirtyNameConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0e5d71dd541cbe34d8b8476ffee4b7c3
timeCreated: 1536298690
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/FairyCreateWin.cs
@@ -75,7 +75,8 @@
                MessageWin.Inst.ShowFixedTip(Language.Get("L1015"));
                return;
            }
            if (DirtyWordConfig.IsDirtWord(creationInput.text) || UIHelper.HasSpecialCharac(creationInput.text))
            if (DirtyWordConfig.IsDirtWord(creationInput.text) || UIHelper.HasSpecialCharac(creationInput.text)
                || DirtyNameConfig.IsDirtName(creationInput.text))
            {
                SysNotifyMgr.Instance.ShowTip("FamilyNameChangeUnlegal");
                return;
System/FairyAu/FairyModel.cs
@@ -461,7 +461,8 @@
                errorCode = 0;
                return false;
            }
            if (DirtyWordConfig.IsDirtWord(_name) || UIHelper.HasSpecialCharac(_name))
            if (DirtyWordConfig.IsDirtWord(_name) || UIHelper.HasSpecialCharac(_name)
                || DirtyNameConfig.IsDirtName(_name))
            {
                errorCode = 1;
                return false;
System/Login/CreateRoleWin.cs
@@ -196,7 +196,8 @@
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameLimit"));
                return;
            }
            if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text))
            if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text)
                || DirtyNameConfig.IsDirtName(userNameInput.text))
            {
                MessageWin.Inst.ShowFixedTip(Language.Get("L1007"));
                return;