少年修仙传客户端代码仓库
client_linchunjie
2019-02-19 1f5dc1a93b4442a43fdfcce74f525545dd7fbb96
Merge branch 'master' into TreasureRevise

Conflicts:
System/Treasure/TreasureComponent.cs
17个文件已添加
37个文件已修改
1776 ■■■■ 已修改文件
Core/GameEngine/Model/Config/GemItemConfig.cs 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/GemItemConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SkillClassifingConfig.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SkillClassifingConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/tagChinItemConfig.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ClientPack.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/ResModule/UILoader.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/PreFightMission.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/GemItemConfigWrap.cs 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/GemItemConfigWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/ItemConfigWrap.cs 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/ItemConfigWrap.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SkillConfigWrap.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/UILoaderWrap.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/link.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BossShow/BossShowModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOne.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossBehaviour.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/MountSkillWin.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/PlayerDead/ReliveWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillAccordWin.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillCell.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillModel.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillPassWin.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/WingsBouncedWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/WingsRedDot.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/WingsRefined.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamInvitationEntrance.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/WindowCenter.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/AutoSelectCyclicScroll.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/AutoSelectScrollItem.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/AutoSelectScrollItem.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/CyclicScroll.cs 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/ScrollItem.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DHeroSkillShow.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelFactory.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/ConfigInitiator.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/GemItemConfig.cs
New file
@@ -0,0 +1,202 @@
//--------------------------------------------------------
//    [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 GemItemConfig
{
    public readonly int ID;
    public readonly int Type;
    public GemItemConfig()
    {
    }
    public GemItemConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID);
            int.TryParse(tables[1],out Type);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, GemItemConfig> configs = new Dictionary<string, GemItemConfig>();
    public static GemItemConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("GemItemConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        GemItemConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new GemItemConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static GemItemConfig 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<GemItemConfig> GetValues()
    {
        var values = new List<GemItemConfig>();
        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 +"/GemItem.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/GemItem.txt");
        }
        var tempConfig = new GemItemConfig();
        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 GemItemConfig(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 GemItemConfig(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/GemItemConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f710d587358c1a244aad12e7c6b2ea1c
timeCreated: 1550556087
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
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/tagChinItemConfig.cs
@@ -1,30 +1,18 @@
using System.Collections.Generic;
using System.Text;
public partial class ItemConfig : IConfigPostProcess
public partial class ItemConfig
{
    public static Dictionary<int, ItemConfig> tag_Wings = new Dictionary<int, ItemConfig>();//用来存储所有翅膀所需的Tpye
    private static Dictionary<int, ItemConfig> m_GemCfgs = new Dictionary<int, ItemConfig>();
    private const int GEM_TYPE_VALUE = 225;
    public void OnConfigParseCompleted()
    public static void GemItemInit()
    {
        switch (Type)
        GemItemConfig.Init(true);
        var keys = GemItemConfig.GetKeys();
        foreach (var key in keys)
        {
            case 25:
            case 140:
                if (Effect1 == GEM_TYPE_VALUE)
                {
                    m_GemCfgs.Add(EffectValueB1 * 1000 + EffectValueA1, this);
                }
                break;
            case 111:
            case 39:
            case 52:
                tag_Wings.Add(ID, this);
                break;
            default:
                break;
            var config = ItemConfig.Get(key);
            m_GemCfgs.Add(config.EffectValueB1 * 1000 + config.EffectValueA1, config);
        }
    }
@@ -40,6 +28,13 @@
        m_GemCfgs.TryGetValue(level * 1000 + type, out item);
        return item;
    }
    public static bool IsWing(int itemId)
    {
        var config = ItemConfig.Get(itemId);
        return config != null && (config.Type == 111 || config.Type == 39 || config.Type == 52);
    }
}
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<SkillConfig>>>> m_Skills = new Dictionary<int, Dictionary<int, Dictionary<int, List<SkillConfig>>>>();
    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<SkillConfig>>> funcDic = null;
        Dictionary<int, List<SkillConfig>> typeDic = null;
        List<SkillConfig> 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(this);
                    typeDic.TryGetValue(SkillTypeID, out lvlist);
                    if (lvlist != null)
                    {
                        lvlist.Add(SkillID);
                    }
                    else
                    {
                        lvlist = new List<int>();
                        lvlist.Add(SkillID);
                        typeDic.Add(SkillTypeID, lvlist);
                    }
                }
                else
                {
                    lvlist = new List<SkillConfig>();
                    lvlist.Add(this);
                    typeDic = new Dictionary<int, List<int>>();
                    lvlist = new List<int>();
                    lvlist.Add(SkillID);
                    typeDic.Add(SkillTypeID, lvlist);
                    funcDic.Add(FuncType, typeDic);
                }
            }
            else
            {
                typeDic = new Dictionary<int, List<SkillConfig>>();
                lvlist = new List<SkillConfig>();
                lvlist.Add(this);
                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<SkillConfig>>>();
            typeDic = new Dictionary<int, List<SkillConfig>>();
            lvlist = new List<SkillConfig>();
            lvlist.Add(this);
            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>
    /// 根据职业类型以及技能类型获取技能
@@ -69,10 +76,10 @@
    /// <param name="occupy"></param>
    /// <param name="type"></param>
    /// <returns></returns>
    public static Dictionary<int, List<SkillConfig>> GetSkillWithOccpyAndType(int occupy, int type)
    public static Dictionary<int, List<int>> GetSkillWithOccpyAndType(int occupy, int type)
    {
        Dictionary<int, Dictionary<int, List<SkillConfig>>> dic = null;
        Dictionary<int, List<SkillConfig>> typeDic = null;
        Dictionary<int, Dictionary<int, List<int>>> dic = null;
        Dictionary<int, List<int>> typeDic = null;
        m_Skills.TryGetValue(occupy, out dic);
        if (dic != null)
        {
@@ -81,10 +88,10 @@
        return typeDic;
    }
    public static List<SkillConfig> GetSkillActConfigs(int occupy, int type, int _typeId)
    public static List<int> GetSkills(int occupy, int type, int _typeId)
    {
        List<SkillConfig> _list = null;
        Dictionary<int, List<SkillConfig>> _dict = GetSkillWithOccpyAndType(occupy, type);
        List<int> _list = null;
        Dictionary<int, List<int>> _dict = GetSkillWithOccpyAndType(occupy, type);
        if (_dict != null)
        {
            _dict.TryGetValue(_typeId, out _list);
@@ -92,9 +99,9 @@
        return _list;
    }
    public static Dictionary<int, Dictionary<int, List<SkillConfig>>> GetSkillActive(int occupy)
    public static Dictionary<int, Dictionary<int, List<int>>> GetSkillActive(int occupy)
    {
        Dictionary<int, Dictionary<int, List<SkillConfig>>> dic = null;
        Dictionary<int, Dictionary<int, List<int>>> dic = null;
        m_Skills.TryGetValue(occupy, out dic);
        return dic;
    }
@@ -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)
Core/NetworkPackage/DTCFile/ClientPack.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 722e5e3d30096674e811f5bd191246a0
folderAsset: yes
timeCreated: 1539228128
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3e05761d690b75440a6be79207d0fb01
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1d70ccd06161e0443b7a802ad94292f8
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 71e878ac60c49ad4f964dd2dbc725739
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: eed34091b0568664b9fb42f0634496c1
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 32ceb8b7faf99f84a8b73ce53c5e3e4d
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAE_Truck.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 77f69c2b862d1704299a32d0d8eeb71e
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAF_Merge.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fa14960fa44b0d1439bab471a764e34f
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HB0_Event.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: d914565b65f8e8145988734c4d915834
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/ResModule/UILoader.cs
@@ -11,17 +11,17 @@
    readonly static string PREFAB_EXTERSION = ".prefab";
    readonly static string SPRITE_EXTERSION = ".png";
    public static GameObject LoadWindow(string _name)
    public static GameObject LoadWindow(string name)
    {
        GameObject window = null;
        if (AssetSource.uiFromEditor)
        {
#if UNITY_EDITOR
            var isPriority = PriorityWindowConfig.Get().priorityWindows.Contains(_name);
            var isPriority = PriorityWindowConfig.Get().priorityWindows.Contains(name);
            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                                isPriority ? ResourcesPath.UI_PRIORITYWINDOW_SUFFIX : ResourcesPath.UI_WINDOW_SUFFIX, "/",
                                                                _name,
                                                                name,
                                                                PREFAB_EXTERSION);
            window = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
@@ -29,16 +29,16 @@
        }
        else
        {
            var isPriority = PriorityWindowConfig.Get().priorityWindows.Contains(_name);
            var bundleName = isPriority ? ResourcesPath.UI_PRIORITYWINDOW_SUFFIX.ToLower() : ResourcesPath.UI_WINDOW_SUFFIX.ToLower();
            var assetInfo = new AssetInfo(bundleName, _name);
            var isPriority = PriorityWindowConfig.Get().priorityWindows.Contains(name);
            var bundleName = isPriority ? "ui/prioritywindow" : "ui/window";
            var assetInfo = new AssetInfo(bundleName, name);
            window = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
        }
        if (window == null)
        {
            DebugEx.LogErrorFormat("UILoader.LoadWindow() => 加载不到资源: {0}.", _name);
            DebugEx.LogErrorFormat("UILoader.LoadWindow() => 加载不到资源: {0}.", name);
        }
        return window;
@@ -215,4 +215,100 @@
        }
    }
    public static GameObject LoadTreasure(string folder, string name)
    {
        GameObject prefab = null;
        if (AssetSource.uiFromEditor)
        {
#if UNITY_EDITOR
            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                                   "UI/Treasure/", folder, "/",
                                                                   name,
                                                                   PREFAB_EXTERSION);
            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
#endif
        }
        else
        {
            var bundleName = StringUtility.Contact("ui/treasure/", folder).ToLower();
            var assetInfo = new AssetInfo(bundleName, name);
            prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
        }
        if (prefab == null)
        {
            DebugEx.LogErrorFormat("UILoader.LoadPrefab() => 加载不到资源: {0}.", name);
        }
        return prefab;
    }
    public static void UnLoadTreasure(string folder, string _assetName)
    {
        if (!AssetSource.uiFromEditor)
        {
            AssetBundleUtility.Instance.UnloadAsset(StringUtility.Contact("ui/treasure/", folder).ToLower(), _assetName);
        }
    }
    public static GameObject LoadGodWeapon(string _name)
    {
        GameObject prefab = null;
        if (AssetSource.uiFromEditor)
        {
#if UNITY_EDITOR
            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                                   "UI/Weapon/",
                                                                   _name,
                                                                   PREFAB_EXTERSION);
            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
#endif
        }
        else
        {
            var bundleName = "ui/weapon";
            var assetInfo = new AssetInfo(bundleName, _name);
            prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
        }
        if (prefab == null)
        {
            DebugEx.LogErrorFormat("UILoader.LoadGodWeapon() => 加载不到资源: {0}.", _name);
        }
        return prefab;
    }
    public static GameObject LoadBossShow(string _name)
    {
        GameObject prefab = null;
        if (AssetSource.uiFromEditor)
        {
#if UNITY_EDITOR
            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                                   "UI/BossShow/",
                                                                   _name,
                                                                   PREFAB_EXTERSION);
            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
#endif
        }
        else
        {
            var bundleName = "ui/bossshow";
            var assetInfo = new AssetInfo(bundleName, _name);
            prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
        }
        if (prefab == null)
        {
            DebugEx.LogErrorFormat("UILoader.LoadBossShow() => 加载不到资源: {0}.", _name);
        }
        return prefab;
    }
}
Fight/PreFightMission.cs
@@ -93,7 +93,7 @@
        GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false);
        _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect);
        GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false);
        UILoader.LoadPrefab(_actorShowConfig.cam);
        UILoader.LoadBossShow(_actorShowConfig.cam);
        _actorShowConfig = ActorShowConfig.Get(12);
@@ -101,7 +101,7 @@
        GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false);
        _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect);
        GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false);
        UILoader.LoadPrefab(_actorShowConfig.cam);
        UILoader.LoadBossShow(_actorShowConfig.cam);
    }
    public void HandleNewPlayerMission(H0820_tagMissionDict h0820)
Lua/Gen/GemItemConfigWrap.cs
New file
@@ -0,0 +1,312 @@
#if USE_UNI_LUA
using LuaAPI = UniLua.Lua;
using RealStatePtr = UniLua.ILuaState;
using LuaCSFunction = UniLua.CSharpFunctionDelegate;
#else
using LuaAPI = XLua.LuaDLL.Lua;
using RealStatePtr = System.IntPtr;
using LuaCSFunction = XLua.LuaDLL.lua_CSFunction;
#endif
using XLua;
using System.Collections.Generic;
namespace XLua.CSObjectWrap
{
    using Utils = XLua.Utils;
    public class GemItemConfigWrap
    {
        public static void __Register(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
            System.Type type = typeof(GemItemConfig);
            Utils.BeginObjectRegister(type, L, translator, 0, 0, 2, 0);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "ID", _g_get_ID);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "Type", _g_get_Type);
            Utils.EndObjectRegister(type, L, translator, null, null,
                null, null, null);
            Utils.BeginClassRegister(type, L, __CreateInstance, 6, 1, 0);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Get", _m_Get_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetKeys", _m_GetKeys_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetValues", _m_GetValues_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Has", _m_Has_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Init", _m_Init_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_GETTER_IDX, "inited", _g_get_inited);
            Utils.EndClassRegister(type, L, translator);
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if(LuaAPI.lua_gettop(L) == 1)
                {
                    GemItemConfig gen_ret = new GemItemConfig();
                    translator.Push(L, gen_ret);
                    return 1;
                }
                if(LuaAPI.lua_gettop(L) == 2 && (LuaAPI.lua_isnil(L, 2) || LuaAPI.lua_type(L, 2) == LuaTypes.LUA_TSTRING))
                {
                    string _input = LuaAPI.lua_tostring(L, 2);
                    GemItemConfig gen_ret = new GemItemConfig(_input);
                    translator.Push(L, gen_ret);
                    return 1;
                }
            }
            catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return LuaAPI.luaL_error(L, "invalid arguments to GemItemConfig constructor!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_Get_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                int gen_param_count = LuaAPI.lua_gettop(L);
                if(gen_param_count == 1&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 1))
                {
                    int _id = LuaAPI.xlua_tointeger(L, 1);
                        GemItemConfig gen_ret = GemItemConfig.Get( _id );
                        translator.Push(L, gen_ret);
                    return 1;
                }
                if(gen_param_count == 1&& (LuaAPI.lua_isnil(L, 1) || LuaAPI.lua_type(L, 1) == LuaTypes.LUA_TSTRING))
                {
                    string _id = LuaAPI.lua_tostring(L, 1);
                        GemItemConfig gen_ret = GemItemConfig.Get( _id );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return LuaAPI.luaL_error(L, "invalid arguments to GemItemConfig.Get!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetKeys_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                        System.Collections.Generic.List<string> gen_ret = GemItemConfig.GetKeys(  );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetValues_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                        System.Collections.Generic.List<GemItemConfig> gen_ret = GemItemConfig.GetValues(  );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_Has_xlua_st_(RealStatePtr L)
        {
            try {
                int gen_param_count = LuaAPI.lua_gettop(L);
                if(gen_param_count == 1&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 1))
                {
                    int _id = LuaAPI.xlua_tointeger(L, 1);
                        bool gen_ret = GemItemConfig.Has( _id );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    return 1;
                }
                if(gen_param_count == 1&& (LuaAPI.lua_isnil(L, 1) || LuaAPI.lua_type(L, 1) == LuaTypes.LUA_TSTRING))
                {
                    string _id = LuaAPI.lua_tostring(L, 1);
                        bool gen_ret = GemItemConfig.Has( _id );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return LuaAPI.luaL_error(L, "invalid arguments to GemItemConfig.Has!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_Init_xlua_st_(RealStatePtr L)
        {
            try {
                int gen_param_count = LuaAPI.lua_gettop(L);
                if(gen_param_count == 1&& LuaTypes.LUA_TBOOLEAN == LuaAPI.lua_type(L, 1))
                {
                    bool _sync = LuaAPI.lua_toboolean(L, 1);
                    GemItemConfig.Init( _sync );
                    return 0;
                }
                if(gen_param_count == 0)
                {
                    GemItemConfig.Init(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return LuaAPI.luaL_error(L, "invalid arguments to GemItemConfig.Init!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_inited(RealStatePtr L)
        {
            try {
                LuaAPI.lua_pushboolean(L, GemItemConfig.inited);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_ID(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                GemItemConfig gen_to_be_invoked = (GemItemConfig)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.ID);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_Type(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                GemItemConfig gen_to_be_invoked = (GemItemConfig)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.Type);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
    }
}
Lua/Gen/GemItemConfigWrap.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 2157b338ccbdff24abb78f3c253ad800
timeCreated: 1550556878
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Lua/Gen/ItemConfigWrap.cs
@@ -21,9 +21,8 @@
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
            System.Type type = typeof(ItemConfig);
            Utils.BeginObjectRegister(type, L, translator, 0, 1, 70, 0);
            Utils.BeginObjectRegister(type, L, translator, 0, 0, 70, 0);
            
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnConfigParseCompleted", _m_OnConfigParseCompleted);
            
            
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "ID", _g_get_ID);
@@ -102,21 +101,21 @@
            Utils.EndObjectRegister(type, L, translator, null, null,
                null, null, null);
            Utils.BeginClassRegister(type, L, __CreateInstance, 7, 2, 1);
            Utils.BeginClassRegister(type, L, __CreateInstance, 9, 1, 0);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Get", _m_Get_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetKeys", _m_GetKeys_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetValues", _m_GetValues_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Has", _m_Has_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Init", _m_Init_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GemItemInit", _m_GemItemInit_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetGemDataByLevelAndType", _m_GetGemDataByLevelAndType_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsWing", _m_IsWing_xlua_st_);
            
            
            
            Utils.RegisterFunc(L, Utils.CLS_GETTER_IDX, "inited", _g_get_inited);
            Utils.RegisterFunc(L, Utils.CLS_GETTER_IDX, "tag_Wings", _g_get_tag_Wings);
            
            Utils.RegisterFunc(L, Utils.CLS_SETTER_IDX, "tag_Wings", _s_set_tag_Wings);
            
            Utils.EndClassRegister(type, L, translator);
        }
@@ -332,20 +331,16 @@
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_OnConfigParseCompleted(RealStatePtr L)
        static int _m_GemItemInit_xlua_st_(RealStatePtr L)
        {
            try {
            
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                ItemConfig gen_to_be_invoked = (ItemConfig)translator.FastGetCSObj(L, 1);
            
            
                
                {
                    
                    gen_to_be_invoked.OnConfigParseCompleted(  );
                    ItemConfig.GemItemInit(  );
                    
                    
                    
@@ -374,6 +369,31 @@
                    
                        ItemConfig gen_ret = ItemConfig.GetGemDataByLevelAndType( _level, _type );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_IsWing_xlua_st_(RealStatePtr L)
        {
            try {
                {
                    int _itemId = LuaAPI.xlua_tointeger(L, 1);
                        bool gen_ret = ItemConfig.IsWing( _itemId );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    
                    
                    
@@ -1381,32 +1401,7 @@
            return 1;
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_tag_Wings(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                translator.Push(L, ItemConfig.tag_Wings);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _s_set_tag_Wings(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                ItemConfig.tag_Wings = (System.Collections.Generic.Dictionary<int, ItemConfig>)translator.GetObject(L, 1, typeof(System.Collections.Generic.Dictionary<int, ItemConfig>));
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 0;
        }
        
        
        
Lua/Gen/ItemConfigWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 9a7ec13708152e7428d792e498b67354
timeCreated: 1550368559
timeCreated: 1550541197
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Lua/Gen/SkillConfigWrap.cs
@@ -113,7 +113,7 @@
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Has", _m_Has_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "Init", _m_Init_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillWithOccpyAndType", _m_GetSkillWithOccpyAndType_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillActConfigs", _m_GetSkillActConfigs_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkills", _m_GetSkills_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillActive", _m_GetSkillActive_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillTypeIDAndSkillLV", _m_GetSkillTypeIDAndSkillLV_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "FindSkillByJob", _m_FindSkillByJob_xlua_st_);
@@ -351,7 +351,6 @@
                
                {
                    
                    gen_to_be_invoked.OnConfigParseCompleted(  );
                    
                    
                    
@@ -378,7 +377,7 @@
                    int _occupy = LuaAPI.xlua_tointeger(L, 1);
                    int _type = LuaAPI.xlua_tointeger(L, 2);
                    
                        System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<SkillConfig>> gen_ret = SkillConfig.GetSkillWithOccpyAndType( _occupy, _type );
                        System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<int>> gen_ret = SkillConfig.GetSkillWithOccpyAndType( _occupy, _type );
                        translator.Push(L, gen_ret);
                    
                    
@@ -393,7 +392,7 @@
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetSkillActConfigs_xlua_st_(RealStatePtr L)
        static int _m_GetSkills_xlua_st_(RealStatePtr L)
        {
            try {
            
@@ -407,7 +406,7 @@
                    int _type = LuaAPI.xlua_tointeger(L, 2);
                    int __typeId = LuaAPI.xlua_tointeger(L, 3);
                    
                        System.Collections.Generic.List<SkillConfig> gen_ret = SkillConfig.GetSkillActConfigs( _occupy, _type, __typeId );
                        System.Collections.Generic.List<int> gen_ret = SkillConfig.GetSkills( _occupy, _type, __typeId );
                        translator.Push(L, gen_ret);
                    
                    
@@ -434,7 +433,7 @@
                {
                    int _occupy = LuaAPI.xlua_tointeger(L, 1);
                    
                        System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<SkillConfig>>> gen_ret = SkillConfig.GetSkillActive( _occupy );
                        System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<int>>> gen_ret = SkillConfig.GetSkillActive( _occupy );
                        translator.Push(L, gen_ret);
                    
                    
Lua/Gen/UILoaderWrap.cs
@@ -31,7 +31,7 @@
            Utils.EndObjectRegister(type, L, translator, null, null,
                null, null, null);
            Utils.BeginClassRegister(type, L, __CreateInstance, 10, 0, 0);
            Utils.BeginClassRegister(type, L, __CreateInstance, 14, 0, 0);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadWindow", _m_LoadWindow_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadWindowAsync", _m_LoadWindowAsync_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "UnLoadWindowAsset", _m_UnLoadWindowAsset_xlua_st_);
@@ -41,6 +41,10 @@
            Utils.RegisterFunc(L, Utils.CLS_IDX, "UnLoadSprite", _m_UnLoadSprite_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadFont", _m_LoadFont_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "UnLoadFont", _m_UnLoadFont_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadTreasure", _m_LoadTreasure_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "UnLoadTreasure", _m_UnLoadTreasure_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadGodWeapon", _m_LoadGodWeapon_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "LoadBossShow", _m_LoadBossShow_xlua_st_);
            
            
            
@@ -91,9 +95,9 @@
            
                
                {
                    string __name = LuaAPI.lua_tostring(L, 1);
                    string _name = LuaAPI.lua_tostring(L, 1);
                    
                        UnityEngine.GameObject gen_ret = UILoader.LoadWindow( __name );
                        UnityEngine.GameObject gen_ret = UILoader.LoadWindow( _name );
                        translator.Push(L, gen_ret);
                    
                    
@@ -327,6 +331,113 @@
            
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_LoadTreasure_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                    string _folder = LuaAPI.lua_tostring(L, 1);
                    string _name = LuaAPI.lua_tostring(L, 2);
                        UnityEngine.GameObject gen_ret = UILoader.LoadTreasure( _folder, _name );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_UnLoadTreasure_xlua_st_(RealStatePtr L)
        {
            try {
                {
                    string _folder = LuaAPI.lua_tostring(L, 1);
                    string __assetName = LuaAPI.lua_tostring(L, 2);
                    UILoader.UnLoadTreasure( _folder, __assetName );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_LoadGodWeapon_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                    string __name = LuaAPI.lua_tostring(L, 1);
                        UnityEngine.GameObject gen_ret = UILoader.LoadGodWeapon( __name );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_LoadBossShow_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                    string __name = LuaAPI.lua_tostring(L, 1);
                        UnityEngine.GameObject gen_ret = UILoader.LoadBossShow( __name );
                        translator.Push(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        
        
        
Lua/Gen/XLuaGenAutoRegister.cs
@@ -269,6 +269,9 @@
            translator.DelayWrapLoader(typeof(GatherSoulPropertyConfig), GatherSoulPropertyConfigWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(GemItemConfig), GemItemConfigWrap.__Register);
            translator.DelayWrapLoader(typeof(GetItemWaysConfig), GetItemWaysConfigWrap.__Register);
        
        
@@ -328,13 +331,13 @@
        
            translator.DelayWrapLoader(typeof(ItemPlusSumAttrConfig), ItemPlusSumAttrConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(JadeDynastyBossConfig), JadeDynastyBossConfigWrap.__Register);
        }
        
        static void wrapInit2(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(JadeDynastyBossConfig), JadeDynastyBossConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(JadeDynastyStoneAttrConfig), JadeDynastyStoneAttrConfigWrap.__Register);
        
@@ -485,13 +488,13 @@
        
            translator.DelayWrapLoader(typeof(RankListConfig), RankListConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(RealmConfig), RealmConfigWrap.__Register);
        }
        
        static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(RealmConfig), RealmConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(RealmPracticeConfig), RealmPracticeConfigWrap.__Register);
        
@@ -642,13 +645,13 @@
        
            translator.DelayWrapLoader(typeof(WingRefineExpConfig), WingRefineExpConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(WorldBossConfig), WorldBossConfigWrap.__Register);
        }
        
        static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(WorldBossConfig), WorldBossConfigWrap.__Register);
        
            translator.DelayWrapLoader(typeof(XBGetItemConfig), XBGetItemConfigWrap.__Register);
        
@@ -799,13 +802,13 @@
        
            translator.DelayWrapLoader(typeof(UnityEngine.Transform), UnityEngineTransformWrap.__Register);
        
            translator.DelayWrapLoader(typeof(UnityEngine.Resources), UnityEngineResourcesWrap.__Register);
        }
        
        static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(UnityEngine.Resources), UnityEngineResourcesWrap.__Register);
        
            translator.DelayWrapLoader(typeof(UnityEngine.TextAsset), UnityEngineTextAssetWrap.__Register);
        
@@ -956,13 +959,13 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.Dungeon), SnxxzUIDungeonWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.DungeonLiquidModel), SnxxzUIDungeonLiquidModelWrap.__Register);
        }
        
        static void wrapInit6(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(Snxxz.UI.DungeonLiquidModel), SnxxzUIDungeonLiquidModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.DungeonModel), SnxxzUIDungeonModelWrap.__Register);
        
@@ -1113,13 +1116,13 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.KingTreasureShowModel), SnxxzUIKingTreasureShowModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
        }
        
        static void wrapInit7(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.CrossServerLogin), SnxxzUICrossServerLoginWrap.__Register);
        
@@ -1270,13 +1273,13 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.RoleModel), SnxxzUIRoleModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.RolePointModel), SnxxzUIRolePointModelWrap.__Register);
        }
        
        static void wrapInit8(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(Snxxz.UI.RolePointModel), SnxxzUIRolePointModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.TitleModel), SnxxzUITitleModelWrap.__Register);
        
@@ -1427,14 +1430,14 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.MultipleExpModel), SnxxzUIMultipleExpModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.MultipleRealmPointModel), SnxxzUIMultipleRealmPointModelWrap.__Register);
        }
        
        static void wrapInit9(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.MultipleRealmPointModel), SnxxzUIMultipleRealmPointModelWrap.__Register);
            translator.DelayWrapLoader(typeof(Snxxz.UI.OperationTimeHepler), SnxxzUIOperationTimeHeplerWrap.__Register);
        
        
Lua/Gen/XLuaGenAutoRegister.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 76ab9fef6104ded43916de2a746cc1bb
timeCreated: 1550368559
timeCreated: 1550541197
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Lua/Gen/link.xml
@@ -92,6 +92,7 @@
        <type fullname="GatherSoulComposeConfig" preserve="all"/>
        <type fullname="GatherSoulConfig" preserve="all"/>
        <type fullname="GatherSoulPropertyConfig" preserve="all"/>
        <type fullname="GemItemConfig" preserve="all"/>
        <type fullname="GetItemWaysConfig" preserve="all"/>
        <type fullname="GmCmdConfig" preserve="all"/>
        <type fullname="GodWeaponConfig" preserve="all"/>
System/BossShow/BossShowModel.cs
@@ -249,7 +249,7 @@
        private void ActiveBossShowCam(bool _active)
        {
            var prefab = UILoader.LoadPrefab(actorShowModel.cam);
            var prefab = UILoader.LoadBossShow(actorShowModel.cam);
            if (_active && (actorShowModel.type == 3 || showTargetList.Count > 0))
            {
                bossShowCam = UnityEngine.Object.Instantiate<GameObject>(prefab);
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOne.cs
@@ -167,6 +167,7 @@
        isClientCrossServerOneVsOne = true;
        LoadingWin.isCrossServerOneVsOne = true;
        WindowCenter.Instance.Open<LoadingWin>();
        MapTransferUtility.Instance.Clear();
        ClientDungeonStageUtility.SetClientDungeon(true, mapId);
        var sendInfo = new CA231_tagCMClientStartCustomScene();
        GameNetSystem.Instance.SendInfo(sendInfo);
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
@@ -54,11 +54,6 @@
    {
        base.OnStageLoadFinish();
        if (PlayerDatas.Instance.hero != null)
        {
            CameraController.Instance.Apply();
        }
        if (opponentPlayer != null)
        {
            opponentPlayer.Destroy();
@@ -69,7 +64,8 @@
        var playerName = CrossServerLogin.Instance.oneVsOnePlayerData.opponentName;
        var level = CrossServerLogin.Instance.oneVsOnePlayerData.opponentLevel;
        var maxHp = CrossServerLogin.Instance.oneVsOnePlayerData.opponentMaxHp;
        playerInfo = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(1, job, playerName, level, maxHp);
        var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
        playerInfo = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, maxHp);
        opponentPlayer = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Enemy);
        opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint;
System/FairyAu/FairyGrabBossBehaviour.cs
@@ -7,11 +7,8 @@
namespace Snxxz.UI
{
    public class FairyGrabBossBehaviour : ScrollItem
    public class FairyGrabBossBehaviour : AutoSelectScrollItem
    {
        [SerializeField] AutoSelectCyclicScroll m_Scroll;
        [SerializeField] SmoothMask m_SmoothMask;
        [SerializeField] RectTransform m_CenterSign;
        [SerializeField] RectTransform m_ContainerSelect;
        [SerializeField] RectTransform m_ContainerKilling;
        [SerializeField] RectTransform m_ContainerKilled;
@@ -20,6 +17,8 @@
        [SerializeField] Text m_MapName;
        [SerializeField] Text m_BossType;
        [SerializeField] Text m_BossName;
        [SerializeField] protected Material m_NormalMaterial;
        [SerializeField] protected Material m_GrayMaterial;
        [SerializeField] Image m_RealmIcon;
        [SerializeField] Text m_Progress;
        [SerializeField] Button m_Select;
@@ -34,7 +33,7 @@
        private void SelectBoss()
        {
            m_Scroll.TrySelectData(bossId);
            autoSelectScroll.TrySelectData(bossId);
        }
        public override void Display(object _data)
@@ -129,17 +128,15 @@
            }
            m_ContainerKilled.gameObject.SetActive(killed && opened);
            m_ContainerKilling.gameObject.SetActive(!killed && opened);
            m_BossPortrait.material = opened && !killed ? m_SmoothMask.imageMaterials[0] : m_SmoothMask.imageMaterials[1];
            m_BossPortrait.material = opened && !killed ? m_NormalMaterial : m_GrayMaterial;
            m_ContainerMapName.gameObject.SetActive(!opened);
        }
        protected virtual void LateUpdate()
        {
            if (m_Scroll.autoSelectable && model.selectBoss != bossId && bossId > 0)
            if (autoSelectScroll.autoSelectable && model.selectBoss != bossId && bossId > 0)
            {
                if (Mathf.Abs(m_CenterSign.position.y - rectTransform.position.y) * 100f < rectTransform.rect.height * 0.45f)
                if (Mathf.Abs(centerSign.position.y - rectTransform.position.y) * 100f < rectTransform.rect.height * 0.45f)
                {
                    model.selectBoss = bossId;
                }
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs
@@ -11,13 +11,11 @@
namespace Snxxz.UI
{
    public class FindPreciousBossBriefInfoBehaviour : ScrollItem
    public class FindPreciousBossBriefInfoBehaviour : AutoSelectScrollItem
    {
        [SerializeField] protected float m_SelectedShifting = 6f;
        [SerializeField] protected CanvasGroup m_CanvasGroup;
        [SerializeField] protected AutoSelectCyclicScroll m_Scroll;
        [SerializeField] protected Transform m_CenterSign;
        [SerializeField] protected Button m_Select;
        [SerializeField] protected RectTransform m_Content;
        [SerializeField] protected Image m_BackGround;
@@ -118,7 +116,7 @@
        private void SelectBoss()
        {
            m_Scroll.TrySelectData(bossId);
            autoSelectScroll.TrySelectData(bossId);
        }
        protected virtual void OnSubscribe(int _bossId)
@@ -219,9 +217,9 @@
        protected virtual void LateUpdate()
        {
            if (m_Scroll.autoSelectable && selectedBossId != bossId && bossId > 0)
            if (autoSelectScroll.autoSelectable && selectedBossId != bossId && bossId > 0)
            {
                if (Mathf.Abs(m_CenterSign.position.y - rectTransform.position.y) * 100f < rectTransform.rect.height * 0.45f)
                if (Mathf.Abs(centerSign.position.y - rectTransform.position.y) * 100f < rectTransform.rect.height * 0.45f)
                {
                    selectedBossId = bossId;
                }
System/FindPrecious/WorldBossWin.cs
@@ -159,7 +159,7 @@
                return false;
            }
            if (CrossServerUtility.IsCrossServer())
            if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
            {
                _error = 3;
                return false;
System/Mount/MountSkillWin.cs
@@ -107,7 +107,7 @@
        protected override void OnPreOpen()
        {
            FlagBit = 0;
           // PlayerMountDatas.Event_MountSkillRefresh += MountSkillRefresh;
            // PlayerMountDatas.Event_MountSkillRefresh += MountSkillRefresh;
            _FlipScroll.OnRefreshData += OnRefreshActSkill;
            _FlipScroll.OnTweenCompt += OnTweenCompt;
            _dicHorse = horsemodel._DicHorse;
@@ -136,7 +136,7 @@
        {
            _FlipScroll.OnRefreshData -= OnRefreshActSkill;
            _FlipScroll.OnTweenCompt -= OnTweenCompt;
        //    PlayerMountDatas.Event_MountSkillRefresh -= MountSkillRefresh;
            //    PlayerMountDatas.Event_MountSkillRefresh -= MountSkillRefresh;
        }
        protected override void OnAfterClose()
@@ -227,12 +227,12 @@
                        if (_GetMountSkills.ContainsKey(_MountList[Index]))//解锁
                        {
                            _MountSkill.Lock.SetActive(false);
                          //  _MountSkill.MountNameTxt1.text = HorseConfig.Get(_MountSkillDic[(_MountList[Index])].HorseID).Name;
                            //  _MountSkill.MountNameTxt1.text = HorseConfig.Get(_MountSkillDic[(_MountList[Index])].HorseID).Name;
                            _MountSkill.SkillTex.material = MaterialUtility.GetUIDefaultGraphicMaterial();//亮
                        }
                        else//未解锁
                        {
                        //    _MountSkill.MountNameTxt1.text = HorseConfig.Get(_MountSkillDic[(_MountList[Index])].HorseID).Name;
                            //    _MountSkill.MountNameTxt1.text = HorseConfig.Get(_MountSkillDic[(_MountList[Index])].HorseID).Name;
                            _MountSkill.Lock.SetActive(false);
                        }
@@ -257,7 +257,7 @@
                        else
                            HouseID = 0;
                        SkillIDNow = _MountList[Index];
                     //   _MountSkill.Select.SetActive(true);
                        //   _MountSkill.Select.SetActive(true);
                        if (_GetMountSkills.ContainsKey(_MountList[Index]))
                            SkillsToUnlock(_MountList[Index]);//获得解锁技能
                        else
@@ -265,7 +265,7 @@
                    }
                    else
                    {
                    //    _MountSkill.Select.SetActive(false);
                        //    _MountSkill.Select.SetActive(false);
                    }
                }
                else
@@ -297,19 +297,18 @@
        void UnunlockedState(MountSkill _mountSkill, int SkillID)//
        {
            var skillconfig = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
            string _skillIcon = skillconfig.IconName;
            var config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
            string _skillIcon = config.IconName;
            _mountSkill.SkillTex.SetSprite(_skillIcon);
            _mountSkill.SkillTex.material = MaterialUtility.GetDefaultSpriteGrayMaterial();//灰
            _mountSkill.Lock.SetActive(true);
            _mountSkill.SkillNameTxt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName;
         //   _mountSkill.MountNameTxt1.text = "<color=#ff2828>" + HorseConfig.Get(_MountSkillDic[SkillID].HorseID).Name + "</color>";
            _mountSkill.SkillNameTxt.text = config.SkillName;
        }
        void Consumables(int SkillID)
        {
            int ItemID = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr4;
            var config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
            int ItemID = config != null ? config.ExAttr4 : 0;
            ItemConfig _Item = ItemConfig.Get(ItemID);
            _ConsumptionGoods.SetSprite(_Item.IconKey);
            _ConsumptionGoodButton.RemoveAllListeners();
@@ -317,52 +316,62 @@
            {
                ItemAttrData attrData = new ItemAttrData(_Item.ID);
                itemTipsModel.SetItemTipsModel(attrData);
            });
            int Number = playerPack.GetItemCountByID(PackType.rptItem, ItemID);
            Quantity = Number;//获取所需消耗品数量
            if (Number != 0)
            {
                string StrNum = Number.ToString() + "/" + SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr5;
                var StrNum = StringUtility.Contact(Number, "/", config != null ? config.ExAttr5 : 0);
                _StageTxt.text = UIHelper.AppendStringColor(0, StrNum);
            }
            else
            {
                string StrNum = " <color=#ff2828>" + Number.ToString() + "</color>" + UIHelper.AppendStringColor(0, "/" + (SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).ExAttr5).ToString());
                string StrNum = " <color=#ff2828>" + Number + "</color>" + UIHelper.AppendStringColor(0, "/" + (config != null ? config.ExAttr5 : 0));
                _StageTxt.text = StrNum;
            }
        }
        void UnlockingPanel(int SkillID)//未解锁面板
        {
            string _skillIcon = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).IconName;
            _SkillImg.SetSprite(_skillIcon);
            _skillName.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName;
            _UnlockDescribeBG.SetActive(false);
            _LockedDescribeBG.SetActive(true);
            _Impact1TxtA.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).Description;
            _LevelNumber.text = "0/3";
            var config = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
            if (config != null)
            {
                _SkillImg.SetSprite(config.IconName);
                _skillName.text = config.SkillName;
                _UnlockDescribeBG.SetActive(false);
                _LockedDescribeBG.SetActive(true);
                _Impact1TxtA.text = config.Description;
                _LevelNumber.text = "0/3";
            }
        }
        void SkillsToUnlock(int SkillID)//获得技能解锁技能
        {
            string _skillIcon = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).IconName;
            _SkillImg.SetSprite(_skillIcon);
            _skillName.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1).SkillName;
            var configLevel1 = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 1);
            if (configLevel1 != null)
            {
                _SkillImg.SetSprite(configLevel1.IconName);
                _skillName.text = configLevel1.SkillName;
            }
            _UnlockDescribeBG.SetActive(true);
            _LockedDescribeBG.SetActive(false);
            int SkillLV = _GetMountSkills[SkillID];//获取技能等级
            if (SkillLV >= 3)
            {
                _Impact1Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 3).Description;
                var configLevel3 = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, 3);
                _Impact1Txt.text = configLevel3 != null ? configLevel3.Description : "";
                _ImpactsTxt.SetActive(false);
            }
            else
            {
                _ImpactsTxt.SetActive(true);
                _Impact1Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV).Description;
                _Impact2Txt.text = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV + 1).Description;
                var configNow = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV);
                var configNext = SkillConfig.GetSkillTypeIDAndSkillLV(SkillID, SkillLV + 1);
                _Impact1Txt.text = configNow != null ? configNow.Description : "";
                _Impact2Txt.text = configNext != null ? configNext.Description : "";
            }
            _LevelNumber.text = SkillLV.ToString() + "/3";
        }
System/PlayerDead/ReliveWin.cs
@@ -88,7 +88,7 @@
        {
            List<int> buffIds = new List<int>();
            StatusMgr.Instance.GetBuffIds(PlayerDatas.Instance.PlayerId, ref buffIds);
            var skillConfigs = SkillConfig.GetSkillActConfigs(0, 0, DeadModel.deadBuffId);
            var skillIds = SkillConfig.GetSkills(0, 0, DeadModel.deadBuffId);
            string skillName = string.Empty;
            int buffLv = 0;
            bool isMaxBuff = false;
@@ -107,9 +107,10 @@
                }
            }
            if (skillConfigs != null && skillConfigs.Count > 0)
            if (skillIds != null && skillIds.Count > 0)
            {
                SkillConfig skillConfig = skillConfigs[0];
                var skillId = skillIds[0];
                var skillConfig = SkillConfig.Get(skillId);
                skillName = skillConfig.SkillName;
            }
            buffText.text = Language.Get("AncientBattlefield_Text_2", skillName);
System/Skill/SkillAccordWin.cs
@@ -34,7 +34,7 @@
        [SerializeField] SkillTurnplate m_SkillTurnplate;
        [SerializeField] Button m_AutoUseXp;
        [SerializeField] Image m_AutoXpCheck;
        private List<SkillConfig> skillListAct = new List<SkillConfig>();
        private List<int> skillListAct = new List<int>();
        private bool onXpCoolDown = false;
        private bool m_IsAutoUseXp = false;
@@ -189,7 +189,7 @@
                if (index < skillListAct.Count)
                {
                    if(AchievementGoto.achievementType==AchievementGoto.ExcuteSkill
                        && skillListAct[index].SkillID == m_AchieveSkillId)
                        && skillListAct[index] == m_AchieveSkillId)
                    {
                        var _effect = AchievementGuideEffectPool.Require(3);
                        _effect.transform.SetParentEx(skillTran, Vector3.zero, Vector3.zero, Vector3.one);
@@ -229,32 +229,32 @@
                DebugEx.LogErrorFormat("不存在该职业的技能{0}", _skillJobKey);
                return;
            }
            Dictionary<int, List<SkillConfig>> dic = model.skillActDict[_skillJobKey];
            Dictionary<int, List<int>> dic = model.skillActDict[_skillJobKey];
            Dictionary<int, PlayerSkillData> playerskills = PlayerDatas.Instance.skill.GetAllSkill();
            skillListAct.Clear();
            foreach (int key in dic.Keys)
            {
                List<SkillConfig> typeList = dic[key];
                SkillConfig lvCfg = typeList[0];
                foreach (SkillConfig cfg in typeList)
                List<int> typeList = dic[key];
                var skillId = typeList[0];
                foreach (var id in typeList)
                {
                    if (PlayerDatas.Instance.skill.GetSKillById(cfg.SkillID) != null)
                    if (PlayerDatas.Instance.skill.GetSKillById(id) != null)
                    {
                        lvCfg = cfg;
                        skillId = id;
                        break;
                    }
                }
                if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(lvCfg.SkillID))
                if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId))
                {
                    continue;
                }
                skillListAct.Add(lvCfg);
                skillListAct.Add(skillId);
            }
            if (skillListAct.Count < 1)
            {
                return;
            }
            model.presentSltSkillID = skillListAct[0].SkillID;
            model.presentSltSkillID = skillListAct[0];
            flipActScroll.pageCnt = Mathf.CeilToInt((float)skillListAct.Count / SkillModel.ACT_SKILL_NUM);
            UpdateSltSkill();
        }
@@ -484,7 +484,7 @@
                    m_AchieveSkillId = _skillId;
                    var _index = skillListAct.FindIndex((x) =>
                     {
                         return x.SkillID == _skillId;
                         return x == _skillId;
                     });
                    if (_index != -1)
                    {
System/Skill/SkillCell.cs
@@ -57,17 +57,17 @@
            m_Time = 0;
        }
        public void Refresh(SkillConfig skillCfg)
        public void Refresh(int skillId)
        {
            skill.SetSkillData(skillCfg.SkillID);
            if (model.presentSltSkillID == skillCfg.SkillID) {
            skill.SetSkillData(skillId);
            if (model.presentSltSkillID == skillId) {
                skill.m_SelectImg.gameObject.SetActive(true);
            }
            else {
                skill.m_SelectImg.gameObject.SetActive(false);
            }
            skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillCfg.SkillID) != null);
            skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillId) != null);
            skill.m_SkillBtn.onClick.RemoveAllListeners();
            skill.m_SkillBtn.onClick.AddListener(OnClickSkill);
        }
System/Skill/SkillModel.cs
@@ -45,7 +45,7 @@
        public int passEquipCnt { get; private set; }
        public Dictionary<int, int[]> passEquipGetWays = new Dictionary<int, int[]>();
        public Dictionary<int, string> passEquipGetWayTxts;
        public Dictionary<int, Dictionary<int, List<SkillConfig>>> skillActDict { get; private set; }
        public Dictionary<int, Dictionary<int, List<int>>> skillActDict { get; private set; }
        public List<int> betterPassSkills { get; private set; }
        public bool jumpToPass { get; set; }
        public int minTaskHole { get; private set; }
@@ -98,12 +98,12 @@
                passEquipGetWayTxts = ConfigParse.GetDic<int, string>(funcCfg.Numerical2);
            }
            funcCfg = FuncConfigConfig.Get("SkillActTypeIdSort");
            skillActDict = new Dictionary<int, Dictionary<int, List<SkillConfig>>>();
            skillActDict = new Dictionary<int, Dictionary<int, List<int>>>();
            var _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical1);
            var _dict = new Dictionary<int, List<SkillConfig>>();
            var _dict = new Dictionary<int, List<int>>();
            for (int i = 0; i < _JobTypeIds.Length; i++)
            {
                var _list = SkillConfig.GetSkillActConfigs(2, ACT_SKILL_TYPE, _JobTypeIds[i]);
                var _list = SkillConfig.GetSkills(2, ACT_SKILL_TYPE, _JobTypeIds[i]);
                if (_list != null)
                {
                    _dict.Add(_JobTypeIds[i], _list);
@@ -111,10 +111,10 @@
            }
            skillActDict.Add(2, _dict);
            _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical2);
            _dict = new Dictionary<int, List<SkillConfig>>();
            _dict = new Dictionary<int, List<int>>();
            for (int i = 0; i < _JobTypeIds.Length; i++)
            {
                var _list = SkillConfig.GetSkillActConfigs(4, ACT_SKILL_TYPE, _JobTypeIds[i]);
                var _list = SkillConfig.GetSkills(4, ACT_SKILL_TYPE, _JobTypeIds[i]);
                if (_list != null)
                {
                    _dict.Add(_JobTypeIds[i], _list);
@@ -122,10 +122,10 @@
            }
            skillActDict.Add(4, _dict);
            _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical3);
            _dict = new Dictionary<int, List<SkillConfig>>();
            _dict = new Dictionary<int, List<int>>();
            for (int i = 0; i < _JobTypeIds.Length; i++)
            {
                var _list = SkillConfig.GetSkillActConfigs(8, ACT_SKILL_TYPE, _JobTypeIds[i]);
                var _list = SkillConfig.GetSkills(8, ACT_SKILL_TYPE, _JobTypeIds[i]);
                if (_list != null)
                {
                    _dict.Add(_JobTypeIds[i], _list);
System/Skill/SkillPassWin.cs
@@ -37,7 +37,7 @@
        [SerializeField] RectTransform m_ContainerGetWay;
        [SerializeField] ClickScreenOtherSpace clickOtherSpace;
        [SerializeField, Header("特效时长")] float m_EffectDuration = 1f;
        private List<SkillConfig> skillListPass = new List<SkillConfig>();
        private List<int> skillListPass = new List<int>();
        private int presentSltEquipIndex = -1;
        Coroutine cacheCoroutine = null;
@@ -386,21 +386,21 @@
        void GetSkillList()
        {
            Dictionary<int, List<SkillConfig>> dic = SkillConfig.GetSkillWithOccpyAndType((int)Mathf.Pow(2, PlayerDatas.Instance.baseData.Job), SkillModel.PASS_SKILL_TYPE);
            Dictionary<int, List<int>> dic = SkillConfig.GetSkillWithOccpyAndType((int)Mathf.Pow(2, PlayerDatas.Instance.baseData.Job), SkillModel.PASS_SKILL_TYPE);
            Dictionary<int, PlayerSkillData> playerskills = PlayerDatas.Instance.skill.GetAllSkill();
            skillListPass.Clear();
            foreach (int key in dic.Keys)
            {
                SkillConfig lvCfg = dic[key][0];
                foreach (SkillConfig cfg in dic[key])
                var skillId = dic[key][0];
                foreach (var id in dic[key])
                {
                    if (PlayerDatas.Instance.skill.GetSKillById(cfg.SkillID) != null) { lvCfg = cfg; break; }
                    if (PlayerDatas.Instance.skill.GetSKillById(id) != null) { skillId = id; break; }
                }
                if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(lvCfg.SkillID)) continue;
                skillListPass.Add(lvCfg);
                if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId)) continue;
                skillListPass.Add(skillId);
            }
            if (skillListPass.Count < 1) return;
            model.presentSltSkillID = skillListPass[0].SkillID;
            model.presentSltSkillID = skillListPass[0];
            flipScroll.pageCnt = Mathf.CeilToInt((float)skillListPass.Count / SkillModel.PASS_SKILL_NUM);
            flipScroll.RefreshActive();
        }
System/Strengthening/WingsBouncedWin.cs
@@ -153,14 +153,13 @@
            foreach (int index in backpack_dic.Keys)
            {
                int _id = (int)backpack_dic[index].itemInfo.ItemID;
                var WingItem = WingRefineExpConfig.Get(_id);
                if (!ItemConfig.tag_Wings.ContainsKey(_id) || WingItem == null)
                int itemId = (int)backpack_dic[index].itemInfo.ItemID;
                if ( !WingRefineExpConfig.Has(itemId)|| !ItemConfig.IsWing(itemId))
                {
                    continue;
                }
                var wingConfig = ItemConfig.tag_Wings[_id];
                var wingConfig = ItemConfig.Get(itemId);
                if (wingConfig.Type == 111 && (wingConfig.JobLimit / 100) == _Job)
                {
                    WingDic.Add(index, backpack_dic[index]);
System/Strengthening/WingsRedDot.cs
@@ -130,15 +130,17 @@
            _dicWings.Clear();
            foreach (int index in backpack_dic.Keys)
            {
                var WingItem = WingRefineExpConfig.Get((int)backpack_dic[index].itemInfo.ItemID);
                if (ItemConfig.tag_Wings.ContainsKey((int)backpack_dic[index].itemInfo.ItemID) && WingItem != null)
                var item = backpack_dic[index];
                var itemId = item.itemInfo.ItemID;
                if (WingRefineExpConfig.Has(itemId) && ItemConfig.IsWing(itemId))
                {
                    WingsInformation _WingsInformation = new WingsInformation();
                    _WingsInformation.WingsID = (int)backpack_dic[index].itemInfo.ItemID;
                    _WingsInformation.WingsCount = (int)backpack_dic[index].itemInfo.ItemCount;
                    var  _WingsInformation = new WingsInformation();
                    _WingsInformation.WingsID = itemId;
                    _WingsInformation.WingsCount = item.itemInfo.ItemCount;
                    _dicWings.Add(index, _WingsInformation);
                }
            }
            var config1 = WingRefineExpConfig.Get((int)itemModel.itemInfo.ItemID);
            foreach (var key in _dicWings.Keys)
            {
System/Strengthening/WingsRefined.cs
@@ -491,17 +491,16 @@
        foreach (int index in backpack_dic.Keys)
        {
            int _id = (int)backpack_dic[index].itemInfo.ItemID;
            if (!ItemConfig.tag_Wings.ContainsKey(_id))
            if (!ItemConfig.IsWing(_id))
            {
                continue;
            }
            var wingConfig = ItemConfig.tag_Wings[_id];
            var wingConfig = ItemConfig.Get(_id);
            if (wingConfig.Type == 111 && (wingConfig.JobLimit / 100) == PlayerDatas.Instance.baseData.Job)
            {
                markingbbol = true;
            }
        }
        if (markingbbol)
        {
@@ -533,18 +532,21 @@
        {
            return;
        }
        Dictionary<int, ItemModel> backpack_Dic = rptItemPack.GetPackModelIndexDict();
        foreach (int itemIndex in backpack_Dic.Keys)
        var items = rptItemPack.GetPackModelIndexDict();
        foreach (var itemIndex in items.Keys)
        {
            var WingItem1 = WingRefineExpConfig.Get((int)backpack_Dic[itemIndex].itemInfo.ItemID);
            if (ItemConfig.tag_Wings.ContainsKey((int)backpack_Dic[itemIndex].itemInfo.ItemID) && WingItem1 != null)
            var item = items[itemIndex];
            if (WingRefineExpConfig.Has(item.itemInfo.ItemID))
            {
                _wingItemDic.Add(itemIndex, (int)backpack_Dic[itemIndex].itemInfo.ItemID);
                WingDic.Add(itemIndex, backpack_Dic[itemIndex]);
                if (ItemConfig.IsWing(item.itemInfo.ItemID))
                {
                    _wingItemDic.Add(itemIndex, item.itemInfo.ItemID);
                    WingDic.Add(itemIndex, item);
                }
            }
        }
        if (_wingItemDic.Count != 0)
        {
            foreach (var key in _wingItemDic.Keys)
System/Team/TeamInvitationEntrance.cs
@@ -36,7 +36,7 @@
        private void OnInvitationsChange()
        {
            if (CrossServerUtility.IsCrossServer())
            if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
            {
                m_Invitations.gameObject.SetActive(false);
            }
System/Team/TeamModel.cs
@@ -553,7 +553,7 @@
        public void RequestAutoMatchTeam(TeamMission _mission)
        {
            if (CrossServerUtility.IsCrossServer())
            if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching3");
                return;
System/Treasure/TreasureComponent.cs
@@ -35,22 +35,11 @@
        DemonDungeonLabel treasureLabel;
        TreasureThreeDimensionsBehaviour m_ThreeDimensionsBehaviour;
        #region 红点
        private Transform potentialRed;
        private Transform achievementRed;
        private Transform stageUpRed;
        static GameObjectPoolManager.GameObjectPool m_PotentialRedpool;
        static GameObjectPoolManager.GameObjectPool m_AchievementRedpool;
        static GameObjectPoolManager.GameObjectPool m_StageUpRedpool;
        #endregion
        SFXController treasureEffect;
        SFXController backLightEffect;
        SFXController lockEffect;
        SFXController challengeSfx;
        SFXController specialSfx;
        SFXController highestSfx;
        public Treasure3DConfig paramConfig { get; set; }
@@ -114,7 +103,7 @@
            {
                if (paramConfig != null && !paramConfig.treasureNamePrefab.Equals(string.Empty))
                {
                    var _instance = UILoader.LoadPrefab(paramConfig.treasureNamePrefab);
                    var _instance = UILoader.LoadTreasure("Misc", paramConfig.treasureNamePrefab);
                    if (_instance != null)
                    {
                        _instance = GameObject.Instantiate(_instance);
@@ -140,7 +129,7 @@
            GameObjectPoolManager.GameObjectPool _pool = null;
            if (!m_BottomPoolDict.TryGetValue(category, out _pool))
            {
                var _bottomPrefab = UILoader.LoadPrefab(StringUtility.Contact("TreasureBottom_", category));
                var _bottomPrefab = UILoader.LoadTreasure("Misc", StringUtility.Contact("TreasureBottom_", category));
                m_CacheBottomScale = _bottomPrefab.transform.localScale;
                _pool = GameObjectPoolManager.Instance.RequestPool(_bottomPrefab);
                m_BottomPoolDict.Add(category, _pool);
@@ -323,7 +312,7 @@
                RecycleTreasureEffect();
                RequestLockEffect();
            }
            if (UI3DTreasureSelectStage.Instance.CloserComplete
            if (UI3DTreasureSelectStage.Instance.CloserComplete
                && UI3DTreasureSelectStage.Instance.selectTreasure == treasureId)
            {
                CloserState();
@@ -506,7 +495,7 @@
            GameObjectPoolManager.GameObjectPool pool;
            if (m_ConditionPoolDict.TryGetValue(category, out pool) == false)
            {
                var _prefab = UILoader.LoadPrefab(StringUtility.Contact(category, "TreasureCondition"));
                var _prefab = UILoader.LoadTreasure("Misc", StringUtility.Contact(category, "TreasureCondition"));
                pool = GameObjectPoolManager.Instance.RequestPool(_prefab);
                m_ConditionPoolDict.Add(category, pool);
            }
@@ -577,7 +566,7 @@
            GameObjectPoolManager.GameObjectPool pool;
            if (m_LabelPoolDict.TryGetValue(category, out pool) == false)
            {
                var _prefab = UILoader.LoadPrefab(StringUtility.Contact(category, "TreasureLabel"));
                var _prefab = UILoader.LoadTreasure("Misc", StringUtility.Contact(category, "TreasureLabel"));
                pool = GameObjectPoolManager.Instance.RequestPool(_prefab);
                m_LabelPoolDict.Add(category, pool);
            }
@@ -671,7 +660,7 @@
            }
            if (m_TreasureCanvaPool == null)
            {
                var prefab = UILoader.LoadPrefab("TreasureCanva");
                var prefab = UILoader.LoadTreasure("Misc", "TreasureCanva");
                if (prefab)
                {
                    m_TreasureCanvaPool = GameObjectPoolManager.Instance.RequestPool(prefab);
System/Treasure/UI3DTreasureSelectStage.cs
@@ -139,7 +139,7 @@
            {
                if (m_Instance == null)
                {
                    var gameObject = Instantiate(UILoader.LoadPrefab("UI3DTreasureSelectStage"));
                    var gameObject = Instantiate(UILoader.LoadTreasure("Misc","UI3DTreasureSelectStage"));
                    m_Instance = gameObject.GetComponent<UI3DTreasureSelectStage>();
                    m_Instance.transform.position = new Vector3(0, 3000, 4000);
                    m_Instance.name = "UI3DTreasureSelectStage";
System/WindowBase/WindowCenter.cs
@@ -606,7 +606,8 @@
                        && !ExistAnyFullScreenOrMaskWinLEqual(WindowType.Base)
                        && !IsOpen("DefaultDialogueBoxWin")
                        && !IsOpen("DialogueDuidanceWin")
                        && !IsOpen("TaskBoxBGMWin");
                        && !IsOpen("TaskBoxBGMWin")
                        && !IsOpen("WelcomeWin");
                    if (exceptOpen != IsOpen("MainInterfaceWin"))
                    {
UI/Common/AutoSelectCyclicScroll.cs
@@ -12,8 +12,10 @@
    public class AutoSelectCyclicScroll : CyclicScroll
    {
        public bool autoSelectable
        {
        [SerializeField] RectTransform m_CenterSign;
        public bool autoSelectable {
            get { return Time.time > allowSelectTime; }
        }
@@ -34,8 +36,20 @@
        public override void ReArrange()
        {
            base.ReArrange();
            foreach (var item in infiniteItems)
            {
                var autoSelectItem = item as AutoSelectScrollItem;
                if (autoSelectItem != null)
                {
                    autoSelectItem.autoSelectScroll = this;
                    autoSelectItem.centerSign = m_CenterSign;
                }
            }
        }
    }
}
UI/Common/AutoSelectScrollItem.cs
New file
@@ -0,0 +1,16 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
namespace Snxxz.UI
{
    public class AutoSelectScrollItem : ScrollItem
    {
        public AutoSelectCyclicScroll autoSelectScroll { get; set; }
        public RectTransform centerSign { get; set; }
    }
}
UI/Common/AutoSelectScrollItem.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6ae9f97e721931f4585e010e53f47a5b
timeCreated: 1497924839
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
UI/Common/CyclicScroll.cs
@@ -8,44 +8,30 @@
public class CyclicScroll : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    [SerializeField] RectTransform m_Content;
    public RectTransform content {
        get { return m_Content; }
    }
    public RectTransform content { get { return m_Content; } }
    [SerializeField] protected BoundOffset m_BoundOffset;
    [SerializeField] protected Vector2 m_CellSize = new Vector2(100, 100);
    public Vector2 cellSize {
        get { return m_CellSize; }
    }
    public Vector2 cellSize { get { return m_CellSize; } }
    [SerializeField] protected Vector2 m_Spacing;
    public Vector2 spacing {
        get { return m_Spacing; }
    }
    public Vector2 spacing { get { return m_Spacing; } }
    [SerializeField] Align m_Align = Align.Top;
    public Align align {
        get { return m_Align; }
    }
    public Align align { get { return m_Align; } }
    [SerializeField] bool m_ElasticityOn = true;
    public bool elasticityOn {
        get { return m_ElasticityOn; }
    }
    public bool elasticityOn { get { return m_ElasticityOn; } }
    [SerializeField] private float m_Elasticity = 0.1f;
    public float elasticity {
        get {
            return m_Elasticity;
        }
    }
    public float elasticity { get { return m_Elasticity; } }
    [SerializeField] private float m_DecelerationRate = 0.135f;
    public float decelerationRate {
        get {
            return m_DecelerationRate;
        }
    }
    public float decelerationRate { get { return m_DecelerationRate; } }
    [SerializeField] string m_ChildPrefabName = string.Empty;
    [SerializeField] string m_ChildDisplayName = string.Empty;
    [SerializeField] int m_ChildCount = 5;
    public float normalizedPosition {
        get {
@@ -157,7 +143,7 @@
        get; set;
    }
    public virtual void Init<T>( List<T> _datas, bool _stepByStep = false)
    public virtual void Init<T>(List<T> _datas, bool _stepByStep = false)
    {
        if (_datas == null)
        {
@@ -590,28 +576,24 @@
    {
        velocity = 0f;
        autoLerp = false;
        CreateElements();
        ElementsMatch();
        Arrange(align);
    }
    private void FillBatchData(int _startIndex)
    private void CreateElements()
    {
        int min = Mathf.Min(infiniteItems.Count, dataCount);
        preIndex = Mathf.Clamp(_startIndex, 0, dataCount - min);
        hostIndex = preIndex + min - 1;
        for (int i = 0; i < infiniteItems.Count; i++)
        var items = this.content.GetComponentsInChildren<ScrollItem>(true);
        if (items.Length < m_ChildCount)
        {
            var item = infiniteItems[i];
            if (i <= hostIndex - preIndex)
            var dif = m_ChildCount - items.Length;
            if (!string.IsNullOrEmpty(m_ChildPrefabName) && !string.IsNullOrEmpty(m_ChildDisplayName))
            {
                item.gameObject.SetActive(true);
                item.Display(datas[preIndex + i]);
            }
            else
            {
                item.gameObject.SetActive(false);
                item.Dispose();
                for (var i = 0; i < dif; i++)
                {
                    var instance = UIUtility.CreateWidget(m_ChildPrefabName, m_ChildDisplayName);
                    instance.transform.SetParentEx(this.m_Content, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            }
        }
    }
@@ -674,6 +656,28 @@
        content.anchoredPosition = Vector2.zero;
    }
    private void FillBatchData(int _startIndex)
    {
        int min = Mathf.Min(infiniteItems.Count, dataCount);
        preIndex = Mathf.Clamp(_startIndex, 0, dataCount - min);
        hostIndex = preIndex + min - 1;
        for (int i = 0; i < infiniteItems.Count; i++)
        {
            var item = infiniteItems[i];
            if (i <= hostIndex - preIndex)
            {
                item.gameObject.SetActive(true);
                item.Display(datas[preIndex + i]);
            }
            else
            {
                item.gameObject.SetActive(false);
                item.Dispose();
            }
        }
    }
    private Vector2 CalculateElementOffset(Align _align)
    {
        switch (_align)
UI/Common/ScrollItem.cs
@@ -4,23 +4,27 @@
using UnityEngine.UI;
using System;
public class ScrollItem:MonoBehaviour {
public class ScrollItem : MonoBehaviour
{
    RectTransform m_RectTransform;
    public RectTransform rectTransform {
        get {
            if(m_RectTransform == null) {
            if (m_RectTransform == null)
            {
                m_RectTransform = this.AddMissingComponent<RectTransform>();
            }
            return m_RectTransform;
        }
    }
    public virtual void Display(object _data) {
    public virtual void Display(object _data)
    {
        this.gameObject.SetActive(true);
    }
    public virtual void Dispose() {
    public virtual void Dispose()
    {
    }
UI/Common/UI3DHeroSkillShow.cs
@@ -14,7 +14,7 @@
            get {
                if (m_Instance == null)
                {
                    var gameObject = Instantiate(UILoader.LoadPrefab("UI3DHeroSkillShow"));
                    var gameObject = Instantiate(UILoader.LoadTreasure("Misc", "UI3DHeroSkillShow"));
                    m_Instance = gameObject.GetComponent<UI3DHeroSkillShow>();
                    Instance.transform.position = new Vector3(0, 4000, 5000);
                    m_Instance.name = "UI3DHeroSkillShow";
UI/Common/UI3DModelFactory.cs
@@ -241,11 +241,27 @@
        if (instance == null)
        {
            var config = TreasureConfig.Get(_id);
            var prefab = UILoader.LoadPrefab(config.Model);
            var folder = string.Empty;
            switch ((TreasureCategory)config.Category)
            {
                case TreasureCategory.Human:
                    folder = "RenZu";
                    break;
                case TreasureCategory.Demon:
                    folder = "MoZu";
                    break;
                case TreasureCategory.Fairy:
                    folder = "XianZu";
                    break;
                default:
                    break;
            }
            var prefab = UILoader.LoadTreasure(folder, config.Model);
            instance = GameObject.Instantiate(prefab);
            treasureModels[_id] = instance;
            UILoader.UnLoadPrefab(config.Model);
            UILoader.UnLoadTreasure(folder, config.Model);
        }
        var animator = instance.GetComponent<Animator>();
@@ -298,7 +314,7 @@
    public static GameObject LoadUIGodWeapon(int _type)
    {
        var prefab = UILoader.LoadPrefab(GeneralDefine.godWeaponMobs[_type]);
        var prefab = UILoader.LoadGodWeapon(GeneralDefine.godWeaponMobs[_type]);
        var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
        var model = pool.Request();
@@ -322,7 +338,7 @@
        {
            return;
        }
        var prefab = UILoader.LoadPrefab(GeneralDefine.godWeaponMobs[_type]);
        var prefab = UILoader.LoadGodWeapon(GeneralDefine.godWeaponMobs[_type]);
        var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
        var animator = _model.GetComponent<Animator>();
Utility/ConfigInitiator.cs
@@ -316,6 +316,12 @@
    {
        switch (configName)
        {
            case "ItemConfig":
                ItemConfig.GemItemInit();
                break;
            case "SkillConfig":
                SkillConfig.SkillClassifingInit();
                break;
            case "FuncConfigConfig":
                GeneralDefine.Init();
                break;