少年修仙传客户端代码仓库
hch
2023-11-13 df18c18bbf7127ac49fdef21ce0b1a629f37de07
0312 版本同步
3个文件已修改
542 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/HorseLVUpConfig.cs 484 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/HorseLVUpConfig.cs.meta 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/MountModel.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/HorseLVUpConfig.cs
@@ -1,228 +1,272 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Saturday, January 04, 2020
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
public partial class HorseLVUpConfig
{
    public readonly int HorseLV;
    public readonly int HorseSkinID;
    public readonly int NeedEatCount;
    public readonly int[] LVAttrType;
    public readonly int[] LVAttrValue;
    public readonly int HorseID;
    public readonly int useCnt;
    public HorseLVUpConfig()
    {
    }
    public HorseLVUpConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out HorseLV);
            int.TryParse(tables[1],out HorseSkinID);
            int.TryParse(tables[2],out NeedEatCount);
            string[] LVAttrTypeStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            LVAttrType = new int[LVAttrTypeStringArray.Length];
            for (int i=0;i<LVAttrTypeStringArray.Length;i++)
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           2023年11月13日
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
using LitJson;
public partial class HorseLVUpConfig
{
    public readonly int HorseLV;
    public readonly int HorseSkinID;
    public readonly int NeedEatCount;
    public readonly int[] LVAttrType;
    public readonly int[] LVAttrValue;
    public readonly int[] UpItemAttrType;
    public readonly int[] UpItemAttrValue;
    public readonly int HorseID;
    public readonly int useCnt;
    public HorseLVUpConfig()
    {
    }
    public HorseLVUpConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out HorseLV);
            int.TryParse(tables[1],out HorseSkinID);
            int.TryParse(tables[2],out NeedEatCount);
            if (tables[3].Contains("["))
            {
                 int.TryParse(LVAttrTypeStringArray[i],out LVAttrType[i]);
                LVAttrType = JsonMapper.ToObject<int[]>(tables[3]);
            }
            string[] LVAttrValueStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            LVAttrValue = new int[LVAttrValueStringArray.Length];
            for (int i=0;i<LVAttrValueStringArray.Length;i++)
            else
            {
                 int.TryParse(LVAttrValueStringArray[i],out LVAttrValue[i]);
                string[] LVAttrTypeStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                LVAttrType = new int[LVAttrTypeStringArray.Length];
                for (int i=0;i<LVAttrTypeStringArray.Length;i++)
                {
                     int.TryParse(LVAttrTypeStringArray[i],out LVAttrType[i]);
                }
            }
            if (tables[4].Contains("["))
            {
                LVAttrValue = JsonMapper.ToObject<int[]>(tables[4]);
            }
            int.TryParse(tables[5],out HorseID);
            int.TryParse(tables[6],out useCnt);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, HorseLVUpConfig> configs = new Dictionary<string, HorseLVUpConfig>();
    public static HorseLVUpConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("HorseLVUpConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        HorseLVUpConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new HorseLVUpConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static HorseLVUpConfig 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<HorseLVUpConfig> GetValues()
    {
        var values = new List<HorseLVUpConfig>();
        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 +"/HorseLVUp.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/HorseLVUp.txt");
        }
        configs.Clear();
        var tempConfig = new HorseLVUpConfig();
        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
            else
            {
                string[] LVAttrValueStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                LVAttrValue = new int[LVAttrValueStringArray.Length];
                for (int i=0;i<LVAttrValueStringArray.Length;i++)
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new HorseLVUpConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                     int.TryParse(LVAttrValueStringArray[i],out LVAttrValue[i]);
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
            }
            if (tables[5].Contains("["))
            {
                UpItemAttrType = JsonMapper.ToObject<int[]>(tables[5]);
            }
            else
            {
                string[] UpItemAttrTypeStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                UpItemAttrType = new int[UpItemAttrTypeStringArray.Length];
                for (int i=0;i<UpItemAttrTypeStringArray.Length;i++)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                     int.TryParse(UpItemAttrTypeStringArray[i],out UpItemAttrType[i]);
                }
                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 HorseLVUpConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
            }
            if (tables[6].Contains("["))
            {
                UpItemAttrValue = JsonMapper.ToObject<int[]>(tables[6]);
            }
            else
            {
                string[] UpItemAttrValueStringArray = tables[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                UpItemAttrValue = new int[UpItemAttrValueStringArray.Length];
                for (int i=0;i<UpItemAttrValueStringArray.Length;i++)
                {
                     int.TryParse(UpItemAttrValueStringArray[i],out UpItemAttrValue[i]);
                }
            }
            int.TryParse(tables[7],out HorseID);
            int.TryParse(tables[8],out useCnt);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, HorseLVUpConfig> configs = new Dictionary<string, HorseLVUpConfig>();
    public static HorseLVUpConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("HorseLVUpConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        HorseLVUpConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new HorseLVUpConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static HorseLVUpConfig 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<HorseLVUpConfig> GetValues()
    {
        var values = new List<HorseLVUpConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        for (int i = 0; i < keys.Count; i++)
        {
            values.Add(Get(keys[i]));
        }
        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 +"/HorseLVUp.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/HorseLVUp.txt");
        }
        configs.Clear();
        var tempConfig = new HorseLVUpConfig();
        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 HorseLVUpConfig(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 HorseLVUpConfig(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/HorseLVUpConfig.cs.meta
@@ -1,8 +1,7 @@
fileFormatVersion: 2
guid: 2d50dc327ea1fe941bf7f48e5aaf65dc
timeCreated: 1578139241
licenseType: Pro
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
System/Mount/MountModel.cs
@@ -62,7 +62,7 @@
    private bool hasSendAutoActive = false;
    public int horseUpItemId { get; private set; }
    public int HorseDanExp = 0;//坐骑丹经验
    public int[][] horseDanAttr;
    //public int[][] horseDanAttr;
    public int[] HorseAttrSort; //坐骑属性面板排序,属性和添加属性为0则不显示
    public int HorseTrainMoreCnt;
    public int horseUpItemCost = 10;
@@ -104,7 +104,7 @@
        var funcConfig = FuncConfigConfig.Get("HorseUpItem");
        horseUpItemId = int.Parse(funcConfig.Numerical1);
        HorseDanExp = int.Parse(funcConfig.Numerical2);
        horseDanAttr = JsonMapper.ToObject<int[][]>(funcConfig.Numerical3);
        //horseDanAttr = JsonMapper.ToObject<int[][]>(funcConfig.Numerical3);
        HorseAttrSort = JsonMapper.ToObject<int[]>(funcConfig.Numerical4); //坐骑面板属性排序
        HorseTrainMoreCnt = int.Parse(funcConfig.Numerical5);
@@ -857,17 +857,37 @@
        HorseAllAttr.Clear();
        activeAllSkinAddPower = 0;
        int allHorseEatCount = HorseEatCount;
        //丹经验属性
        for (int i = 1; i < HorseLV; i++)
        {
            var config = HorseLVUpConfig.Get(i);
            allHorseEatCount += config.NeedEatCount;
        }
        foreach (var attrPair in horseDanAttr)
        {
            HorseAllAttr[attrPair[0]] = attrPair[1] * allHorseEatCount;
        //丹经验属性
        for (int i = 1; i <= HorseLV; i++)
        {
            var config = HorseLVUpConfig.Get(i);
            var eatCnt = 0;
            if (config.useCnt == 0)
            {
                //最高级不计算
                continue;
            }
            else if (i == HorseLV)
            {
                //当前等级取封包数量
                eatCnt = HorseEatCount / config.useCnt;
            }
            else
            {
                eatCnt = config.NeedEatCount / config.useCnt;
            }
            for (int j = 0; j < config.UpItemAttrType.Length; j++)
            {
                var upKey = config.UpItemAttrType[j];
                if (!HorseAllAttr.ContainsKey(upKey))
                {
                    HorseAllAttr[upKey] = 0;
                }
                HorseAllAttr[upKey] = HorseAllAttr[upKey] + eatCnt * config.UpItemAttrValue[j];
            }
        }
        //升阶属性
@@ -1012,12 +1032,13 @@
        {
            return nextTrainAttr;
        }
        foreach (var attrPair in horseDanAttr)
        {
            nextTrainAttr[attrPair[0]] = attrPair[1] * NextTrainCount;
        var config = HorseLVUpConfig.Get(HorseLV);
        for (int i = 0; i < config.UpItemAttrType.Length; i++)
        {
            nextTrainAttr[config.UpItemAttrType[i]] = config.UpItemAttrValue[i];
        }
        var config = HorseLVUpConfig.Get(HorseLV);
        if (HorseEatCount + NextTrainCount >= config.NeedEatCount)
        {
            //有升阶的情况