少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-19 cca7d962676bd9e7c9c3ff2517f1fae67998109d
3335 配置表解析优化。
2个文件已添加
3个文件已修改
306 ■■■■ 已修改文件
Core/GameEngine/Model/Config/SkillClassifingConfig.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SkillClassifingConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SkillConfigWrap.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/ConfigInitiator.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SkillClassifingConfig.cs
New file
@@ -0,0 +1,211 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Tuesday, February 19, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class SkillClassifingConfig
{
    public readonly int SkillID;
    public readonly int SkillTypeID;
    public readonly int UseType;
    public readonly int FuncType;
    public readonly int SkillLV;
    public SkillClassifingConfig()
    {
    }
    public SkillClassifingConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out SkillID);
            int.TryParse(tables[1],out SkillTypeID);
            int.TryParse(tables[2],out UseType);
            int.TryParse(tables[3],out FuncType);
            int.TryParse(tables[4],out SkillLV);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, SkillClassifingConfig> configs = new Dictionary<string, SkillClassifingConfig>();
    public static SkillClassifingConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("SkillClassifingConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        SkillClassifingConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new SkillClassifingConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static SkillClassifingConfig Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<SkillClassifingConfig> GetValues()
    {
        var values = new List<SkillClassifingConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/SkillClassifing.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/SkillClassifing.txt");
        }
        var tempConfig = new SkillClassifingConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            if (!preParse)
            {
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new SkillClassifingConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new SkillClassifingConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
Core/GameEngine/Model/Config/SkillClassifingConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0d490745b50975a4aabd218256cecdd4
timeCreated: 1550560781
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs
@@ -1,67 +1,74 @@
using System.Collections.Generic;
using System.Text;
using System.Threading;
public partial class SkillConfig : IConfigPostProcess
public partial class SkillConfig
{
    static Dictionary<int, int> horseSkills = new Dictionary<int, int>();
    /// <summary>
    /// 根据职业以及技能类型存储技能
    /// </summary>
    private static Dictionary<int, Dictionary<int, Dictionary<int, List<int>>>> m_Skills = new Dictionary<int, Dictionary<int, Dictionary<int, List<int>>>>();
    public void OnConfigParseCompleted()
    public static void SkillClassifingInit()
    {
        #region 根据职业以及技能类型以及技能等级
        Dictionary<int, Dictionary<int, List<int>>> funcDic = null;
        Dictionary<int, List<int>> typeDic = null;
        List<int> lvlist = null;
        m_Skills.TryGetValue(UseType, out funcDic);
        if (funcDic != null)
        SkillClassifingConfig.Init(true);
        var configs = SkillClassifingConfig.GetValues();
        foreach (var config in configs)
        {
            funcDic.TryGetValue(FuncType, out typeDic);
            if (typeDic != null)
            var UseType = config.UseType;
            var FuncType = config.FuncType;
            var SkillTypeID = config.SkillTypeID;
            var SkillID = config.SkillID;
            var SkillLV = config.SkillLV;
            if (FuncType == 5)
            {
                typeDic.TryGetValue(SkillTypeID, out lvlist);
                if (lvlist != null)
                horseSkills.Add(SkillTypeID * 1000 + SkillLV, SkillID);
            }
            Dictionary<int, Dictionary<int, List<int>>> funcDic = null;
            Dictionary<int, List<int>> typeDic = null;
            List<int> lvlist = null;
            m_Skills.TryGetValue(UseType, out funcDic);
            if (funcDic != null)
            {
                funcDic.TryGetValue(FuncType, out typeDic);
                if (typeDic != null)
                {
                    lvlist.Add(SkillID);
                    typeDic.TryGetValue(SkillTypeID, out lvlist);
                    if (lvlist != null)
                    {
                        lvlist.Add(SkillID);
                    }
                    else
                    {
                        lvlist = new List<int>();
                        lvlist.Add(SkillID);
                        typeDic.Add(SkillTypeID, lvlist);
                    }
                }
                else
                {
                    typeDic = new Dictionary<int, List<int>>();
                    lvlist = new List<int>();
                    lvlist.Add(SkillID);
                    typeDic.Add(SkillTypeID, lvlist);
                    funcDic.Add(FuncType, typeDic);
                }
            }
            else
            {
                funcDic = new Dictionary<int, Dictionary<int, List<int>>>();
                typeDic = new Dictionary<int, List<int>>();
                lvlist = new List<int>();
                lvlist.Add(SkillID);
                typeDic.Add(SkillTypeID, lvlist);
                funcDic.Add(FuncType, typeDic);
                m_Skills.Add(UseType, funcDic);
            }
        }
        else
        {
            funcDic = new Dictionary<int, Dictionary<int, List<int>>>();
            typeDic = new Dictionary<int, List<int>>();
            lvlist = new List<int>();
            lvlist.Add(SkillID);
            typeDic.Add(SkillTypeID, lvlist);
            funcDic.Add(FuncType, typeDic);
            m_Skills.Add(UseType, funcDic);
        }
        #endregion
        #region 坐骑技能获取
        if (FuncType == 5)
        {
            horseSkills.Add(SkillTypeID*1000+SkillLV, this);
        }
        #endregion
    }
     static Dictionary<int, SkillConfig> horseSkills = new Dictionary<int, SkillConfig>();
    /// <summary>
    /// 根据职业类型以及技能类型获取技能
@@ -102,9 +109,9 @@
    //------坐骑技能获取
    public static SkillConfig GetSkillTypeIDAndSkillLV(int typeId, int level)
    {
        SkillConfig skillConfig = null;
        horseSkills.TryGetValue(typeId * 1000 + level, out skillConfig);
        return skillConfig;
        var skillId = 0;
        horseSkills.TryGetValue(typeId * 1000 + level, out skillId);
        return SkillConfig.Get(skillId);
    }
    public static int FindSkillByJob(int[] skillIds, int job)
Lua/Gen/SkillConfigWrap.cs
@@ -351,7 +351,6 @@
                
                {
                    
                    gen_to_be_invoked.OnConfigParseCompleted(  );
                    
                    
                    
Utility/ConfigInitiator.cs
@@ -318,6 +318,9 @@
        {
            case "ItemConfig":
                ItemConfig.GemItemInit();
                break;
            case "SkillConfig":
                SkillConfig.SkillClassifingInit();
                break;
            case "FuncConfigConfig":
                GeneralDefine.Init();