少年修仙传客户端代码仓库
client_Wu Xijin
2019-03-01 7c2aded4f4f8bac65982cba9d6689caaf126c1fe
3555 新版装备系统开发。
4个文件已修改
2个文件已添加
364 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/EquipControlConfig.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipControlConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipStarConfig.cs 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipStarConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/RealmEquipWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarWin.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/EquipControlConfig.cs
@@ -17,6 +17,7 @@
    public readonly int level;
    public readonly int equipType;
    public readonly int realm;
    public readonly int[] getWays;
    public EquipControlConfig()
    {
@@ -35,6 +36,13 @@
            int.TryParse(tables[2],out equipType); 
            int.TryParse(tables[3],out realm); 
            string[] getWaysStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            getWays = new int[getWaysStringArray.Length];
            for (int i=0;i<getWaysStringArray.Length;i++)
            {
                 int.TryParse(getWaysStringArray[i],out getWays[i]);
            }
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/EquipControlConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: ece51a8d88a7f944eadebe40b96d5c94
timeCreated: 1551412083
timeCreated: 1551431901
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Config/EquipStarConfig.cs
New file
@@ -0,0 +1,249 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Friday, March 01, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class EquipStarConfig
{
    public readonly int ID;
    public readonly int Level;
    public readonly int EquipPlace;
    public readonly int Star;
    public readonly int[] CostEquipPlace;
    public readonly int[] CostEquipColor;
    public readonly int CostEquipCnt;
    public readonly int SuitTotalRate;
    public readonly Int2 CostItemDict;
    public readonly Int2[] StarAttrInfo;
    public readonly Int2[] BaseAttrInfo;
    public EquipStarConfig()
    {
    }
    public EquipStarConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID);
            int.TryParse(tables[1],out Level);
            int.TryParse(tables[2],out EquipPlace);
            int.TryParse(tables[3],out Star);
            string[] CostEquipPlaceStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            CostEquipPlace = new int[CostEquipPlaceStringArray.Length];
            for (int i=0;i<CostEquipPlaceStringArray.Length;i++)
            {
                 int.TryParse(CostEquipPlaceStringArray[i],out CostEquipPlace[i]);
            }
            string[] CostEquipColorStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            CostEquipColor = new int[CostEquipColorStringArray.Length];
            for (int i=0;i<CostEquipColorStringArray.Length;i++)
            {
                 int.TryParse(CostEquipColorStringArray[i],out CostEquipColor[i]);
            }
            int.TryParse(tables[6],out CostEquipCnt);
            int.TryParse(tables[7],out SuitTotalRate);
            Int2.TryParse(tables[8],out CostItemDict);
            string[] StarAttrInfoStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            StarAttrInfo = new Int2[StarAttrInfoStringArray.Length];
            for (int i=0;i<StarAttrInfoStringArray.Length;i++)
            {
                 Int2.TryParse(StarAttrInfoStringArray[i],out StarAttrInfo[i]);
            }
            string[] BaseAttrInfoStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            BaseAttrInfo = new Int2[BaseAttrInfoStringArray.Length];
            for (int i=0;i<BaseAttrInfoStringArray.Length;i++)
            {
                 Int2.TryParse(BaseAttrInfoStringArray[i],out BaseAttrInfo[i]);
            }
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, EquipStarConfig> configs = new Dictionary<string, EquipStarConfig>();
    public static EquipStarConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("EquipStarConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        EquipStarConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new EquipStarConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static EquipStarConfig 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<EquipStarConfig> GetValues()
    {
        var values = new List<EquipStarConfig>();
        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 +"/EquipStar.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/EquipStar.txt");
        }
        var tempConfig = new EquipStarConfig();
        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 EquipStarConfig(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 EquipStarConfig(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/EquipStarConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1cb3a1eef8413e8449c98c1761d313d1
timeCreated: 1551431848
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Equip/RealmEquipWin.cs
@@ -211,7 +211,6 @@
                        default:
                            return null;
                    }
                }
            }
        }
System/EquipStar/EquipStarWin.cs
@@ -9,14 +9,28 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class EquipStarWin : Window
    {
        [SerializeField] Image[] m_Stars;
        [SerializeField] ItemCell m_TargetEquip;
        [SerializeField] Materials m_Materials;
        [SerializeField] Text m_SuccessRate;
        [SerializeField] PropertyPreview[] m_PropertyPreviews;
        [SerializeField] Text m_NewProperty;
        [SerializeField] Button m_StarUpgrade;
        EquipStarModel model { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        #region Built-in
        protected override void BindController()
        {
            m_StarUpgrade.SetListener(StarUpgrade);
        }
        protected override void AddListeners()
@@ -39,7 +53,81 @@
        {
        }
        #endregion
        private void DisplayBaseInfo()
        {
        }
        private void DisplayDynamicInfo(bool force)
        {
        }
        private void StarUpgrade()
        {
            var equip = packModel.GetItemByGuid(model.selectedEquip.value);
            model.DoStarUpgrade(equip.config.LV, equip.config.EquipPlace);
        }
        [System.Serializable]
        public class Materials
        {
            public EquipStarUpgradeMaterialBehaviour m_Material1;
            public EquipStarUpgradeMaterialBehaviour m_Material2;
            public EquipStarUpgradeMaterialBehaviour m_Material3;
            public EquipStarUpgradeMaterialBehaviour m_Material4;
            public EquipStarUpgradeMaterialBehaviour m_Material5;
            public EquipStarUpgradeMaterialBehaviour m_MaterialSpecial;
            public EquipStarUpgradeMaterialBehaviour this[int index] {
                get {
                    switch (index)
                    {
                        case 1:
                            return m_Material1;
                        case 2:
                            return m_Material2;
                        case 3:
                            return m_Material3;
                        case 4:
                            return m_Material4;
                        case 5:
                            return m_Material5;
                        case 6:
                            return m_MaterialSpecial;
                        default:
                            return null;
                    }
                }
            }
        }
        [System.Serializable]
        public class PropertyPreview
        {
            public Text propertyName;
            public Text current;
            public Text next;
            public void Display(int propertyId, int currentValue, int nextValue)
            {
                var config = PlayerPropertyConfig.Get(propertyId);
                if (config != null)
                {
                    propertyName.text = config.Name;
                    this.current.text = config.ISPercentage == 1 ?
                        StringUtility.Contact(Mathf.RoundToInt(currentValue * 0.01f), "%") : currentValue.ToString();
                    this.next.text = config.ISPercentage == 1 ?
                        StringUtility.Contact(Mathf.RoundToInt(nextValue * 0.01f), "%") : nextValue.ToString();
                }
            }
        }
    }
}