少年修仙传客户端代码仓库
client_Zxw
2019-01-22 1d15ca7477ef5fa9b902a252330db9831501fc28
Merge remote-tracking branch 'origin/master' into SpringFestival

Conflicts:
System/WindowBase/ModelCenter.cs
48个文件已添加
46个文件已修改
4982 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Evt.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MapData.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MapTrigger.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MonsterData.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_SceneObjectData.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_TransferPoint.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Trasfer.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Data/MapData.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Editor/EditorResources/EditorSkin.guiskin 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Editor/MapEditor.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H05_PlayerMove/DTC0501_tagObjMove.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_Auto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_D5_Hlyy.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/HeroBehaviour.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Skill/AttackHandler.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/Bhv_FindEnemy.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Pet.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageManager.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/CrossServerUtilityWrap.cs 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/CrossServerUtilityWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/DelegatesGensBridge.cs 392 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SDKUtilityWrap.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs 888 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/link.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/RankingWin.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonBuyTimesWin.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonFightWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonInspireBehaviour.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonRankBehaviour.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/TargetBriefInfoWin.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousBossRebornBehaviour.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousModel.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/LootPreciousFrameWin.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossModel.cs 460 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossWin.cs 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipTip.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/InGamePushContainer.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/PlayerDead/ReliveWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/SortTable.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,8 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HB413_tagMCPlayerSkills), typeof(DTCB413_tagMCPlayerSkills));
        Register(typeof(HB212_tagMCZhuXianBossCnt), typeof(DTCB212_tagMCZhuXianBossCnt));
        Register(typeof(H0208_tagTalkCountry), typeof(DTC0208_tagTalkCountry));
        Register(typeof(HB102_tagMCClothesCoatSkinState), typeof(DTCB102_tagMCClothesCoatSkinState));
        Register(typeof(HA112_tagMCDBPlayer), typeof(DTCA112_tagMCDBPlayer));
Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs
New file
@@ -0,0 +1,56 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Friday, January 18, 2019
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class JadeDynastyBossConfig : ConfigBase {
        public int NPCID { get ; private set ; }
        public int LineID { get ; private set ; }
        public int Time { get ; private set ; }
        public int RealmLV { get ; private set ; }
        public int ZhuXianScore { get ; private set ; }
        public string dropItems { get ; private set; }
        public string PortraitID { get ; private set; }
        public override string getKey()
        {
            return NPCID.ToString();
        }
        public override void Parse() {
            try
            {
                NPCID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                LineID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
                Time=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
                RealmLV=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0;
                ZhuXianScore=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0;
                dropItems = rawContents[5].Trim();
                PortraitID = rawContents[6].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: bc9f70989c6d3344aad5bd0dbda7bc2b
timeCreated: 1547804881
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -225,6 +225,7 @@
        AddAsyncTask<FashionDressConfig>();
        AddAsyncTask<WeekPartyPointConfig>();
        AddAsyncTask<SceneReplaceConfig>();
        AddAsyncTask<JadeDynastyBossConfig>();
        while (!AllCompleted())
        {
Core/MapEditor/Behavior/Bhv_Evt.cs
@@ -10,6 +10,12 @@
        [HideInInspector]
        public Evt.E_EventType type;
        public virtual void Import(BinaryReader br)
        {
            type = (Evt.E_EventType)br.ReadByte();
            id = br.ReadByte();
        }
#if UNITY_EDITOR
        [HideInInspector]
@@ -20,9 +26,9 @@
        {
            bw.Write((byte)type);
            bw.Write(id);
            bw.Write((float)System.Math.Round(transform.position.x));
            bw.Write((float)System.Math.Round(transform.position.y));
            bw.Write((float)System.Math.Round(transform.position.z));
            bw.Write((float)System.Math.Round(transform.position.x, 2));
            bw.Write((float)System.Math.Round(transform.position.y, 2));
            bw.Write((float)System.Math.Round(transform.position.z, 2));
        }
        public virtual void Load(BinaryReader br)
Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
@@ -20,6 +20,41 @@
        [HideInInspector]
        private string newSceneObjResName = "";
        public override void Save(BinaryWriter bw)
        {
            base.Save(bw);
            bw.Write(sceneObjList.Count);
            foreach (var _sceneObject in sceneObjList)
            {
                _sceneObject.Save(bw);
            }
        }
        public override void Export(BinaryWriter bw)
        {
            base.Export(bw);
            bw.Write(sceneObjList.Count);
            foreach (var _sceneObject in sceneObjList)
            {
                _sceneObject.Export(bw);
            }
        }
        public override void Load(BinaryReader br)
        {
            base.Load(br);
            int _count = br.ReadInt32();
            for (int i = 0; i < _count; ++i)
            {
                string _resName = br.ReadString();
                var _sceneData = CreateSceneObject(_resName);
                _sceneData.transform.SetParent(transform);
                _sceneData.Load(br);
                sceneObjList.Add(_sceneData);
            }
        }
        public override bool DrawUI(GUISkin guiSkin)
        {
            bool _result = false;
@@ -58,8 +93,7 @@
                newSceneObjResName = EditorGUILayout.TextField(newSceneObjResName, guiSkin.textField, GUILayout.Width(100), GUILayout.Height(20));
                if (GUILayout.Button("添加", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
                {
                    Debug.Log("!!!");
                    var _sceneObject = CreateSceneObject();
                    var _sceneObject = CreateSceneObject(newSceneObjResName);
                    if (_sceneObject)
                    {
                        sceneObjList.Add(_sceneObject);
@@ -70,7 +104,40 @@
                if (showSceneObjList)
                {
                    for (int i = sceneObjList.Count - 1; i >= 0; --i)
                    {
                        EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
                        EditorGUILayout.LabelField(string.Format("{0}. ResName", (i + 1)), guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
                        var _npcID = sceneObjList[i].resName;
                        EditorGUILayout.TextField(sceneObjList[i].resName, guiSkin.textField, GUILayout.Height(20));
                        sceneObjList[i].isObstacle = GUILayout.Toggle(sceneObjList[i].isObstacle, "障碍", guiSkin.button, GUILayout.Width(50), GUILayout.Height(20));
                        if (GUILayout.Button("定高", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
                        {
                            Vector3 _pos = sceneObjList[i].transform.position;
                            _pos.y = 0;
                            RaycastHit _hit;
                            Ray _ray = new Ray(_pos + Vector3.up * 100, Vector3.down);
                            if (Physics.Raycast(_ray, out _hit, 200, LayerUtility.WalkbleMask))
                            {
                                sceneObjList[i].transform.position = _hit.point;
                            }
                        }
                        if (GUILayout.Button("查找", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
                        {
                            Selection.activeGameObject = sceneObjList[i].gameObject;
                            if (Selection.activeGameObject)
                            {
                                SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
                            }
                        }
                        if (GUILayout.Button("删除", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
                        {
                            DestroyImmediate(sceneObjList[i].gameObject);
                            sceneObjList.RemoveAt(i);
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                }
                EditorGUILayout.EndVertical();
            }
@@ -80,11 +147,11 @@
            return _result;
        }
        private Bhv_SceneObjectData CreateSceneObject()
        private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
        {
            if (!string.IsNullOrEmpty(newSceneObjResName))
            if (!string.IsNullOrEmpty(sceneName))
            {
                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + newSceneObjResName + ".prefab";
                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
                var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
                if (!_obj)
                {
@@ -93,7 +160,7 @@
                }
                _obj = Instantiate(_obj);
                var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
                _sceneObjData.resName = newSceneObjResName;
                _sceneObjData.resName = sceneName;
                RaycastHit _hit;
                Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
                if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
Core/MapEditor/Behavior/Bhv_MapData.cs
@@ -101,6 +101,14 @@
                    eventList.Add(_eventBhv);
                    _eventBhv.Load(br);
                }
                else if (_type == Evt.E_EventType.SceneObject)
                {
                    var _eventBhv = _go.AddComponent<Bhv_Evt_RefreshSceneObject>();
                    _eventBhv.type = _type;
                    _eventBhv.transform.SetParent(transform.Find(NodeName_EventList));
                    eventList.Add(_eventBhv);
                    _eventBhv.Load(br);
                }
            }
            _count = br.ReadInt32();
            for (int i = 0; i < _count; ++i)
Core/MapEditor/Behavior/Bhv_MapTrigger.cs
@@ -10,24 +10,35 @@
{
    public class Bhv_MapTrigger : MonoBehaviour
    {
        public enum E_TriggerType
        {
            Trigger,
            EnterStage
        }
        [HideInInspector]
        public int id;
        [HideInInspector]
        public E_TriggerType triggerType = E_TriggerType.Trigger;
        [HideInInspector]
        public Evt.E_EventType type = Evt.E_EventType.Enemy;
        [HideInInspector]
        public int prevID = -1;
        [HideInInspector]
        public BoxCollider boxCollider;
        private bool showDetail = false;
        private bool showEventList = false;
        [HideInInspector]
        public List<int> eventIDList = new List<int>();
#if UNITY_EDITOR
        [HideInInspector]
        public BoxCollider boxCollider;
        private bool showDetail = false;
        private bool showEventList = false;
        public void Save(BinaryWriter bw)
        {
            bw.Write(id);
            bw.Write((byte)triggerType);
            bw.Write((byte)type);
            bw.Write(prevID);
            bw.Write((float)System.Math.Round(transform.position.x, 2));
@@ -51,6 +62,7 @@
        public void Load(BinaryReader br)
        {
            id = br.ReadInt32();
            triggerType = (E_TriggerType)br.ReadByte();
            type = (Evt.E_EventType)br.ReadByte();
            prevID = br.ReadInt32();
            float _pX = br.ReadSingle();
@@ -92,18 +104,31 @@
            if (showDetail)
            {
                EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
                EditorGUILayout.LabelField("前置触发器ID", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
                EditorGUILayout.LabelField("前置触发器", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
                prevID = EditorGUILayout.IntField(prevID, guiSkin.textField, GUILayout.Height(20));
                EditorGUILayout.LabelField("触发器类型", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
                triggerType = (E_TriggerType)EditorGUILayout.EnumPopup(triggerType, guiSkin.customStyles[1], GUILayout.Height(20), GUILayout.Width(100));
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginVertical(guiSkin.customStyles[1]);
                EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
                showEventList = EditorGUILayout.Foldout(showEventList, "  触发事件列表", true, guiSkin.customStyles[3]);
                if (eventIDList.Count > 0)
                {
                    showEventList = EditorGUILayout.Foldout(showEventList, "  触发事件列表", true, guiSkin.customStyles[3]);
                }
                else
                {
                    EditorGUILayout.LabelField("  触发事件列表:", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(100));
                    GUILayout.FlexibleSpace();
                }
                if (GUILayout.Button("添加", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
                {
                    eventIDList.Add(0);
                    showEventList = true;
                }
                EditorGUILayout.EndHorizontal();
                if (showEventList)
                {
                    for (int i = eventIDList.Count - 1; i >= 0; --i)
Core/MapEditor/Behavior/Bhv_MonsterData.cs
@@ -10,13 +10,15 @@
        [HideInInspector]
        public byte ai;
#if UNITY_EDITOR
        public void Save(BinaryWriter bw)
        {
            bw.Write(npcID);
            bw.Write(ai);
            bw.Write(Mathf.Round(transform.position.x));
            bw.Write(Mathf.Round(transform.position.y));
            bw.Write(Mathf.Round(transform.position.z));
            bw.Write((float)System.Math.Round(transform.position.x, 2));
            bw.Write((float)System.Math.Round(transform.position.y, 2));
            bw.Write((float)System.Math.Round(transform.position.z, 2));
        }
        public void Load(BinaryReader br)
@@ -34,5 +36,7 @@
        {
            Save(bw);
        }
#endif
    }
}
Core/MapEditor/Behavior/Bhv_SceneObjectData.cs
@@ -1,23 +1,80 @@
using System.IO;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
public class Bhv_SceneObjectData : MonoBehaviour
{
    [HideInInspector]
    public string resName;
    public bool isObstacle = false;
#if UNITY_EDITOR
    public void Save(BinaryWriter bw)
    {
        bw.Write(resName);
        bw.Write(isObstacle);
        bw.Write((float)System.Math.Round(transform.position.x, 2));
        bw.Write((float)System.Math.Round(transform.position.y, 2));
        bw.Write((float)System.Math.Round(transform.position.z, 2));
        bw.Write((float)System.Math.Round(transform.eulerAngles.y, 2));
    }
    public void Load(BinaryReader br)
    {
        resName = br.ReadString();
        name = "RefreshMonster_" + resName;
        // 加载逻辑原因在父节点进行读取
        // resName = br.ReadString();
        isObstacle = br.ReadBoolean();
        float _x = br.ReadSingle();
        float _y = br.ReadSingle();
        float _z = br.ReadSingle();
        float _eurlerAngle = br.ReadSingle();
        name = "RefreshSceneObject_" + resName;
        transform.position = new Vector3(_x, _y, _z);
        transform.eulerAngles = new Vector3(0, _eurlerAngle, 0);
    }
    public void Export(BinaryWriter bw)
    {
        Save(bw);
    }
    private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
    {
        if (!string.IsNullOrEmpty(sceneName))
        {
            string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
            var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
            if (!_obj)
            {
                Debug.LogError("所要创建的资源不存在: " + _path);
                return null;
            }
            _obj = Instantiate(_obj);
            var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
            _sceneObjData.resName = sceneName;
            RaycastHit _hit;
            Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
            if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
            {
                _sceneObjData.transform.position = _hit.point;
            }
            _sceneObjData.transform.SetParent(transform);
            _sceneObjData.transform.eulerAngles = Vector3.zero;
            _sceneObjData.transform.localScale = Vector3.one;
            Selection.activeGameObject = _sceneObjData.gameObject;
            if (Selection.activeGameObject)
            {
                SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
            }
            return _sceneObjData;
        }
        return null;
    }
#endif
}
Core/MapEditor/Behavior/Bhv_TransferPoint.cs
@@ -7,16 +7,19 @@
    {
        [HideInInspector]
        public int effectID = -1;
#if UNITY_EDITOR
        [HideInInspector]
        public CapsuleCollider capsuleCollider;
        public void Save(BinaryWriter bw)
        {
            bw.Write(effectID);
            bw.Write((float)System.Math.Round(transform.position.x));
            bw.Write((float)System.Math.Round(transform.position.y));
            bw.Write((float)System.Math.Round(transform.position.z));
            bw.Write((float)System.Math.Round(capsuleCollider.radius));
            bw.Write((float)System.Math.Round(transform.position.x, 2));
            bw.Write((float)System.Math.Round(transform.position.y, 2));
            bw.Write((float)System.Math.Round(transform.position.z, 2));
            bw.Write((float)System.Math.Round(capsuleCollider.radius, 2));
        }
        public void Load(BinaryReader br)
@@ -34,5 +37,7 @@
        {
            Save(bw);
        }
#endif
    }
}
Core/MapEditor/Behavior/Bhv_Trasfer.cs
@@ -18,10 +18,11 @@
        public int param;
        [HideInInspector]
        public List<Bhv_TransferPoint> pointList = new List<Bhv_TransferPoint>();
        private bool showDetail;
#if UNITY_EDITOR
        private bool showDetail;
        public void Save(BinaryWriter bw)
        {
            bw.Write((byte)transferType);
Core/MapEditor/Data/MapData.cs
@@ -7,21 +7,26 @@
    [System.Serializable]
    public class MapData
    {
        public const string MapEditorData_Suffix = "MapData_";
        public int id;
        public MapTrigger[] triggers;
        public Dictionary<int, Evt> eventDict = new Dictionary<int, Evt>();
        public MapTrasfer[] transfers;
        public static MapData LoadFormFile(string fileName)
        public static MapData LoadFormFile(int mapID)
        {
            string _path = null;
            if (AssetSource.refdataFromEditor)
            {
                _path = ResourcesPath.ResourcesOutPath + "Refdata/MapData/" + fileName + ".gd";
#if UNITY_EDITOR
                _path = ResourcesPath.ResourcesOutPath + "Refdata/ScriptableObject/MapData/" + mapID + ".gd";
#endif
            }
            else
            {
                _path = AssetVersionUtility.GetAssetFilePath(StringUtility.Contact("mapdata/", fileName, ".gd"));
                _path = AssetVersionUtility.GetAssetFilePath(StringUtility.Contact("mapdata/", mapID, ".gd"));
            }
            MapData _mapData = null;
            if (File.Exists(_path))
Core/MapEditor/Editor/EditorResources/EditorSkin.guiskin
@@ -100,11 +100,11 @@
    m_OnNormal:
      m_Background: {fileID: 11005, guid: 0000000000000000e000000000000000, type: 0}
      m_ScaledBackgrounds: []
      m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1}
      m_TextColor: {r: 0.07586217, g: 1, b: 0, a: 1}
    m_OnHover:
      m_Background: {fileID: 11004, guid: 0000000000000000e000000000000000, type: 0}
      m_ScaledBackgrounds: []
      m_TextColor: {r: 1, g: 1, b: 1, a: 1}
      m_TextColor: {r: 0.07450981, g: 1, b: 0, a: 1}
    m_OnActive:
      m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0}
      m_ScaledBackgrounds: []
@@ -151,7 +151,7 @@
    m_Normal:
      m_Background: {fileID: 11018, guid: 0000000000000000e000000000000000, type: 0}
      m_ScaledBackgrounds: []
      m_TextColor: {r: 0.89112896, g: 0.89112896, b: 0.89112896, a: 1}
      m_TextColor: {r: 1, g: 1, b: 1, a: 1}
    m_Hover:
      m_Background: {fileID: 11014, guid: 0000000000000000e000000000000000, type: 0}
      m_ScaledBackgrounds: []
@@ -191,7 +191,7 @@
      m_Top: 4
      m_Bottom: 4
    m_Padding:
      m_Left: 15
      m_Left: 3
      m_Right: 0
      m_Top: 3
      m_Bottom: 0
@@ -211,7 +211,7 @@
    m_ContentOffset: {x: 0, y: 0}
    m_FixedWidth: 0
    m_FixedHeight: 0
    m_StretchWidth: 1
    m_StretchWidth: 0
    m_StretchHeight: 0
  m_label:
    m_Name: label
@@ -1409,7 +1409,7 @@
    m_Font: {fileID: 0}
    m_FontSize: 12
    m_FontStyle: 0
    m_Alignment: 4
    m_Alignment: 3
    m_WordWrap: 0
    m_RichText: 1
    m_TextClipping: 0
Core/MapEditor/Editor/MapEditor.cs
@@ -100,7 +100,15 @@
            EditorGUILayout.BeginVertical(gUISkin.box);
            EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
            EditorGUI.indentLevel += 1;
            _mapData.showTriggerList = EditorGUILayout.Foldout(_mapData.showTriggerList, "  触发器列表", true, gUISkin.customStyles[3]);
            if (_mapData.triggerList.Count > 0)
            {
                _mapData.showTriggerList = EditorGUILayout.Foldout(_mapData.showTriggerList, "  触发器列表", true, gUISkin.customStyles[3]);
            }
            else
            {
                EditorGUILayout.LabelField("触发器列表", gUISkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(100));
                GUILayout.FlexibleSpace();
            }
            EditorGUI.indentLevel -= 1;
            if (GUILayout.Button("添加", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
@@ -134,9 +142,17 @@
            EditorGUILayout.BeginVertical(gUISkin.box);
            EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
            EditorGUI.indentLevel += 1;
            _mapData.showEventList = EditorGUILayout.Foldout(_mapData.showEventList, "  事件列表", true, gUISkin.customStyles[3]);
            if (_mapData.eventList.Count > 0)
            {
                _mapData.showEventList = EditorGUILayout.Foldout(_mapData.showEventList, "  事件列表", true, gUISkin.customStyles[3]);
            }
            else
            {
                EditorGUILayout.LabelField("事件列表", gUISkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(100));
                GUILayout.FlexibleSpace();
            }
            EditorGUI.indentLevel -= 1;
            eventType = (Evt.E_EventType)EditorGUILayout.EnumPopup(eventType, gUISkin.box, GUILayout.Height(22), GUILayout.Width(100));
            eventType = (Evt.E_EventType)EditorGUILayout.EnumPopup(eventType, gUISkin.customStyles[1], GUILayout.Height(22), GUILayout.Width(100));
            if (GUILayout.Button("添加", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
                CreateEvent(eventType);
@@ -169,7 +185,15 @@
            EditorGUILayout.BeginVertical(gUISkin.box);
            EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
            EditorGUI.indentLevel += 1;
            _mapData.showTransferList = EditorGUILayout.Foldout(_mapData.showTransferList, "  传送组列表", true, gUISkin.customStyles[3]);
            if (_mapData.transferList.Count > 0)
            {
                _mapData.showTransferList = EditorGUILayout.Foldout(_mapData.showTransferList, "  传送组列表", true, gUISkin.customStyles[3]);
            }
            else
            {
                EditorGUILayout.LabelField("传送组列表", gUISkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(100));
                GUILayout.FlexibleSpace();
            }
            EditorGUI.indentLevel -= 1;
            if (GUILayout.Button("添加", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
@@ -239,7 +263,7 @@
            }
            else if (type == Evt.E_EventType.SceneObject)
            {
                var _event = CreateNewGO(Bhv_MapData.NodeName_Event + "RefreshSceneObject_" +  RequestEventID());
                var _event = CreateNewGO(Bhv_MapData.NodeName_Event + "RefreshSceneObject_" + RequestEventID());
                var _eventBhv = _event.AddComponent<Bhv_Evt_RefreshSceneObject>();
                _eventBhv.type = type;
                _event.transform.SetParent(_mapData.transform.Find(Bhv_MapData.NodeName_EventList));
@@ -280,7 +304,7 @@
        {
            var _mapData = target as Bhv_MapData;
            string _defaultPath = EditorPrefs.GetString(LS_KEY_SAVEPATH, System.Environment.CurrentDirectory);
            string _path = EditorUtility.SaveFilePanel("导出数据", _defaultPath, "map_" + _mapData.id, "gd");
            string _path = EditorUtility.SaveFilePanel("导出数据", _defaultPath, "map_" + _mapData.id, "bytes");
            if (string.IsNullOrEmpty(_path))
            {
                return;
Core/NetworkPackage/DTCFile/ServerPack/H05_PlayerMove/DTC0501_tagObjMove.cs
@@ -58,8 +58,11 @@
        else
        {
            GActorNpcFight _npcFight = _actor as GActorNpcFight;
            _npcFight.ActorInfo.moveSpeed = 500f / vNetData.Speed;
            _npcFight.MoveToPosition(_destPosition);
            if (_npcFight != null && _npcFight.ActorInfo != null)
            {
                _npcFight.ActorInfo.moveSpeed = 500f / vNetData.Speed;
                _npcFight.MoveToPosition(_destPosition);
            }
        }
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
@@ -1,25 +1,26 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 08, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using Snxxz.UI;
public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA007_tagGCFBLinePlayerCnt;
        ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package);
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 08, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using Snxxz.UI;
public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA007_tagGCFBLinePlayerCnt;
        ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package);
        ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs
New file
@@ -0,0 +1,25 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 21, 2019
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
public class DTCB212_tagMCZhuXianBossCnt : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HB212_tagMCZhuXianBossCnt;
        ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 387e6e44272f55646a66a4613419d3a6
timeCreated: 1548040998
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs
New file
@@ -0,0 +1,39 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 21, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
[XLua.Hotfix]
public class DTCB413_tagMCPlayerSkills : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HB413_tagMCPlayerSkills;
        DTC0310_tagRoleSkillChange dtc = new DTC0310_tagRoleSkillChange();
        for (int i = 0; i < package.Count; i++)
        {
            var data = package.Skills[i];
            H0310_tagRoleSkillChange h0310 = new H0310_tagRoleSkillChange()
            {
                OldSkillID = 0,
                NewSkillID = (int)data.SkillID,
                Proficiency = (int)data.Proficiency,
                RemainTime = (int)data.RemainTime,
                socketType = package.socketType,
            };
            dtc.Done(h0310);
        }
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 84c04df606cdb0c48adba8b99914fdb6
timeCreated: 1548069797
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs
@@ -1,36 +1,35 @@
using UnityEngine;
using System.Collections;
// A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic
{
    public uint MapID;    // 地图ID
    public byte Count;
    public tagGCFBLineInfo[] FBLineInfoList = null;
    public HA007_tagGCFBLinePlayerCnt()
    {
        _cmd = (ushort)0xA007;
    }
    public override void ReadFromBytes(byte[] vBytes)
    {
        TransBytes(out MapID, vBytes, NetDataType.DWORD);
        TransBytes(out Count, vBytes, NetDataType.BYTE);
        FBLineInfoList = new tagGCFBLineInfo[Count];
        for (int i = 0; i < Count; i++)
        {
            FBLineInfoList[i] = new tagGCFBLineInfo();
            TransBytes(out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE);
            TransBytes(out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD);
        }
    }
    public struct tagGCFBLineInfo
    {
        public byte FBLineID;        // 功能线路ID
        public ushort PlayerCnt;        // 线路当前玩家数
    }
}
using UnityEngine;
using System.Collections;
// A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic {
    public uint MapID;    // 地图ID
    public byte Count;
    public  tagGCFBLineInfo[] FBLineInfoList;
    public HA007_tagGCFBLinePlayerCnt () {
        _cmd = (ushort)0xA007;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out MapID, vBytes, NetDataType.DWORD);
        TransBytes (out Count, vBytes, NetDataType.BYTE);
        FBLineInfoList = new tagGCFBLineInfo[Count];
        for (int i = 0; i < Count; i ++) {
            FBLineInfoList[i] = new tagGCFBLineInfo();
            TransBytes (out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE);
            TransBytes (out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD);
            TransBytes (out FBLineInfoList[i].ExtraStrLen, vBytes, NetDataType.WORD);
            TransBytes (out FBLineInfoList[i].ExtraStr, vBytes, NetDataType.Chars, FBLineInfoList[i].ExtraStrLen);
        }
    }
    public struct tagGCFBLineInfo {
        public byte FBLineID;        // 功能线路ID
        public ushort PlayerCnt;        // 线路当前玩家数
        public ushort ExtraStrLen;        // 长度
        public string ExtraStr;        // 额外信息
    }
}
Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs
New file
@@ -0,0 +1,17 @@
using UnityEngine;
using System.Collections;
// B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
public class HB212_tagMCZhuXianBossCnt : GameNetPackBasic {
    public byte Cnt;    // 剩余可协助次数
    public HB212_tagMCZhuXianBossCnt () {
        _cmd = (ushort)0xB212;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out Cnt, vBytes, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f511f09c68c0ae345a0208282471b83e
timeCreated: 1548040944
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs
New file
@@ -0,0 +1,31 @@
using UnityEngine;
using System.Collections;
// B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
public class HB413_tagMCPlayerSkills : GameNetPackBasic {
    public ushort Count;    //技能个数
    public  tagPlayerSkill[] Skills;    // 技能数据
    public HB413_tagMCPlayerSkills () {
        _cmd = (ushort)0xB413;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out Count, vBytes, NetDataType.WORD);
        Skills = new tagPlayerSkill[Count];
        for (int i = 0; i < Count; i ++) {
            Skills[i] = new tagPlayerSkill();
            TransBytes (out Skills[i].SkillID, vBytes, NetDataType.DWORD);
            TransBytes (out Skills[i].RemainTime, vBytes, NetDataType.DWORD);
            TransBytes (out Skills[i].Proficiency, vBytes, NetDataType.DWORD);
        }
    }
    public struct tagPlayerSkill {
        public uint SkillID;        //技能ID
        public uint RemainTime;        //剩余时间
        public uint Proficiency;        //熟练度
    }
}
Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 655db91bbfb8bae40aa038269eebc6be
timeCreated: 1548069755
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/Actor/AI/HeroAI_Auto.cs
@@ -327,7 +327,7 @@
            return;
        }
        _hero.LockTarget = _hero.SelectTarget = _atkTarget;
        _hero.SelectTarget = _atkTarget;
        // 判断技能范围, 不在可释放范围需要移动至目标
        float _compareDist = _skill.skillInfo.config.AtkDist * .5f;
Fight/Actor/AI/HeroAI_D5_Hlyy.cs
@@ -125,7 +125,6 @@
            else
            {
                _hero.SelectTarget = _actor;
                _hero.LockTarget = _actor;
            }
        }
Fight/Actor/HeroBehaviour.cs
@@ -131,14 +131,10 @@
        {
            _fightTarget = m_Hero.SelectTarget as GActorFight;
            if (_fightTarget != null && _fightTarget.CanAtked())
            {
                m_Hero.LockTarget = m_Hero.SelectTarget;
            }
            else
            if (_fightTarget == null || !_fightTarget.CanAtked())
            {
                float _range = m_Hero.JobSetup.SearchEnemyDist * Constants.F_DELTA;
                m_Hero.LockTarget = m_Hero.SelectTarget = GAMgr.Instance.FindAtkTarget(m_Hero.Pos, _range, 360);
                m_Hero.SelectTarget = GAMgr.Instance.FindAtkTarget(m_Hero.Pos, _range, 360);
                _fightTarget = m_Hero.SelectTarget as GActorFight;
            }
        }
Fight/Actor/Skill/AttackHandler.cs
@@ -36,10 +36,18 @@
        if (_hitEffectId != -1)
        {
            SFXController _controller = SFXPlayUtility.Instance.PlayEffectAsync(_hitEffectId,
                                                                                 target.MP_Hit.position,
                                                                                 Vector3.forward);
            _controller.transform.rotation = CameraController.Instance.CameraObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(0, 360));
            SFXController _controller = target.MP_Hit ?
                SFXPlayUtility.Instance.PlayEffectAsync(_hitEffectId,
                                                        target.MP_Hit.position,
                                                        Vector3.forward) :
                SFXPlayUtility.Instance.PlayEffectAsync(_hitEffectId,
                                                        target.Root.position,
                                                        Vector3.forward);
            if (CameraController.Instance.CameraObject)
            {
                _controller.transform.rotation = CameraController.Instance.CameraObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(0, 360));
            }
            // 播放受击音效
            if (target.ActorType == GameObjType.gotNPC)
@@ -62,11 +70,13 @@
                if (soConfig.hitEffectId != 0)
                {
                    SFXController _controller = SFXPlayUtility.Instance.PlayEffectAsync(soConfig.hitEffectId,
                                                                                        target.MP_Hit.position,
                                                                                        Vector3.forward);
                    _controller.transform.rotation = CameraController.Instance.CameraObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(0, 360));
                    SFXController _controller = target.MP_Hit
                        ? SFXPlayUtility.Instance.PlayEffectAsync(soConfig.hitEffectId,
                                                                  target.MP_Hit.position,
                                                                  Vector3.forward) :
                          SFXPlayUtility.Instance.PlayEffectAsync(soConfig.hitEffectId,
                                                                  target.Root.position,
                                                                  Vector3.forward);
                    // 播放受击音效
                    if (target.ActorType == GameObjType.gotNPC)
                    {
@@ -191,11 +201,10 @@
                if (target.ServerInstID == PlayerDatas.Instance.PlayerId)
                {
                    GA_Hero _hero = target as GA_Hero;
                    if (_hero.LockTarget == null)
                    if (_hero.SelectTarget == null)
                    {
                        _hero.LockTarget = attacker;
                        _hero.SelectTarget = attacker;
                    }
                }
            }
        }
Fight/GameActor/Bhv_FindEnemy.cs
@@ -113,7 +113,7 @@
                _chkDis += 1;
            }
            if (_distSqrt > Mathf.Pow(reFindSelectTargetDist, _chkDis))
            if (_distSqrt > Mathf.Pow(_chkDis, 2))
            {
                var _actor = GAMgr.Instance.FindAtkTarget(_hero.Pos, reSetLockTargetDist);
                if (!(_actor is GActorFight))
@@ -125,6 +125,10 @@
                    if (_actor.CanAtked())
                    {
                        _hero.SelectTarget = _actor;
                        if (_actor is GA_NpcFightBoss && _hero.LockTarget == null)
                        {
                            _hero.LockTarget = _actor;
                        }
                    }
                }
            }
Fight/GameActor/GA_Hero.cs
@@ -372,35 +372,56 @@
            }
        }
        if (PlayerDatas.Instance.extersion.bossState == 1)
        HandleBossAttack();
    }
    private void HandleBossAttack()
    {
        if (PlayerDatas.Instance.extersion.bossState != 1)
        {
            GA_Player _player = SelectTarget as GA_Player;
            if (_player != null)
            return;
        }
        if (LockTarget != null)
        {
            return;
        }
        GA_Player _player = SelectTarget as GA_Player;
        if (_player == null)
        {
            return;
        }
        foreach (var _key in DungeonStage.s_MapAreaDict.Keys)
        {
            if ((int)_key < 3000)
            {
                foreach (var _key in DungeonStage.s_MapAreaDict.Keys)
                continue;
            }
            var _areaList = DungeonStage.s_MapAreaDict[_key];
            if (_areaList == null)
            {
                continue;
            }
            MapArea _area = null;
            for (int i = 0; i < _areaList.Count; ++i)
            {
                _area = _areaList[i];
                if (_area != currentBossArea)
                {
                    if ((int)_key >= 3000)
                    continue;
                }
                if (_area.IsPosOut(_player.Pos))
                {
                    SelectTarget = null;
                    if (atkBossID != 0)
                    {
                        var _areaList = DungeonStage.s_MapAreaDict[_key];
                        if (_areaList != null)
                        {
                            MapArea _area = null;
                            for (int i = 0; i < _areaList.Count; ++i)
                            {
                                _area = _areaList[i];
                                if (_area == currentBossArea)
                                {
                                    if (_area.IsPosOut(_player.Pos))
                                    {
                                        LockTarget = SelectTarget = null;
                                        if (atkBossID != 0)
                                        {
                                            MapTransferUtility.Instance.MoveToNPC((int)atkBossID);
                                        }
                                    }
                                }
                            }
                        }
                        MapTransferUtility.Instance.MoveToNPC((int)atkBossID);
                    }
                }
            }
Fight/GameActor/GA_Pet.cs
@@ -179,7 +179,7 @@
            m_LastTalkTime = Time.realtimeSinceStartup;
        }
    }
    public sealed override bool CanAtked()
    {
        return false;
@@ -211,14 +211,11 @@
    }
    public sealed override void OnSelect()
    {
        throw new System.NotImplementedException();
    }
    public sealed override void OnUnSelect()
    {
        throw new System.NotImplementedException();
    }
    public sealed override void OnClick()
    {
        throw new System.NotImplementedException();
    }
}
Fight/Stage/StageManager.cs
@@ -374,11 +374,6 @@
                        break;
                }
            }
            var _mapData = H2Engine.MapData.LoadFormFile("map_" + _stageId);
            if (_mapData != null)
            {
            }
        }
        else
        {
Lua/Gen/CrossServerUtilityWrap.cs
New file
@@ -0,0 +1,184 @@
#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 CrossServerUtilityWrap
    {
        public static void __Register(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
            System.Type type = typeof(CrossServerUtility);
            Utils.BeginObjectRegister(type, L, translator, 0, 0, 0, 0);
            Utils.EndObjectRegister(type, L, translator, null, null,
                null, null, null);
            Utils.BeginClassRegister(type, L, __CreateInstance, 6, 0, 0);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServer", _m_IsCrossServer_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "UpdateCrossServerRedpoint", _m_UpdateCrossServerRedpoint_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServerOneVsOne", _m_IsCrossServerOneVsOne_xlua_st_);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServerBoss", _m_IsCrossServerBoss_xlua_st_);
            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "CrossServerRedKey", CrossServerUtility.CrossServerRedKey);
            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)
                {
                    CrossServerUtility gen_ret = new CrossServerUtility();
                    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 CrossServerUtility constructor!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_IsCrossServer_xlua_st_(RealStatePtr L)
        {
            try {
                {
                        bool gen_ret = CrossServerUtility.IsCrossServer(  );
                        LuaAPI.lua_pushboolean(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_UpdateCrossServerRedpoint_xlua_st_(RealStatePtr L)
        {
            try {
                {
                    CrossServerUtility.UpdateCrossServerRedpoint(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_IsCrossServerOneVsOne_xlua_st_(RealStatePtr L)
        {
            try {
                {
                        bool gen_ret = CrossServerUtility.IsCrossServerOneVsOne(  );
                        LuaAPI.lua_pushboolean(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_IsCrossServerBoss_xlua_st_(RealStatePtr L)
        {
            try {
                {
                        bool gen_ret = CrossServerUtility.IsCrossServerBoss(  );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
    }
}
Lua/Gen/CrossServerUtilityWrap.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 41270c85efa9000488715bef573a8088
timeCreated: 1548068355
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Lua/Gen/DelegatesGensBridge.cs
@@ -4099,7 +4099,238 @@
#endif
        }
        
        public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp177(object p0)
        public Snxxz.UI.JadeDynastyBossModel __Gen_Delegate_Imp177(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                PCall(L, 1, 1, errFunc);
                Snxxz.UI.JadeDynastyBossModel __gen_ret = (Snxxz.UI.JadeDynastyBossModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.JadeDynastyBossModel));
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public void __Gen_Delegate_Imp178(object p0, System.DateTime p1, object p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                translator.Push(L, p1);
                translator.PushAny(L, p2);
                PCall(L, 3, 0, errFunc);
                LuaAPI.lua_settop(L, errFunc - 1);
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public ulong __Gen_Delegate_Imp179(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                PCall(L, 1, 1, errFunc);
                ulong __gen_ret = LuaAPI.lua_touint64(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public Snxxz.UI.MapModel __Gen_Delegate_Imp180(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                PCall(L, 1, 1, errFunc);
                Snxxz.UI.MapModel __gen_ret = (Snxxz.UI.MapModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.MapModel));
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public bool __Gen_Delegate_Imp181(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.Item> p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                LuaAPI.xlua_pushinteger(L, p1);
                PCall(L, 2, 2, errFunc);
                p2 = (System.Collections.Generic.List<Snxxz.UI.Item>)translator.GetObject(L, errFunc + 2, typeof(System.Collections.Generic.List<Snxxz.UI.Item>));
                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public bool __Gen_Delegate_Imp182(object p0, int p1, out Snxxz.UI.JadeDynastyBossCondition p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                LuaAPI.xlua_pushinteger(L, p1);
                PCall(L, 2, 2, errFunc);
                translator.Get(L, errFunc + 2, out p2);
                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public bool __Gen_Delegate_Imp183(object p0, int p1, out Snxxz.UI.JadeDynastyBossLine p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                LuaAPI.xlua_pushinteger(L, p1);
                PCall(L, 2, 2, errFunc);
                translator.Get(L, errFunc + 2, out p2);
                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public int __Gen_Delegate_Imp184(Snxxz.UI.JadeDynastyBossData p0, Snxxz.UI.JadeDynastyBossData p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.Push(L, p0);
                translator.Push(L, p1);
                PCall(L, 2, 1, errFunc);
                int __gen_ret = LuaAPI.xlua_tointeger(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public System.Collections.IEnumerator __Gen_Delegate_Imp185(object p0, float p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                LuaAPI.lua_pushnumber(L, p1);
                PCall(L, 2, 1, errFunc);
                System.Collections.IEnumerator __gen_ret = (System.Collections.IEnumerator)translator.GetObject(L, errFunc + 1, typeof(System.Collections.IEnumerator));
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public bool __Gen_Delegate_Imp186(object p0, Snxxz.UI.Item p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                translator.Push(L, p1);
                PCall(L, 2, 1, errFunc);
                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp187(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4121,7 +4352,7 @@
#endif
        }
        
        public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp178(object p0)
        public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp188(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4143,7 +4374,7 @@
#endif
        }
        
        public string __Gen_Delegate_Imp179(object p0, object p1, int p2)
        public string __Gen_Delegate_Imp189(object p0, object p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4167,7 +4398,7 @@
#endif
        }
        
        public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp180(object p0)
        public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp190(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4189,7 +4420,7 @@
#endif
        }
        
        public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp181(object p0)
        public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp191(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4211,7 +4442,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp182(object p0, Snxxz.UI.CrossServerOneVsOne p1)
        public void __Gen_Delegate_Imp192(object p0, Snxxz.UI.CrossServerOneVsOne p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4234,7 +4465,7 @@
#endif
        }
        
        public Snxxz.UI.LoginModel __Gen_Delegate_Imp183(object p0)
        public Snxxz.UI.LoginModel __Gen_Delegate_Imp193(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4256,7 +4487,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp184(object p0, object p1, object p2, int p3, bool p4)
        public void __Gen_Delegate_Imp194(object p0, object p1, object p2, int p3, bool p4)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4282,7 +4513,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp185(object p0, byte p1)
        public void __Gen_Delegate_Imp195(object p0, byte p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4305,7 +4536,7 @@
#endif
        }
        
        public PlayerTaskDatas __Gen_Delegate_Imp186(object p0)
        public PlayerTaskDatas __Gen_Delegate_Imp196(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4327,7 +4558,7 @@
#endif
        }
        
        public System.Collections.IEnumerator __Gen_Delegate_Imp187(object p0, int p1, int p2)
        public System.Collections.IEnumerator __Gen_Delegate_Imp197(object p0, int p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4351,7 +4582,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp188(object p0, TreasureCategory p1)
        public void __Gen_Delegate_Imp198(object p0, TreasureCategory p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4374,7 +4605,7 @@
#endif
        }
        
        public Snxxz.UI.VipModel __Gen_Delegate_Imp189(object p0)
        public Snxxz.UI.VipModel __Gen_Delegate_Imp199(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4396,7 +4627,7 @@
#endif
        }
        
        public Snxxz.UI.MarketModel __Gen_Delegate_Imp190(object p0)
        public Snxxz.UI.MarketModel __Gen_Delegate_Imp200(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4418,7 +4649,7 @@
#endif
        }
        
        public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp191(object p0)
        public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp201(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4440,7 +4671,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp192(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
        public void __Gen_Delegate_Imp202(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4463,7 +4694,7 @@
#endif
        }
        
        public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp193(object p0)
        public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp203(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4485,7 +4716,7 @@
#endif
        }
        
        public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp194(object p0)
        public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp204(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4507,7 +4738,7 @@
#endif
        }
        
        public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp195(object p0)
        public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp205(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4529,7 +4760,7 @@
#endif
        }
        
        public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp196(object p0)
        public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp206(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4551,7 +4782,7 @@
#endif
        }
        
        public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp197(object p0)
        public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp207(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4573,7 +4804,7 @@
#endif
        }
        
        public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp198(object p0)
        public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp208(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4595,7 +4826,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp199(object p0, Snxxz.UI.Operation p1)
        public void __Gen_Delegate_Imp209(object p0, Snxxz.UI.Operation p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4618,7 +4849,7 @@
#endif
        }
        
        public OpenServiceAchievementModel __Gen_Delegate_Imp200(object p0)
        public OpenServiceAchievementModel __Gen_Delegate_Imp210(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4640,7 +4871,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp201(object p0, int p1, object p2, int p3, int p4)
        public void __Gen_Delegate_Imp211(object p0, int p1, object p2, int p3, int p4)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4666,7 +4897,7 @@
#endif
        }
        
        public Snxxz.UI.RealmModel __Gen_Delegate_Imp202(object p0)
        public Snxxz.UI.RealmModel __Gen_Delegate_Imp212(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4688,7 +4919,7 @@
#endif
        }
        
        public Snxxz.UI.MagicianModel __Gen_Delegate_Imp203()
        public Snxxz.UI.MagicianModel __Gen_Delegate_Imp213()
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4709,7 +4940,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp204(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
        public bool __Gen_Delegate_Imp214(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4732,7 +4963,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp205(uint p0, int p1, out int p2)
        public bool __Gen_Delegate_Imp215(uint p0, int p1, out int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4756,7 +4987,7 @@
#endif
        }
        
        public byte __Gen_Delegate_Imp206(int p0, int p1)
        public byte __Gen_Delegate_Imp216(int p0, int p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4779,7 +5010,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp207(int p0, int p1, bool p2)
        public void __Gen_Delegate_Imp217(int p0, int p1, bool p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4803,7 +5034,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp208(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
        public bool __Gen_Delegate_Imp218(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4826,7 +5057,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp209(uint p0)
        public void __Gen_Delegate_Imp219(uint p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4848,7 +5079,7 @@
#endif
        }
        
        public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp210(object p0)
        public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp220(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4870,7 +5101,7 @@
#endif
        }
        
        public int[] __Gen_Delegate_Imp211(object p0)
        public int[] __Gen_Delegate_Imp221(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4892,7 +5123,7 @@
#endif
        }
        
        public int[] __Gen_Delegate_Imp212(object p0, int p1)
        public int[] __Gen_Delegate_Imp222(object p0, int p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4915,7 +5146,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp213(object p0, int p1, int p2, int p3, out int p4)
        public bool __Gen_Delegate_Imp223(object p0, int p1, int p2, int p3, out int p4)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4941,7 +5172,7 @@
#endif
        }
        
        public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp214(object p0, int p1)
        public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp224(object p0, int p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4964,7 +5195,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp215(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
        public bool __Gen_Delegate_Imp225(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -4988,7 +5219,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp216(object p0, int p1, int p2, out int p3)
        public bool __Gen_Delegate_Imp226(object p0, int p1, int p2, out int p3)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5013,7 +5244,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp217(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
        public bool __Gen_Delegate_Imp227(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5037,7 +5268,7 @@
#endif
        }
        
        public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp218(object p0, int p1, int p2)
        public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp228(object p0, int p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5061,7 +5292,7 @@
#endif
        }
        
        public System.Collections.Generic.List<int> __Gen_Delegate_Imp219(object p0, int p1)
        public System.Collections.Generic.List<int> __Gen_Delegate_Imp229(object p0, int p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5084,7 +5315,7 @@
#endif
        }
        
        public string __Gen_Delegate_Imp220(object p0, int p1, int p2)
        public string __Gen_Delegate_Imp230(object p0, int p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5108,7 +5339,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp221(object p0, object p1, object p2)
        public void __Gen_Delegate_Imp231(object p0, object p1, object p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5132,7 +5363,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp222(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
        public void __Gen_Delegate_Imp232(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5155,7 +5386,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp223(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
        public void __Gen_Delegate_Imp233(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5179,7 +5410,7 @@
#endif
        }
        
        public bool __Gen_Delegate_Imp224(object p0, int p1, out int p2, out int p3)
        public bool __Gen_Delegate_Imp234(object p0, int p1, out int p2, out int p3)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5204,7 +5435,7 @@
#endif
        }
        
        public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp225(object p0)
        public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp235(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5226,7 +5457,7 @@
#endif
        }
        
        public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp226(object p0)
        public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp236(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5248,7 +5479,7 @@
#endif
        }
        
        public Snxxz.UI.TestModel __Gen_Delegate_Imp227(object p0)
        public Snxxz.UI.TestModel __Gen_Delegate_Imp237(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5270,7 +5501,7 @@
#endif
        }
        
        public UIEffect __Gen_Delegate_Imp228(object p0)
        public UIEffect __Gen_Delegate_Imp238(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5292,7 +5523,7 @@
#endif
        }
        
        public Treasure3DConfig __Gen_Delegate_Imp229(object p0)
        public Treasure3DConfig __Gen_Delegate_Imp239(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5314,7 +5545,7 @@
#endif
        }
        
        public Snxxz.UI.AchievementModel __Gen_Delegate_Imp230(object p0)
        public Snxxz.UI.AchievementModel __Gen_Delegate_Imp240(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5336,7 +5567,7 @@
#endif
        }
        
        public UnityEngine.Vector3 __Gen_Delegate_Imp231(object p0, int p1)
        public UnityEngine.Vector3 __Gen_Delegate_Imp241(object p0, int p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5359,7 +5590,7 @@
#endif
        }
        
        public UnityEngine.Vector3 __Gen_Delegate_Imp232(object p0, UnityEngine.Vector3 p1)
        public UnityEngine.Vector3 __Gen_Delegate_Imp242(object p0, UnityEngine.Vector3 p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5382,30 +5613,7 @@
#endif
        }
        
        public System.Collections.IEnumerator __Gen_Delegate_Imp233(object p0, float p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                LuaAPI.lua_pushnumber(L, p1);
                PCall(L, 2, 1, errFunc);
                System.Collections.IEnumerator __gen_ret = (System.Collections.IEnumerator)translator.GetObject(L, errFunc + 1, typeof(System.Collections.IEnumerator));
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
        }
        public void __Gen_Delegate_Imp234(object p0, bool p1, bool p2)
        public void __Gen_Delegate_Imp243(object p0, bool p1, bool p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5429,7 +5637,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp235(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
        public void __Gen_Delegate_Imp244(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5452,7 +5660,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp236(object p0, bool p1, int p2)
        public void __Gen_Delegate_Imp245(object p0, bool p1, int p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5476,7 +5684,7 @@
#endif
        }
        
        public UnityEngine.Transform __Gen_Delegate_Imp237(object p0)
        public UnityEngine.Transform __Gen_Delegate_Imp246(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5498,7 +5706,7 @@
#endif
        }
        
        public UnityEngine.Vector3 __Gen_Delegate_Imp238(object p0)
        public UnityEngine.Vector3 __Gen_Delegate_Imp247(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5520,7 +5728,7 @@
#endif
        }
        
        public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp239(object p0)
        public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp248(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5542,7 +5750,7 @@
#endif
        }
        
        public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp240()
        public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp249()
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5563,7 +5771,7 @@
#endif
        }
        
        public TreasureCategory __Gen_Delegate_Imp241(object p0)
        public TreasureCategory __Gen_Delegate_Imp250(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5585,7 +5793,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp242(object p0, bool p1, TreasureCategory p2)
        public void __Gen_Delegate_Imp251(object p0, bool p1, TreasureCategory p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5609,7 +5817,7 @@
#endif
        }
        
        public System.Collections.IEnumerator __Gen_Delegate_Imp243(object p0, TreasureCategory p1, object p2)
        public System.Collections.IEnumerator __Gen_Delegate_Imp252(object p0, TreasureCategory p1, object p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5633,7 +5841,7 @@
#endif
        }
        
        public void __Gen_Delegate_Imp244(object p0, TreasureCategory p1, bool p2)
        public void __Gen_Delegate_Imp253(object p0, TreasureCategory p1, bool p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5657,7 +5865,7 @@
#endif
        }
        
        public System.Collections.IEnumerator __Gen_Delegate_Imp245(object p0, object p1, float p2)
        public System.Collections.IEnumerator __Gen_Delegate_Imp254(object p0, object p1, float p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
@@ -5681,7 +5889,7 @@
#endif
        }
        
        public Snxxz.UI.SignInModel __Gen_Delegate_Imp246(object p0)
        public Snxxz.UI.SignInModel __Gen_Delegate_Imp255(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
Lua/Gen/SDKUtilityWrap.cs
@@ -21,7 +21,7 @@
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
            System.Type type = typeof(SDKUtility);
            Utils.BeginObjectRegister(type, L, translator, 0, 26, 29, 20);
            Utils.BeginObjectRegister(type, L, translator, 0, 27, 29, 20);
            
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "InstallAPK", _m_InstallAPK);
@@ -44,6 +44,7 @@
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "FreePlatformDoIDAuthentication", _m_FreePlatformDoIDAuthentication);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "FreePlatformCheckIDAuthentication", _m_FreePlatformCheckIDAuthentication);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnServerChargeOk", _m_OnServerChargeOk);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "SendRegistEvent", _m_SendRegistEvent);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "CreateRoleOk", _m_CreateRoleOk);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "RoleLogin", _m_RoleLogin);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "RoleLevelUp", _m_RoleLevelUp);
@@ -761,6 +762,33 @@
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_SendRegistEvent(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                SDKUtility gen_to_be_invoked = (SDKUtility)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.SendRegistEvent(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_CreateRoleOk(RealStatePtr L)
        {
            try {
Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
New file
@@ -0,0 +1,888 @@
#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 SnxxzUIJadeDynastyBossModelWrap
    {
        public static void __Register(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
            System.Type type = typeof(Snxxz.UI.JadeDynastyBossModel);
            Utils.BeginObjectRegister(type, L, translator, 0, 20, 7, 2);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnAfterPlayerDataInitialize", _m_OnAfterPlayerDataInitialize);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnPlayerLoginOk", _m_OnPlayerLoginOk);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsJadeDynastyBoss", _m_IsJadeDynastyBoss);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsBossUnLocked", _m_IsBossUnLocked);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetJadeDynastyBosses", _m_GetJadeDynastyBosses);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetParticipantCount", _m_GetParticipantCount);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetLatestUnLockBoss", _m_GetLatestUnLockBoss);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetDropItems", _m_TryGetDropItems);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetCondition", _m_TryGetCondition);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetBossLine", _m_TryGetBossLine);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryEnterDungeon", _m_TryEnterDungeon);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "DisplayErrorTip", _m_DisplayErrorTip);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnReceivePackage", _m_OnReceivePackage);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "selectBossRefresh", _e_selectBossRefresh);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "bossLineRefresh", _e_bossLineRefresh);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "assistTimeRefresh", _e_assistTimeRefresh);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "jadeDynastyScoreRefresh", _e_jadeDynastyScoreRefresh);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "jadeDynastyScore", _g_get_jadeDynastyScore);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "challengeLimitCount", _g_get_challengeLimitCount);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "challengeTimes", _g_get_challengeTimes);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "assistTimes", _g_get_assistTimes);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "selectBossId", _g_get_selectBossId);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "assginSelectBossId", _g_get_assginSelectBossId);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "redpoint", _g_get_redpoint);
            Utils.RegisterFunc(L, Utils.SETTER_IDX, "selectBossId", _s_set_selectBossId);
            Utils.RegisterFunc(L, Utils.SETTER_IDX, "assginSelectBossId", _s_set_assginSelectBossId);
            Utils.EndObjectRegister(type, L, translator, null, null,
                null, null, null);
            Utils.BeginClassRegister(type, L, __CreateInstance, 5, 0, 0);
            Utils.RegisterFunc(L, Utils.CLS_IDX, "SortCompare", _m_SortCompare_xlua_st_);
            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "JADEDYNASTY_MAP", Snxxz.UI.JadeDynastyBossModel.JADEDYNASTY_MAP);
            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "FUNCTIONID", Snxxz.UI.JadeDynastyBossModel.FUNCTIONID);
            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "JADEDYNASTY_REDPOINTID", Snxxz.UI.JadeDynastyBossModel.JADEDYNASTY_REDPOINTID);
            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)
                {
                    Snxxz.UI.JadeDynastyBossModel gen_ret = new Snxxz.UI.JadeDynastyBossModel();
                    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 Snxxz.UI.JadeDynastyBossModel constructor!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_Init(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.Init(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_OnBeforePlayerDataInitialize(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.OnBeforePlayerDataInitialize(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_OnAfterPlayerDataInitialize(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.OnAfterPlayerDataInitialize(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_OnPlayerLoginOk(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.OnPlayerLoginOk(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_UnInit(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    gen_to_be_invoked.UnInit(  );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_IsJadeDynastyBoss(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossNpcId = LuaAPI.xlua_tointeger(L, 2);
                        bool gen_ret = gen_to_be_invoked.IsJadeDynastyBoss( _bossNpcId );
                        LuaAPI.lua_pushboolean(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_IsBossUnLocked(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossNpcId = LuaAPI.xlua_tointeger(L, 2);
                    int _condition;
                        bool gen_ret = gen_to_be_invoked.IsBossUnLocked( _bossNpcId, out _condition );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    LuaAPI.xlua_pushinteger(L, _condition);
                    return 2;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetJadeDynastyBosses(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                        System.Collections.Generic.List<int> gen_ret = gen_to_be_invoked.GetJadeDynastyBosses(  );
                        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_GetParticipantCount(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
                        int gen_ret = gen_to_be_invoked.GetParticipantCount( _bossId );
                        LuaAPI.xlua_pushinteger(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_GetLatestUnLockBoss(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                        int gen_ret = gen_to_be_invoked.GetLatestUnLockBoss(  );
                        LuaAPI.xlua_pushinteger(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_TryGetDropItems(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
                    System.Collections.Generic.List<Snxxz.UI.Item> _dropItems;
                        bool gen_ret = gen_to_be_invoked.TryGetDropItems( _bossId, out _dropItems );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    translator.Push(L, _dropItems);
                    return 2;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_TryGetCondition(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
                    Snxxz.UI.JadeDynastyBossCondition _condition;
                        bool gen_ret = gen_to_be_invoked.TryGetCondition( _bossId, out _condition );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    translator.Push(L, _condition);
                    return 2;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_TryGetBossLine(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
                    Snxxz.UI.JadeDynastyBossLine _mapLineState;
                        bool gen_ret = gen_to_be_invoked.TryGetBossLine( _bossId, out _mapLineState );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    translator.Push(L, _mapLineState);
                    return 2;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_TryEnterDungeon(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
                    int _error;
                        bool gen_ret = gen_to_be_invoked.TryEnterDungeon( _bossId, out _error );
                        LuaAPI.lua_pushboolean(L, gen_ret);
                    LuaAPI.xlua_pushinteger(L, _error);
                    return 2;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_DisplayErrorTip(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                {
                    int _error = LuaAPI.xlua_tointeger(L, 2);
                    gen_to_be_invoked.DisplayErrorTip( _error );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_OnReceivePackage(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                int gen_param_count = LuaAPI.lua_gettop(L);
                if(gen_param_count == 2&& translator.Assignable<HA007_tagGCFBLinePlayerCnt>(L, 2))
                {
                    HA007_tagGCFBLinePlayerCnt _package = (HA007_tagGCFBLinePlayerCnt)translator.GetObject(L, 2, typeof(HA007_tagGCFBLinePlayerCnt));
                    gen_to_be_invoked.OnReceivePackage( _package );
                    return 0;
                }
                if(gen_param_count == 2&& translator.Assignable<HB212_tagMCZhuXianBossCnt>(L, 2))
                {
                    HB212_tagMCZhuXianBossCnt _package = (HB212_tagMCZhuXianBossCnt)translator.GetObject(L, 2, typeof(HB212_tagMCZhuXianBossCnt));
                    gen_to_be_invoked.OnReceivePackage( _package );
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.OnReceivePackage!");
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_SortCompare_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                {
                    Snxxz.UI.JadeDynastyBossData _lhs;translator.Get(L, 1, out _lhs);
                    Snxxz.UI.JadeDynastyBossData _rhs;translator.Get(L, 2, out _rhs);
                        int gen_ret = Snxxz.UI.JadeDynastyBossModel.SortCompare( _lhs, _rhs );
                        LuaAPI.xlua_pushinteger(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_jadeDynastyScore(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.lua_pushuint64(L, gen_to_be_invoked.jadeDynastyScore);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_challengeLimitCount(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.challengeLimitCount);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_challengeTimes(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.challengeTimes);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_assistTimes(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.assistTimes);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_selectBossId(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.selectBossId);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_assginSelectBossId(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.assginSelectBossId);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_redpoint(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                translator.Push(L, gen_to_be_invoked.redpoint);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _s_set_selectBossId(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                gen_to_be_invoked.selectBossId = LuaAPI.xlua_tointeger(L, 2);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 0;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _s_set_assginSelectBossId(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                gen_to_be_invoked.assginSelectBossId = LuaAPI.xlua_tointeger(L, 2);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 0;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _e_selectBossRefresh(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                int gen_param_count = LuaAPI.lua_gettop(L);
            Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                System.Action<int> gen_delegate = translator.GetDelegate<System.Action<int>>(L, 3);
                if (gen_delegate == null) {
                    return LuaAPI.luaL_error(L, "#3 need System.Action<int>!");
                }
                if (gen_param_count == 3)
                {
                    if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
                        gen_to_be_invoked.selectBossRefresh += gen_delegate;
                        return 0;
                    }
                    if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
                        gen_to_be_invoked.selectBossRefresh -= gen_delegate;
                        return 0;
                    }
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.selectBossRefresh!");
            return 0;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _e_bossLineRefresh(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                int gen_param_count = LuaAPI.lua_gettop(L);
            Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
                if (gen_delegate == null) {
                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
                }
                if (gen_param_count == 3)
                {
                    if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
                        gen_to_be_invoked.bossLineRefresh += gen_delegate;
                        return 0;
                    }
                    if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
                        gen_to_be_invoked.bossLineRefresh -= gen_delegate;
                        return 0;
                    }
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.bossLineRefresh!");
            return 0;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _e_assistTimeRefresh(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                int gen_param_count = LuaAPI.lua_gettop(L);
            Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
                if (gen_delegate == null) {
                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
                }
                if (gen_param_count == 3)
                {
                    if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
                        gen_to_be_invoked.assistTimeRefresh += gen_delegate;
                        return 0;
                    }
                    if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
                        gen_to_be_invoked.assistTimeRefresh -= gen_delegate;
                        return 0;
                    }
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.assistTimeRefresh!");
            return 0;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _e_jadeDynastyScoreRefresh(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                int gen_param_count = LuaAPI.lua_gettop(L);
            Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
                if (gen_delegate == null) {
                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
                }
                if (gen_param_count == 3)
                {
                    if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
                        gen_to_be_invoked.jadeDynastyScoreRefresh += gen_delegate;
                        return 0;
                    }
                    if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
                        gen_to_be_invoked.jadeDynastyScoreRefresh -= gen_delegate;
                        return 0;
                    }
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.jadeDynastyScoreRefresh!");
            return 0;
        }
    }
}
Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 616fcc3468a518d44a9db93cbe4cef28
timeCreated: 1548068355
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Lua/Gen/XLuaGenAutoRegister.cs
@@ -302,6 +302,9 @@
            translator.DelayWrapLoader(typeof(SelectEquipModel), SelectEquipModelWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(CrossServerUtility), CrossServerUtilityWrap.__Register);
            translator.DelayWrapLoader(typeof(Snxxz.UI.CrossServerBossModel), SnxxzUICrossServerBossModelWrap.__Register);
        
        
@@ -328,13 +331,13 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzModel), SnxxzUIDogzModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzPackModel), SnxxzUIDogzPackModelWrap.__Register);
        }
        
        static void wrapInit2(LuaEnv luaenv, ObjectTranslator translator)
        {
            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzPackModel), SnxxzUIDogzPackModelWrap.__Register);
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzDungeonModel), SnxxzUIDogzDungeonModelWrap.__Register);
        
@@ -447,6 +450,9 @@
            translator.DelayWrapLoader(typeof(HttpRequest), HttpRequestWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.JadeDynastyBossModel), SnxxzUIJadeDynastyBossModelWrap.__Register);
            translator.DelayWrapLoader(typeof(Snxxz.UI.FBHelpPointExchageModel), SnxxzUIFBHelpPointExchageModelWrap.__Register);
        
        
@@ -482,16 +488,16 @@
        
            translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
        
        }
        static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.LoginModel), SnxxzUILoginModelWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(ServerListCenter), ServerListCenterWrap.__Register);
        
        }
        static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.LoginAdModel), SnxxzUILoginAdModelWrap.__Register);
        
@@ -639,16 +645,16 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.RuneTowerModel), SnxxzUIRuneTowerModelWrap.__Register);
        
        }
        static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(QuickSetting), QuickSettingWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.SkillModel), SnxxzUISkillModelWrap.__Register);
        
        }
        static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.TalentModel), SnxxzUITalentModelWrap.__Register);
        
@@ -796,16 +802,16 @@
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.WindowCenter), SnxxzUIWindowCenterWrap.__Register);
        
        }
        static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(WindowJumpMgr), WindowJumpMgrWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.MapModel), SnxxzUIMapModelWrap.__Register);
        
        }
        static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
        {
        
            translator.DelayWrapLoader(typeof(WorldMapSkip), WorldMapSkipWrap.__Register);
        
Lua/Gen/link.xml
@@ -74,6 +74,7 @@
        <type fullname="VersionUtility" preserve="all"/>
        <type fullname="ComposeWinModel" preserve="all"/>
        <type fullname="SelectEquipModel" preserve="all"/>
        <type fullname="CrossServerUtility" preserve="all"/>
        <type fullname="Snxxz.UI.CrossServerBossModel" preserve="all"/>
        <type fullname="Snxxz.UI.CrossServerOneVsOneModel" preserve="all"/>
        <type fullname="Item_Class" preserve="all"/>
@@ -121,6 +122,7 @@
        <type fullname="Snxxz.UI.HeavenBattleInfo" preserve="all"/>
        <type fullname="HeavenBattleModel" preserve="all"/>
        <type fullname="HttpRequest" preserve="all"/>
        <type fullname="Snxxz.UI.JadeDynastyBossModel" preserve="all"/>
        <type fullname="Snxxz.UI.FBHelpPointExchageModel" preserve="all"/>
        <type fullname="Snxxz.UI.KnapsackTimeCDMgr" preserve="all"/>
        <type fullname="Snxxz.UI.BoxGetItemModel" preserve="all"/>
System/CrossServerOneVsOne/RankingWin.cs
@@ -44,7 +44,7 @@
        {
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_Z;//赛区
            m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_S;//赛区
            m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_S;//赛季
            var configNum1 = Config.Instance.Get<FuncConfigConfig>("CrossRealmPKCfg").Numerical1;
            var _jsonDataC = LitJson.JsonMapper.ToObject(configNum1);
            if (_jsonDataC.Count > 0)
@@ -170,10 +170,6 @@
                    }
                }
            }
            //for (int i = 1; i <= CrossServerOneVsOnePKSeason.Instance.SeasonID; i++)
            //{
            //    gridCtrl.AddCell(ScrollerDataType.Header, i);
            //}
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
@@ -202,7 +198,22 @@
                }
                crossServerRewardModel.ZoneID = Id;
                crossServerRewardModel.ZoneName = UIHelper.ServerStringTrim(Name);
                crossServerRewardModel.SeasonID = 1;
                int _SeasonID = 1;
                for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
                {
                    if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
                    {
                        var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
                        for (int j = 0; j < list.Count; j++)
                        {
                            if (list[j].SeasonID > _SeasonID)
                            {
                                _SeasonID = list[j].SeasonID;
                            }
                        }
                    }
                }
                crossServerRewardModel.SeasonID = _SeasonID;
                m_ClickScreenOtherSpace1.SetActive(false);
                crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询
            });
System/DailyQuest/DailyQuestWin.cs
@@ -315,6 +315,10 @@
                    WindowCenter.Instance.CloseImmediately<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>();
                    break;
                case DailyQuestType.JadeDynastyBoss:
                    WindowCenter.Instance.CloseImmediately<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
                    break;
                default:
                    CSharpCallLua.GotoLuaDailyQuest(_id);
                    break;
System/Dungeon/DungeonBuyTimesWin.cs
@@ -188,6 +188,24 @@
                    return false;
                }
            }
            else if (JadeDynastyBossModel.JADEDYNASTY_MAP == model.currentDungeon.mapId)
            {
                var _totalTimes = model.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
                var _enterTimes = model.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
                var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>();
                if ((_totalTimes - _enterTimes) >= jadeDynastyBossModel.challengeLimitCount)
                {
                    MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18"));
                    return false;
                }
                var mapId = PlayerDatas.Instance.baseData.MapID;
                var dataMapId = model.GetDataMapIdByMapId(mapId);
                if (dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
                {
                    SysNotifyMgr.Instance.ShowTip("JadeDynastyBossBuyTimesError");
                    return false;
                }
            }
            return true;
        }
System/Dungeon/DungeonFightWin.cs
@@ -106,6 +106,9 @@
                case GatherSoulDungeonModel.DUNGEON_MAPID:
                    m_GatherSoulDungeonBehaviour.Display(this);
                    break;
                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                    m_Inspire.gameObject.SetActive(true);
                    break;
                default:
                    break;
            }
System/Dungeon/DungeonInspireBehaviour.cs
@@ -53,7 +53,8 @@
            }
            switch (mapId)
            {
                case 52010:
                case DemonJarModel.DEMONJAR_MAPID:
                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                    m_Icon.SetSprite("W_XYGuwu_a2");
                    break;
                default:
@@ -71,7 +72,7 @@
                && level < model.GetInspireMaxCount(mapId);
            if (m_InspireProgress != null)
            {
                m_InspireProgress.gameObject.SetActive(PlayerDatas.Instance.baseData.MapID == DemonJarModel.DEMONJAR_MAPID);
                m_InspireProgress.gameObject.SetActive(IsRequireDisplayProgress());
                m_InspireProgress.text = StringUtility.Contact(level * model.GetDungeonInspireUpper(mapId), "%");
            }
            if (!m_Waggle)
@@ -103,6 +104,12 @@
            }
        }
        private bool IsRequireDisplayProgress()
        {
            return PlayerDatas.Instance.baseData.MapID == DemonJarModel.DEMONJAR_MAPID
                || PlayerDatas.Instance.baseData.MapID == JadeDynastyBossModel.JADEDYNASTY_MAP;
        }
        private void ResetTween()
        {
            m_Time = 0;
System/Dungeon/DungeonModel.cs
@@ -840,6 +840,12 @@
                        WindowCenter.Instance.Open<DemonJarDamageRankWin>();
                    }
                    break;
                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                    if (!WindowCenter.Instance.IsOpen<JadeDynastyDamageRankWin>())
                    {
                        WindowCenter.Instance.Open<JadeDynastyDamageRankWin>();
                    }
                    break;
                case TreasureModel.TREASURE_MAPID:
                    break;
                case HeavenBattleModel.HEAVEBATTLE_MAPID:
@@ -900,6 +906,12 @@
                    if (!WindowCenter.Instance.IsOpen<DemonJarDamageRankWin>())
                    {
                        WindowCenter.Instance.Open<DemonJarDamageRankWin>();
                    }
                    break;
                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                    if (!WindowCenter.Instance.IsOpen<JadeDynastyDamageRankWin>())
                    {
                        WindowCenter.Instance.Open<JadeDynastyDamageRankWin>();
                    }
                    break;
            }
@@ -990,6 +1002,9 @@
                                demonJarModel.autoChallengeBoss = 0;
                            }
                            break;
                        case JadeDynastyBossModel.JADEDYNASTY_MAP:
                            WindowCenter.Instance.Open<JadeDynastyBossVictoryWin>();
                            break;
                        case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON:
                        case 31160:
                            break;
System/Dungeon/DungeonRankBehaviour.cs
@@ -40,10 +40,11 @@
            {
                case 31170:
                case DemonJarModel.DEMONJAR_MAPID:
                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                    {
                        int i = 0;
                        if (model.mission.hurtInfo != null && model.mission.hurtInfo.Length > 0)
                        {
                            int i = 0;
                            for (i = 0; i < model.mission.hurtInfo.Length; i++)
                            {
                                var rank = model.mission.hurtInfo[i].rank;
@@ -61,12 +62,12 @@
                                    SetMineInfo(rank, model.mission.hurtInfo[i].totalHurt);
                                }
                            }
                            while (i < playerNameTexts.Count)
                            {
                                playerNameTexts[i].text = string.Empty;
                                valueTexts[i].text = string.Empty;
                                i++;
                            }
                        }
                        while (i < playerNameTexts.Count)
                        {
                            playerNameTexts[i].text = string.Empty;
                            valueTexts[i].text = string.Empty;
                            i++;
                        }
                    }
                    break;
System/Dungeon/TargetBriefInfoWin.cs
@@ -34,7 +34,8 @@
        var mapId = PlayerDatas.Instance.baseData.MapID;
        var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(mapId);
        if (dataMapId == DemonJarModel.DEMONJAR_MAPID)
        if (dataMapId == DemonJarModel.DEMONJAR_MAPID
            || dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
        {
            if (_show)
            {
@@ -77,7 +78,8 @@
        var mapId = PlayerDatas.Instance.baseData.MapID;
        var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(mapId);
        if (dataMapId == DemonJarModel.DEMONJAR_MAPID)
        if (dataMapId == DemonJarModel.DEMONJAR_MAPID
            || dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
        {
            DemonJarBossLifeBarWin win;
            if (!WindowCenter.Instance.IsOpen<DemonJarBossLifeBarWin>())
System/FindPrecious/FindPreciousBossRebornBehaviour.cs
@@ -130,6 +130,9 @@
                case FindPreciousType.CrossServerBoss:
                    GotoKillCrossServerBoss(bossId);
                    break;
                case FindPreciousType.JadeDynastyBoss:
                    GotoKillStrangleGodBoss(bossId);
                    break;
            }
            ReportConfirmBossRebornNotify();
@@ -334,6 +337,24 @@
            }
        }
        private void GotoKillStrangleGodBoss(int _bossId)
        {
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            if (mapConfig.MapFBType == (int)MapType.OpenCountry)
            {
                WindowCenter.Instance.Close<MainInterfaceWin>();
                var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>();
                jadeDynastyBossModel.assginSelectBossId = _bossId;
                WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
            }
            else
            {
                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
            }
        }
        private void EnterBossHome(int _floor, int _bossId)
        {
            var error = 0;
System/FindPrecious/FindPreciousModel.cs
@@ -56,6 +56,7 @@
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }
        DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
        JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
        public override void Init()
        {
@@ -431,11 +432,13 @@
            }
            if (_redpointId == DemonJarModel.DEMONJAR_REDPOINTID ||
                _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT)
                _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT ||
                _redpointId == JadeDynastyBossModel.JADEDYNASTY_REDPOINTID)
            {
                var demonJarRedpointCount = demonJarModel.redpoint.count;
                var dogzDungeonRedpointCount = dogzDungeonModel.redpoint.count;
                var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount;
                var jadeDynastyBossRedpointCount = jadeDynastyBossModel.redpoint.count;
                var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount + jadeDynastyBossRedpointCount;
                lootPreciousRedpoint.count = totalCount;
                lootPreciousRedpoint.state = totalCount > 0 ? RedPointState.Quantity : RedPointState.None;
@@ -472,7 +475,10 @@
            {
                return FindPreciousType.CrossServerBoss;
            }
            else if (jadeDynastyBossModel.IsJadeDynastyBoss(_bossId))
            {
                return FindPreciousType.JadeDynastyBoss;
            }
            return FindPreciousType.None;
        }
System/FindPrecious/LootPreciousFrameWin.cs
@@ -17,6 +17,7 @@
        [SerializeField] FunctionButton m_DemonJar;
        [SerializeField] FunctionButton m_FairyGrabBoss;
        [SerializeField] FunctionButton m_DogzDungeon;
        [SerializeField] FunctionButton m_JadeDynastyBoss;
        [SerializeField] Button m_Left;
        [SerializeField] Button m_Right;
@@ -32,11 +33,12 @@
            m_DemonJar.AddListener(ShowDemonJar);
            m_DogzDungeon.AddListener(ShowDogzDungeon);
            m_FairyGrabBoss.AddListener(FairyGrabBoss);
            m_JadeDynastyBoss.AddListener(JadeDynastyBoss);
            m_Left.AddListener(ShowLastFunction);
            m_Right.AddListener(ShowNextFunction);
            m_Close.AddListener(CloseClick);
        }
        }
        protected override void OnPreOpen()
        {
        }
@@ -91,6 +93,13 @@
            functionOrder = m_DogzDungeon.order;
        }
        private void JadeDynastyBoss()
        {
            CloseSubWindows();
            WindowCenter.Instance.Open<JadeDynastyBossWin>();
            functionOrder = m_JadeDynastyBoss.order;
        }
        private void CloseSubWindows()
        {
            var children = WindowConfig.Get().FindChildWindows("LootPreciousFrameWin");
System/JadeDynastyBoss.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: be9e87f41339d644c98549ba020a54a0
folderAsset: yes
timeCreated: 1547717228
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs
New file
@@ -0,0 +1,178 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyBossBehaviour : FindPreciousBossBriefInfoBehaviour
    {
        [SerializeField] Transform m_ContainerChallengeable;
        [SerializeField] Transform m_ContainerUnChanllgeable;
        [SerializeField] Text m_ChallengeCondition;
        [SerializeField] Transform m_ContainerAttention;
        [SerializeField] Text m_Participant;
        JadeDynastyBossModel model
        {
            get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); }
        }
        public int bossNpcId { get; private set; }
        protected override int selectedBossId
        {
            get { return model.selectBossId; }
            set { model.selectBossId = value; }
        }
        protected override InteractorableState interactorableState
        {
            get
            {
                var selected = selectedBossId == bossId;
                var condition = 0;
                var dieOrLocked = !model.IsBossUnLocked(bossId, out condition) || !findPreciousModel.IsBossAlive(bossId);
                if (!dieOrLocked)
                {
                    return selected ? InteractorableState.NormalSelected : InteractorableState.NormalUnSelected;
                }
                else
                {
                    return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected;
                }
            }
            set
            {
                base.interactorableState = value;
            }
        }
        protected override bool isRebornRightNow
        {
            get
            {
                var condition = 0;
                return model.IsBossUnLocked(bossId, out condition) && base.isRebornRightNow;
            }
        }
        protected override bool isUnLocked
        {
            get
            {
                var condition = 0;
                return model.IsBossUnLocked(bossId, out condition);
            }
        }
        public override void Display(object _data)
        {
            base.Display(_data);
            bossNpcId = (int)_data;
            DisplayBase();
            UpdateBossRebornCoolDown(isUnLocked);
            UpdateBossPortrait(interactorableState);
            UpdateBossNameLevelFont(interactorableState);
            DisplayParticipant();
            DisplayCondition();
            DisplaySubscrib();
            model.bossLineRefresh -= DisplayParticipant;
            model.bossLineRefresh += DisplayParticipant;
            model.selectBossRefresh -= SelectBossRefresh;
            model.selectBossRefresh += SelectBossRefresh;
            model.bossLineRefresh -= BossLineRefresh;
            model.bossLineRefresh += BossLineRefresh;
        }
        public override void Dispose()
        {
            base.Dispose();
            model.bossLineRefresh -= DisplayParticipant;
            model.selectBossRefresh -= SelectBossRefresh;
            model.bossLineRefresh -= BossLineRefresh;
        }
        protected override void OnSubscribe(int _bossId)
        {
            base.OnSubscribe(_bossId);
            if (bossId != _bossId)
            {
                return;
            }
            DisplaySubscrib();
        }
        protected override void OnBossInfoUpdate(int _bossId)
        {
            base.OnBossInfoUpdate(_bossId);
            var condition = 0;
            var unLocked = model.IsBossUnLocked(bossId, out condition);
            m_Participant.gameObject.SetActive(unLocked && findPreciousModel.IsBossAlive(bossId));
        }
        private void BossLineRefresh()
        {
            DisplayParticipant();
        }
        public void DisplayBase()
        {
            var config = Config.Instance.Get<NPCConfig>(bossNpcId);
            var jadeDynastyBossConfig = Config.Instance.Get<JadeDynastyBossConfig>(bossNpcId);
            DrawBossBaseInfo(jadeDynastyBossConfig.PortraitID, config.charName, config.NPCLV, config.ClientRealm);
        }
        private void DisplaySubscrib()
        {
            m_ContainerAttention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
        }
        private void DisplayParticipant()
        {
            m_Participant.gameObject.SetActive(isUnLocked && findPreciousModel.IsBossAlive(bossId));
            m_Participant.text = Language.Get("FindPrecious_8", model.GetParticipantCount(bossId));
        }
        private void DisplayCondition()
        {
            m_ContainerUnChanllgeable.gameObject.SetActive(!isUnLocked);
            m_ContainerChallengeable.gameObject.SetActive(isUnLocked);
            var conditionCode = 0;
            JadeDynastyBossCondition condition;
            m_ChallengeCondition.text = string.Empty;
            if (!model.IsBossUnLocked(bossId, out conditionCode)
                && model.TryGetCondition(bossId, out condition))
            {
                switch (conditionCode)
                {
                    case 1:
                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition1", condition.level);
                        break;
                    case 2:
                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition2",
                            UIHelper.GetRealmName(condition.realmLevel, true));
                        break;
                    case 3:
                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition3",
                            UIHelper.ReplaceLargeNum(condition.score));
                        break;
                }
            }
        }
        private void SelectBossRefresh(int bossId)
        {
            UpdateBossNameLevelFont(interactorableState);
        }
    }
}
System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 2702bea692bcf804bae79ec04595d208
timeCreated: 1547717475
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs
New file
@@ -0,0 +1,22 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyBossKillRecord : MonoBehaviour
    {
        [SerializeField] Text m_KillTime;
        [SerializeField] Text m_PlayerName;
        public void Display(DateTime time, string playerName)
        {
            m_KillTime.text = time.ToString("hh:mm:ss");
            m_PlayerName.text = UIHelper.ServerStringTrim(playerName);
        }
    }
}
System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: ee1187f4529637c48840fb84410ef1f7
timeCreated: 1547809917
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyBossModel.cs
New file
@@ -0,0 +1,460 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TableConfig;
using System;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    [XLua.LuaCallCSharp]
    public class JadeDynastyBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IAfterPlayerDataInitialize
    {
        List<JadeDynastyBossData> jadeDynastyBosses = new List<JadeDynastyBossData>();
        Dictionary<int, JadeDynastyBossLine> jadeDynastyBossLineDict = new Dictionary<int, JadeDynastyBossLine>();
        Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>();
        public const int JADEDYNASTY_MAP = 31380;
        public const int FUNCTIONID = 163;
        public const int JADEDYNASTY_REDPOINTID = 77003;
        public event Action<int> selectBossRefresh;
        public event Action bossLineRefresh;
        public event Action assistTimeRefresh;
        public event Action jadeDynastyScoreRefresh;
        public ulong jadeDynastyScore
        {
            get
            {
                ulong score = 0;
                SinglePackModel singlePackModel = packModel.GetSinglePackModel(PackType.rptJadeDynastyEquip);
                if (singlePackModel != null)
                {
                    Dictionary<int, ItemModel> equipBodyDict = singlePackModel.GetPackModelIndexDict();
                    if (equipBodyDict != null && equipBodyDict.Count > 0)
                    {
                        foreach (var _equip in equipBodyDict.Values)
                        {
                            score += (ulong)_equip.equipScore;
                        }
                    }
                }
                return score;
            }
        }
        public int challengeLimitCount { get; private set; }
        public int challengeTimes { get; private set; }
        public int assistTimes { get; private set; }
        int m_SelectBossId = 0;
        public int selectBossId
        {
            get { return m_SelectBossId; }
            set
            {
                if (m_SelectBossId != value)
                {
                    m_SelectBossId = value;
                    if (selectBossRefresh != null)
                    {
                        selectBossRefresh(value);
                    }
                }
            }
        }
        public int assginSelectBossId { get; set; }
        public readonly Redpoint redpoint = new Redpoint(FindPreciousModel.LOOTPRECIOUs_REDPOINTID, JADEDYNASTY_REDPOINTID);
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Init()
        {
            ParseConfig();
            dungeonModel.dungeonRecordChangeEvent += OnDungeonRecordUpdate;
            dungeonModel.updateDungeonBuyCnt += OnDungeonBuyCount;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            packModel.RefreshItemCountAct += RefreshItemCountAct;
        }
        public void OnBeforePlayerDataInitialize()
        {
            jadeDynastyBossLineDict.Clear();
            challengeTimes = 0;
            assistTimes = 0;
        }
        public void OnAfterPlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
        }
        public override void UnInit()
        {
            dungeonModel.dungeonRecordChangeEvent -= OnDungeonRecordUpdate;
            dungeonModel.updateDungeonBuyCnt -= OnDungeonBuyCount;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            packModel.RefreshItemCountAct -= RefreshItemCountAct;
        }
        void ParseConfig()
        {
            {
                var configs = Config.Instance.GetAllValues<JadeDynastyBossConfig>();
                foreach (var config in configs)
                {
                    var dungeonId = dungeonModel.GetDungeonId(JADEDYNASTY_MAP, config.LineID);
                    var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
                    jadeDynastyBosses.Add(new JadeDynastyBossData()
                    {
                        bossNpcId = config.NPCID,
                        lineId = config.LineID,
                        challengeCondition = new JadeDynastyBossCondition()
                        {
                            level = dungeonConfig.LVLimitMin,
                            realmLevel = config.RealmLV,
                            score = config.ZhuXianScore,
                        },
                    });
                    var itemArray = LitJson.JsonMapper.ToObject<int[][]>(config.dropItems);
                    List<Item> list = new List<Item>();
                    for (int k = 0; k < itemArray.Length; k++)
                    {
                        Item item = new Item()
                        {
                            id = itemArray[k][0],
                            count = itemArray[k][1],
                            bind = itemArray[k][2] == 1,
                        };
                        list.Add(item);
                    }
                    dropItemDict.Add(config.NPCID, list);
                }
                jadeDynastyBosses.Sort(SortCompare);
            }
            {
                var config = Config.Instance.Get<FuncConfigConfig>("ZhuXianBossCntCfg");
                challengeLimitCount = int.Parse(config.Numerical2);
            }
        }
        public bool IsJadeDynastyBoss(int bossNpcId)
        {
            var index = jadeDynastyBosses.FindIndex((x) =>
            {
                return x.bossNpcId == bossNpcId;
            });
            return index >= 0;
        }
        public bool IsBossUnLocked(int bossNpcId, out int condition)
        {
            condition = 0;
            var index = jadeDynastyBosses.FindIndex((x) =>
            {
                return x.bossNpcId == bossNpcId;
            });
            if (index != -1)
            {
                var challengeCondition = jadeDynastyBosses[index].challengeCondition;
                if (PlayerDatas.Instance.baseData.LV < challengeCondition.level)
                {
                    condition = 1;
                    return false;
                }
                if (PlayerDatas.Instance.baseData.realmLevel < challengeCondition.realmLevel)
                {
                    condition = 2;
                    return false;
                }
                if (jadeDynastyScore < (ulong)challengeCondition.score)
                {
                    condition = 3;
                    return false;
                }
            }
            return true;
        }
        public List<int> GetJadeDynastyBosses()
        {
            List<int> list = new List<int>();
            foreach (var boss in jadeDynastyBosses)
            {
                list.Add(boss.bossNpcId);
            }
            return list;
        }
        public int GetParticipantCount(int bossId)
        {
            var index = jadeDynastyBosses.FindIndex((x) =>
              {
                  return x.bossNpcId == bossId;
              });
            var lineId = -1;
            if (index != -1)
            {
                lineId = jadeDynastyBosses[index].lineId;
            }
            if (jadeDynastyBossLineDict.ContainsKey(lineId))
            {
                return jadeDynastyBossLineDict[lineId].playerCount;
            }
            return 0;
        }
        public int GetLatestUnLockBoss()
        {
            if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
            {
                var latestBossId = jadeDynastyBosses[0].bossNpcId;
                foreach (var boss in jadeDynastyBosses)
                {
                    var condition = 0;
                    if (IsBossUnLocked(boss.bossNpcId, out condition))
                    {
                        latestBossId = boss.bossNpcId;
                    }
                }
                return latestBossId;
            }
            else
            {
                return jadeDynastyBosses[0].bossNpcId;
            }
        }
        public bool TryGetDropItems(int bossId, out List<Item> dropItems)
        {
            return dropItemDict.TryGetValue(bossId, out dropItems);
        }
        public bool TryGetCondition(int bossId, out JadeDynastyBossCondition condition)
        {
            var index = jadeDynastyBosses.FindIndex((x) =>
            {
                return x.bossNpcId == bossId;
            });
            condition = default(JadeDynastyBossCondition);
            if (index != -1)
            {
                condition = jadeDynastyBosses[index].challengeCondition;
            }
            return index != -1;
        }
        public bool TryGetBossLine(int bossId, out JadeDynastyBossLine mapLineState)
        {
            var index = jadeDynastyBosses.FindIndex((x) =>
            {
                return x.bossNpcId == bossId;
            });
            var lineId = -1;
            if (index != -1)
            {
                lineId = jadeDynastyBosses[index].lineId;
            }
            return jadeDynastyBossLineDict.TryGetValue(lineId, out mapLineState);
        }
        public bool TryEnterDungeon(int bossId,out int error)
        {
            var condition = 0;
            error = 0;
            if (!IsBossUnLocked(bossId, out condition))
            {
                switch (condition)
                {
                    case 1:
                        error = 1;
                        break;
                    case 2:
                        error = 2;
                        break;
                    case 3:
                        error = 3;
                        break;
                }
                return false;
            }
            var totalTimes = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP);
            var enterTimes = dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
            if (enterTimes >= totalTimes && assistTimes <= 0)
            {
                error = 4;
                return false;
            }
            if (!findPreciousModel.IsBossAlive(bossId))
            {
                error = 5;
                return false;
            }
            if (CrossServerUtility.IsCrossServer())
            {
                error = 6;
                return false;
            }
            return true;
        }
        public void DisplayErrorTip(int error)
        {
            switch (error)
            {
                case 1:
                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_1");
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_2");
                    break;
                case 3:
                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_3");
                    break;
                case 4:
                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_4");
                    break;
                case 5:
                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_5");
                    break;
                case 6:
                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
                    break;
            }
        }
        public void OnReceivePackage(HA007_tagGCFBLinePlayerCnt package)
        {
            if (package.MapID != JADEDYNASTY_MAP)
            {
                return;
            }
            jadeDynastyBossLineDict.Clear();
            for (int i = 0; i < package.Count; i++)
            {
                var mapState = package.FBLineInfoList[i];
                jadeDynastyBossLineDict[mapState.FBLineID] = new JadeDynastyBossLine()
                {
                    playerCount = mapState.PlayerCnt,
                    belongToPlayerName = mapState.ExtraStr,
                };
            }
            if (bossLineRefresh != null)
            {
                bossLineRefresh();
            }
        }
        public void OnReceivePackage(HB212_tagMCZhuXianBossCnt package)
        {
            assistTimes = package.Cnt;
            if (assistTimeRefresh != null)
            {
                assistTimeRefresh();
            }
        }
        public static int SortCompare(JadeDynastyBossData lhs, JadeDynastyBossData rhs)
        {
            if (lhs.challengeCondition.level != rhs.challengeCondition.level)
            {
                return lhs.challengeCondition.level.CompareTo(rhs.challengeCondition.level);
            }
            if (lhs.challengeCondition.realmLevel != rhs.challengeCondition.realmLevel)
            {
                return lhs.challengeCondition.realmLevel.CompareTo(rhs.challengeCondition.realmLevel);
            }
            if (lhs.challengeCondition.score != rhs.challengeCondition.score)
            {
                return lhs.challengeCondition.score.CompareTo(rhs.challengeCondition.score);
            }
            return 0;
        }
        private void OnDungeonRecordUpdate(int _dataMapId)
        {
            if (JADEDYNASTY_MAP == _dataMapId)
            {
                UpdateRedpoint();
            }
        }
        private void OnDungeonBuyCount()
        {
            UpdateRedpoint();
        }
        private void OnFuncStateChangeEvent(int id)
        {
            if (id == FUNCTIONID)
            {
                UpdateRedpoint();
            }
        }
        private void RefreshItemCountAct(PackType packType, int arg2, int arg3)
        {
            if (packType == PackType.rptJadeDynastyEquip)
            {
                UpdateRedpoint();
                if (jadeDynastyScoreRefresh != null)
                {
                    jadeDynastyScoreRefresh();
                }
            }
        }
        void UpdateRedpoint()
        {
            if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
            {
                var count = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP) - dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
                redpoint.count = count;
            }
            else
            {
                redpoint.count = 0;
            }
            redpoint.state = redpoint.count > 0 ? RedPointState.Quantity : RedPointState.None;
        }
    }
    public struct JadeDynastyBossData
    {
        public int bossNpcId;
        public int lineId;
        public JadeDynastyBossCondition challengeCondition;
    }
    public struct JadeDynastyBossCondition
    {
        public int level;
        public int realmLevel;
        public int score;
    }
    public struct JadeDynastyBossLine
    {
        public int playerCount;
        public string belongToPlayerName;
    }
}
System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d06ff7d7549599a4aa5a8a0dfc1e69f5
timeCreated: 1547717239
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
New file
@@ -0,0 +1,252 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, January 19, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyBossVictoryWin : Window
    {
        [SerializeField] Transform m_ContainerPoivt;
        [SerializeField] Transform m_ContainerKill;
        [SerializeField] Text m_Rank;
        [SerializeField] Transform m_ContainerAssist;
        [SerializeField] Text m_AssistRank;
        [SerializeField] ScrollRect m_RewardsScroll;
        [SerializeField] Text m_ExitTimer;
        [SerializeField] HorizontalLayoutGroup m_RewardLayout;
        [SerializeField] ButtonEx m_Exit;
        float timer = 0f;
        List<DemonJarRewardBehaviour> rewardBehaviours = new List<DemonJarRewardBehaviour>();
        DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        JadeDynastyBossModel jadeDynastyModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Exit.AddListener(ExitDungeon);
        }
        protected override void OnPreOpen()
        {
            timer = 0f;
            m_ContainerPoivt.gameObject.SetActive(false);
        }
        protected override void OnActived()
        {
            base.OnActived();
            var config = Config.Instance.Get<DungeonOpenTimeConfig>(model.dungeonResult.dataMapID);
            StartCoroutine(Co_DelayDisplay(config.DelayTime * 0.001f));
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            var endTime = model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap);
            if (endTime > TimeUtility.ServerNow)
            {
                timer -= Time.deltaTime;
                if (timer < 0f)
                {
                    timer = 1f;
                    var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds;
                    m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp((int)seconds, 0, int.MaxValue));
                }
                if (!m_ExitTimer.gameObject.activeInHierarchy)
                {
                    m_ExitTimer.gameObject.SetActive(true);
                }
            }
            else
            {
                if (m_ExitTimer.gameObject.activeInHierarchy)
                {
                    m_ExitTimer.gameObject.SetActive(false);
                }
            }
        }
        #endregion
        IEnumerator Co_DelayDisplay(float _delay)
        {
            yield return new WaitForSeconds(_delay);
            var endTime = model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap);
            var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds;
            timer = 0f;
            m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp((int)seconds, 0, int.MaxValue));
            m_ExitTimer.gameObject.SetActive(true);
            m_ContainerPoivt.gameObject.SetActive(true);
            DisplayRewards();
            var rank = model.dungeonResult.rank;
            m_ContainerAssist.gameObject.SetActive(rank != 1);
            m_ContainerKill.gameObject.SetActive(rank == 1);
            if (rank == 1)
            {
                DisplayKill();
            }
            else
            {
                DisplayAssist();
            }
        }
        private void DisplayKill()
        {
            m_Rank.text = Language.Get("DemonJar7", 1);
        }
        private void DisplayAssist()
        {
            m_AssistRank.text = Language.Get("DemonJar7", 1);
        }
        private void DisplayRewards()
        {
            var serverItems = model.dungeonResult.itemInfo;
            var items = new List<Item>();
            if (serverItems != null)
            {
                for (int i = 0; i < serverItems.Length; i++)
                {
                    items.Add(new Item(serverItems[i].ItemID, serverItems[i].Count));
                }
            }
            items.Sort(RewardSort);
            GenerateRewardBehaviour(m_RewardsScroll.content, items.Count);
            if (items.Count < 6)
            {
                m_RewardLayout.childAlignment = TextAnchor.MiddleCenter;
                (m_RewardLayout.transform as RectTransform).pivot = new Vector2(0.5f, 0.5f);
            }
            else
            {
                m_RewardLayout.childAlignment = TextAnchor.MiddleLeft;
                (m_RewardLayout.transform as RectTransform).pivot = new Vector2(0, 0.5f);
            }
            for (int i = 0; i < rewardBehaviours.Count; i++)
            {
                var behaviour = rewardBehaviours[i];
                if (i < items.Count)
                {
                    behaviour.gameObject.SetActive(true);
                    behaviour.Display(items[i]);
                }
                else
                {
                    behaviour.gameObject.SetActive(false);
                }
            }
        }
        private void ExitDungeon()
        {
            model.ExitCurrentDungeon();
        }
        private int RewardSort(Item _lhs, Item _rhs)
        {
            var islhsJadeDynastyEquip = IsJadeDynastyEquip(_lhs);
            var isrhsJadeDynastyEquip = IsJadeDynastyEquip(_rhs);
            if (islhsJadeDynastyEquip != isrhsJadeDynastyEquip)
            {
                return -islhsJadeDynastyEquip.CompareTo(isrhsJadeDynastyEquip);
            }
            var islhsJadeDynasty126 = IsJadeDynasty126(_lhs);
            var isrhsJadeDynasty126 = IsJadeDynasty126(_rhs);
            if (islhsJadeDynasty126 == isrhsJadeDynasty126
                && islhsJadeDynasty126)
            {
                return _lhs.id.CompareTo(_rhs.id);
            }
            else if (islhsJadeDynasty126 != isrhsJadeDynasty126)
            {
                return -islhsJadeDynasty126.CompareTo(isrhsJadeDynasty126);
            }
            var lhsConfig = Config.Instance.Get<ItemConfig>(_lhs.id);
            var rhsConfig = Config.Instance.Get<ItemConfig>(_rhs.id);
            if (lhsConfig != null && rhsConfig != null)
            {
                return -lhsConfig.ItemColor.CompareTo(rhsConfig.ItemColor);
            }
            return 0;
        }
        bool IsJadeDynastyEquip(Item item)
        {
            var config = Config.Instance.Get<ItemConfig>(item.id);
            var type = 0;
            if (config != null)
            {
                type = config.Type;
            }
            return type >= 128 && type <= 137;
        }
        bool IsJadeDynasty126(Item item)
        {
            var config = Config.Instance.Get<ItemConfig>(item.id);
            var type = 0;
            if (config != null)
            {
                type = config.Type;
            }
            return type == 126;
        }
        private void GenerateRewardBehaviour(RectTransform _parent, int _needCount)
        {
            var nowCount = rewardBehaviours.Count;
            var dif = _needCount - nowCount;
            if (dif > 0)
            {
                for (int i = 0; i < dif; i++)
                {
                    var instance = UIUtility.CreateWidget("DemonJarRewardBehaviour", "DemonJarRewardBehaviour");
                    var behaviour = instance.GetComponent<DemonJarRewardBehaviour>();
                    rewardBehaviours.Add(behaviour);
                    instance.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one);
                }
            }
        }
    }
}
System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 89694d5b27c7f1c429cd3c2a2cd449c1
timeCreated: 1547865026
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyBossWin.cs
New file
@@ -0,0 +1,386 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, January 17, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyBossWin : Window
    {
        [SerializeField] CyclicScroll m_Bosses;
        [SerializeField] ItemCell[] m_Items;
        [SerializeField] Text m_ChallengeTimes;
        [SerializeField] Text m_AssistTimes;
        [SerializeField] Text m_JadeDynastyScore;
        [SerializeField] Button m_BuyTimes;
        [SerializeField] Transform m_SurpassLevel;
        [SerializeField] ToggleButton m_Subscribe;
        [SerializeField] Button m_Goto;
        [SerializeField] Transform m_ContainerKillRecord;
        [SerializeField] Transform m_ContainerNoneRecord;
        [SerializeField] Transform m_ContainerExistRecord;
        [SerializeField] JadeDynastyBossKillRecord[] m_KillRecords;
        [SerializeField] Transform m_ContainerBelongTo;
        [SerializeField] Text m_BelongToPlayerName;
        [SerializeField] Text m_BelongToNonePlayer;
        JadeDynastyBossModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        float refreshBossStateTime = 0f;
        DateTime lastRequestMapStateTime = DateTime.Now;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_BuyTimes.AddListener(BuyTimes);
            m_Subscribe.AddListener(SwitchSubscribeBoss);
            m_Goto.AddListener(GotoKillBoss);
        }
        protected override void OnPreOpen()
        {
            SetDefaultSelectBoss();
            refreshBossStateTime = -1f;
            FindPreciousModel.BossInfo bossInfo;
            if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive())
            {
                if (TimeUtility.ServerNow <= bossInfo.refreshTime)
                {
                    var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1;
                    refreshBossStateTime = Time.realtimeSinceStartup + seconds;
                }
            }
            lastRequestMapStateTime = DateTime.Now;
            mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP);
            model.assginSelectBossId = 0;
        }
        protected override void OnActived()
        {
            base.OnActived();
            Display();
        }
        protected override void OnAfterOpen()
        {
            model.selectBossRefresh += SelectBossRefresh;
            dungeonModel.updateDungeonBuyCnt += ChallengeTimesRefresh;
            dungeonModel.dungeonRecordChangeEvent += ChallengeTimesRefresh;
            findPreciousModel.bossSubscribeChangeEvent += DisplaySubscribe;
            findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent;
            model.bossLineRefresh += BossLineRefresh;
            model.assistTimeRefresh += AssistTimeRefresh;
            model.jadeDynastyScoreRefresh += JadeDynastyScoreRefresh;
        }
        protected override void OnPreClose()
        {
            model.selectBossRefresh -= SelectBossRefresh;
            dungeonModel.updateDungeonBuyCnt -= ChallengeTimesRefresh;
            dungeonModel.dungeonRecordChangeEvent -= ChallengeTimesRefresh;
            findPreciousModel.bossSubscribeChangeEvent -= DisplaySubscribe;
            findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent;
            model.bossLineRefresh -= BossLineRefresh;
            model.assistTimeRefresh -= AssistTimeRefresh;
            model.jadeDynastyScoreRefresh -= JadeDynastyScoreRefresh;
            refreshBossStateTime = -1f;
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (refreshBossStateTime > 0)
            {
                if (Time.realtimeSinceStartup > refreshBossStateTime)
                {
                    DisplayKillRecord();
                    DisplayBelongTo();
                    refreshBossStateTime = -1f;
                }
            }
            if ((DateTime.Now - lastRequestMapStateTime).TotalSeconds >= 5f)
            {
                lastRequestMapStateTime = DateTime.Now;
                mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP);
            }
        }
        #endregion
        public void SetDefaultSelectBoss()
        {
            if (model.assginSelectBossId != 0
                && model.IsJadeDynastyBoss(model.assginSelectBossId))
            {
                model.selectBossId = model.assginSelectBossId;
            }
            else
            {
                model.selectBossId = model.GetLatestUnLockBoss();
            }
        }
        public void Display()
        {
            DisplayBosses();
            DisplayChallengeTimes();
            DisplayDropItems();
            DisplaySubscribe(model.selectBossId);
            DisplayKillRecord();
            DisplayBelongTo();
            DisplayAssistTimes();
            DisplayJadeDynastyScore();
        }
        public void DisplayBosses()
        {
            var bosses = model.GetJadeDynastyBosses();
            m_Bosses.Init(bosses);
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectBossId));
        }
        public void DisplayChallengeTimes()
        {
            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
            m_ChallengeTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", model.challengeLimitCount);
        }
        public void DisplayAssistTimes()
        {
            m_AssistTimes.text = model.assistTimes.ToString();
        }
        void DisplayDropItems()
        {
            List<Item> dropItems = null;
            model.TryGetDropItems(model.selectBossId, out dropItems);
            for (int i = 0; i < m_Items.Length; i++)
            {
                m_Items[i].cellBtn.RemoveAllListeners();
                if (dropItems != null && i < dropItems.Count)
                {
                    m_Items[i].gameObject.SetActive(true);
                    var item = dropItems[i];
                    ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count, item.bind ? 1 : 0);
                    m_Items[i].Init(itemCellModel);
                    m_Items[i].cellBtn.AddListener(() =>
                    {
                        ItemAttrData itemAttrData = new ItemAttrData(item.id, true, (ulong)item.count, -1, item.bind ? 1 : 0);
                        ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData);
                    });
                }
                else
                {
                    m_Items[i].gameObject.SetActive(false);
                }
            }
            var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(model.selectBossId);
            var dropMaxLevel = 0;
            if (npcDropConfig != null)
            {
                dropMaxLevel = npcDropConfig.MaxLV;
            }
            m_SurpassLevel.gameObject.SetActive(dropMaxLevel != 0
                   && PlayerDatas.Instance.baseData.LV > dropMaxLevel);
        }
        private void DisplaySubscribe(int _bossId)
        {
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectBossId);
        }
        private void DisplayKillRecord()
        {
            var alive = findPreciousModel.IsBossAlive(model.selectBossId);
            m_ContainerKillRecord.gameObject.SetActive(!alive);
            if (!alive)
            {
                var killRecords = findPreciousModel.GetBossKillRecords(model.selectBossId);
                m_ContainerExistRecord.gameObject.SetActive(killRecords != null && killRecords.Count > 0);
                m_ContainerNoneRecord.gameObject.SetActive(killRecords == null || killRecords.Count == 0);
                if (killRecords != null && killRecords.Count > 0)
                {
                    for (int i = 0; i < m_KillRecords.Length; i++)
                    {
                        if (killRecords != null && i < killRecords.Count)
                        {
                            m_KillRecords[i].gameObject.SetActive(true);
                            m_KillRecords[i].Display(killRecords[i].killTime, killRecords[i].playerName);
                        }
                        else
                        {
                            m_KillRecords[i].gameObject.SetActive(false);
                        }
                    }
                }
            }
        }
        private void DisplayBelongTo()
        {
            var alive = findPreciousModel.IsBossAlive(model.selectBossId);
            m_ContainerBelongTo.gameObject.SetActive(alive);
            if (alive)
            {
                var belongToPlayer = false;
                JadeDynastyBossLine jadeDynastyBossLine;
                if (model.TryGetBossLine(model.selectBossId, out jadeDynastyBossLine))
                {
                    if (!string.IsNullOrEmpty(jadeDynastyBossLine.belongToPlayerName))
                    {
                        belongToPlayer = true;
                    }
                }
                m_BelongToNonePlayer.gameObject.SetActive(!belongToPlayer);
                m_BelongToPlayerName.gameObject.SetActive(belongToPlayer);
                if (belongToPlayer)
                {
                    m_BelongToPlayerName.text = jadeDynastyBossLine.belongToPlayerName;
                }
            }
        }
        private void DisplayJadeDynastyScore()
        {
            m_JadeDynastyScore.text = Language.Get("JadeDynastyBossWin_Score", UIHelper.ReplaceLargeNum(model.jadeDynastyScore));
        }
        private void SelectBossRefresh(int bossId)
        {
            DisplayDropItems();
            DisplaySubscribe(model.selectBossId);
            DisplayKillRecord();
            DisplayBelongTo();
            FindPreciousModel.BossInfo bossInfo;
            if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive())
            {
                if (TimeUtility.ServerNow <= bossInfo.refreshTime)
                {
                    var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1;
                    refreshBossStateTime = Time.realtimeSinceStartup + seconds;
                }
            }
        }
        private void BossLineRefresh()
        {
            DisplayBelongTo();
        }
        private void AssistTimeRefresh()
        {
            DisplayAssistTimes();
        }
        private void ChallengeTimesRefresh()
        {
            DisplayChallengeTimes();
        }
        private void ChallengeTimesRefresh(int mapId)
        {
            if (JadeDynastyBossModel.JADEDYNASTY_MAP != mapId)
            {
                return;
            }
            DisplayChallengeTimes();
        }
        private void JadeDynastyScoreRefresh()
        {
            DisplayJadeDynastyScore();
        }
        private void BuyTimes()
        {
            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
            if ((totalTimes - enterTimes) >= model.challengeLimitCount)
            {
                MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18"));
                return;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var dataMapId = dungeonModel.GetDataMapIdByMapId(mapId);
            if (dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
            {
                SysNotifyMgr.Instance.ShowTip("JadeDynastyBossBuyTimesError");
                return;
            }
            else
            {
                dungeonModel.currentDungeon = new Dungeon(JadeDynastyBossModel.JADEDYNASTY_MAP, 0);
                WindowCenter.Instance.Open<DungeonBuyTimesWin>();
            }
        }
        private void SwitchSubscribeBoss()
        {
            if (findPreciousModel.IsBossSubscribed(model.selectBossId))
            {
                findPreciousModel.RequestDeSubscribeBoss(model.selectBossId);
            }
            else
            {
                findPreciousModel.RequestSubscribeBoss(model.selectBossId, false);
            }
        }
        private void BossInfoUpdateEvent(int bossId)
        {
            if (bossId == model.selectBossId)
            {
                DisplayKillRecord();
                DisplayBelongTo();
            }
        }
        private void GotoKillBoss()
        {
            var error = 0;
            if (model.TryEnterDungeon(model.selectBossId, out error))
            {
                var config = Config.Instance.Get<JadeDynastyBossConfig>(model.selectBossId);
                dungeonModel.SingleChallenge(JadeDynastyBossModel.JADEDYNASTY_MAP, config.LineID);
            }
            else
            {
                model.DisplayErrorTip(error);
            }
        }
    }
}
System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 83c74804cfa865445b2b77e5bd090dd6
timeCreated: 1547717380
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs
New file
@@ -0,0 +1,53 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, January 18, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyDamageRankWin : Window
    {
        [SerializeField] DungeonRankBehaviour m_RankBehaviour;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            m_RankBehaviour.Init(dataMapId);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
    }
}
System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 118ee6dbac3babc488ba966899aae754
timeCreated: 1547814117
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a3c2973f5500e1c46ab255e7d5247562
folderAsset: yes
timeCreated: 1547867772
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs
New file
@@ -0,0 +1,76 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using System.Collections.Generic;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class JadeDynastyDecomposeLineBeh : ScrollerUI
    {
        [SerializeField] List<DecomposeItemBeh> itemBehs = new List<DecomposeItemBeh>();
        JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Refresh(CellView cell)
        {
            var decomposeGuids = decomposeModel.allGuids;
            int length = itemBehs.Count;
            for(int i = 0; i < length; i++)
            {
                var itemBeh = itemBehs[i];
                int index = cell.index*length + i;
                if(decomposeGuids != null
                    && index < decomposeGuids.Count)
                {
                    var guid = decomposeGuids[index];
                    var model = playerPack.GetItemModelByGUID(guid);
                    itemBeh.SetDisplay(model,decomposeModel.selectGuids);
                }
                else
                {
                    itemBeh.SetDisplay(null,null);
                }
            }
        }
        [Serializable]
        public class DecomposeItemBeh
        {
            [SerializeField] CommonItemBaisc itemBaisc;
            [SerializeField] GameObject selectObj;
            JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
            public void SetDisplay(ItemModel itemModel,List<string> selectGuids)
            {
                if (itemModel == null || selectGuids == null)
                {
                    itemBaisc.gameObject.SetActive(false);
                    selectObj.SetActive(false);
                }
                else
                {
                    itemBaisc.gameObject.SetActive(true);
                    selectObj.SetActive(selectGuids.Contains(itemModel.itemInfo.ItemGUID));
                    itemBaisc.Init(itemModel);
                    itemBaisc.cellBtn.RemoveAllListeners();
                    itemBaisc.cellBtn.AddListener(()=>
                    {
                        if(selectObj.activeInHierarchy)
                        {
                            this.decomposeModel.RemoveSelectModel(itemModel.itemInfo.ItemGUID);
                        }
                        else
                        {
                            this.decomposeModel.AddSelectModel(itemModel.itemInfo.ItemGUID);
                        }
                        selectObj.SetActive(!selectObj.activeInHierarchy);
                    });
                }
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6b9a652b72ad50041b82658a1246c004
timeCreated: 1548072997
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
New file
@@ -0,0 +1,142 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Snxxz.UI
{
    public class JadeDynastyDecomposeModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
    {
        public int selectEquipLv { get; private set; }
        public bool isAutoDecompose { get; private set; }
        public string LocalSaveSelectEquipLv { get; private set;}
        public string LocalSaveAutoDecompose { get; private set;}
        public List<string> selectGuids { get; private set; }
        public List<string> allGuids { get; private set; }
        public event Action UpdateSelectItemEvent;
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Init()
        {
            selectGuids = new List<string>();
            allGuids = new List<string>();
        }
        public void OnBeforePlayerDataInitialize()
        {
        }
        public void OnAfterPlayerDataInitialize()
        {
            int playerId = (int)PlayerDatas.Instance.PlayerId;
            LocalSaveSelectEquipLv = StringUtility.Contact("JadeDynastyDecomposeSelectEquipLv",playerId);
            LocalSaveAutoDecompose = StringUtility.Contact("JadeDynastyAutoDecompose",playerId);
            GetSelectEquipLvByLocalSave();
            IsAutoDecomposeByLocalSave();
        }
        public void OnPlayerLoginOk()
        {
            UpdateDecomposeModels();
            UpdateSelectModels();
        }
        public override void UnInit()
        {
        }
        private int GetSelectEquipLvByLocalSave()
        {
            selectEquipLv = LocalSave.GetInt(LocalSaveSelectEquipLv);
            return selectEquipLv;
        }
        private bool IsAutoDecomposeByLocalSave()
        {
            isAutoDecompose = LocalSave.GetBool(LocalSaveAutoDecompose);
            return isAutoDecompose;
        }
        public void UpdateSelectEquipLv(int equipLv)
        {
            selectEquipLv = equipLv;
            UpdateSelectModels();
            LocalSave.SetInt(LocalSaveSelectEquipLv,equipLv);
        }
        public void UpdateIsAutoDecompose(bool isAuto)
        {
            isAutoDecompose = isAuto;
            LocalSave.SetBool(LocalSaveAutoDecompose,isAutoDecompose);
        }
        public void UpdateDecomposeModels()
        {
            allGuids.Clear();
            var singlePack = playerPack.GetSinglePackModel(PackType.rptJadeDynastyItem);
            if (singlePack == null) return;
            var itemDict = singlePack.GetPackModelIndexDict();
            foreach(var index in itemDict.Keys)
            {
                var model = itemDict[index];
                if(model.chinItemModel.EquipPlace > 0)
                {
                    allGuids.Add(model.itemInfo.ItemGUID);
                }
            }
        }
        public void UpdateSelectModels()
        {
            selectGuids.Clear();
            foreach(var guid in allGuids)
            {
                var model = playerPack.GetItemModelByGUID(guid);
                if(model != null)
                {
                    if (selectEquipLv != 0
                   && model.chinItemModel.LV <= selectEquipLv)
                    {
                        selectGuids.Add(model.itemInfo.ItemGUID);
                    }
                }
            }
            if(UpdateSelectItemEvent != null)
            {
                UpdateSelectItemEvent();
            }
        }
        public void AddSelectModel(string guid)
        {
            if (guid == null) return;
            if(!selectGuids.Contains(guid))
            {
                selectGuids.Add(guid);
                if(UpdateSelectItemEvent != null)
                {
                    UpdateSelectItemEvent();
                }
            }
        }
        public void RemoveSelectModel(string guid)
        {
            if (guid == null) return;
            if(selectGuids.Contains(guid))
            {
                selectGuids.Remove(guid);
                if (UpdateSelectItemEvent != null)
                {
                    UpdateSelectItemEvent();
                }
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d16f0dd3ef5fc9d48a0bbb2dae96ecf4
timeCreated: 1548069008
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
New file
@@ -0,0 +1,115 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastyDecomposeWin : Window
    {
        [SerializeField] ScrollerController decomposeCtrl;
        [SerializeField] SortTable sortTable;
        [SerializeField] Button closeBtn;
        [SerializeField] Button autoDecomposeBtn;
        [SerializeField] Button decomposeBtn;
        [SerializeField] Button selectBtn;
        [SerializeField] Image autoDecomposeImg;
        [SerializeField] Transform sortArrow;
        JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            closeBtn.AddListener(CloseClick);
            autoDecomposeBtn.AddListener(ClickAutoDecompose);
            decomposeBtn.AddListener(ClickDecompose);
            selectBtn.AddListener(ClickSelect);
        }
        protected override void OnPreOpen()
        {
            decomposeModel.UpdateSelectItemEvent += UpdateSelectItem;
            sortTable.onSortCloseEvent += CloseSortTable;
            sortTable.onSelectSortEvent += UpdateSelectEquipLv;
            sortTable.SetDefault();
            SetDisplay();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            decomposeModel.UpdateSelectItemEvent -= UpdateSelectItem;
            sortTable.onSortCloseEvent -= CloseSortTable;
            sortTable.onSelectSortEvent -= UpdateSelectEquipLv;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void SetDisplay()
        {
            CreateItemLine();
            sortArrow.localRotation = Quaternion.Euler(0, 0, 180);
            sortTable.gameObject.SetActive(false);
            autoDecomposeImg.gameObject.SetActive(decomposeModel.isAutoDecompose);
        }
        private void CreateItemLine()
        {
            decomposeModel.UpdateDecomposeModels();
            decomposeModel.UpdateSelectModels();
            decomposeCtrl.Refresh();
            for(int i = 0; i < decomposeModel.allGuids.Count; i++)
            {
                decomposeCtrl.AddCell(ScrollerDataType.Header,i);
            }
            decomposeCtrl.Restart();
        }
        private void UpdateSelectEquipLv(SortType type, int lv)
        {
            if (type != SortType.EquipLv) return;
            decomposeModel.UpdateSelectEquipLv(lv);
        }
        private void UpdateSelectItem()
        {
            decomposeCtrl.m_Scorller.RefreshActiveCellViews();
        }
        private void CloseSortTable()
        {
            sortArrow.localRotation = Quaternion.Euler(0, 0, 180);
        }
        private void ClickSelect()
        {
            sortArrow.localRotation = Quaternion.Euler(0, 0, 0);
            if (!sortTable.gameObject.activeInHierarchy)
            {
                sortTable.gameObject.SetActive(true);
            }
        }
        private void ClickDecompose()
        {
        }
        private void ClickAutoDecompose()
        {
            autoDecomposeImg.gameObject.SetActive(!decomposeModel.isAutoDecompose);
            decomposeModel.UpdateIsAutoDecompose(!decomposeModel.isAutoDecompose);
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4058e063e60ae424592cd7af03ad4fc9
timeCreated: 1548064681
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
New file
@@ -0,0 +1,81 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastyEquipBeh : MonoBehaviour
    {
        [SerializeField] RoleEquipType equipType = RoleEquipType.retMax;
        [SerializeField] GameObject lockObj;
        [SerializeField] ItemCell itemCell;
        [SerializeField] Text lockText;
        [SerializeField] Text nameText;
        [SerializeField] Button equipBtn;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        private void OnEnable()
        {
            playerPack.ItemCntAddAct += PutOnEquip;
            playerPack.ItemCntReduceAct += PutOffEquip;
            SetDisplay();
        }
        private void OnDisable()
        {
            playerPack.ItemCntAddAct -= PutOnEquip;
            playerPack.ItemCntReduceAct -= PutOffEquip;
        }
        public void SetDisplay()
        {
            bool islock = false;
            int towerLayer = 1;
            lockObj.SetActive(islock);
            lockText.gameObject.SetActive(islock);
            nameText.text = string.Empty;
            nameText.gameObject.SetActive(false);
            equipBtn.RemoveAllListeners();
            itemCell.cellBtn.RemoveAllListeners();
            if(islock)
            {
                itemCell.gameObject.SetActive(false);
                lockText.text = StringUtility.Contact("诛仙塔/n",towerLayer,"层解锁");
            }
            else
            {
                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyEquip,(int)equipType);
                itemCell.gameObject.SetActive(itemModel != null);
                if(itemModel != null)
                {
                    itemCell.Init(itemModel);
                    itemCell.cellBtn.AddListener(() => { ClickItemCell(itemModel); });
                }
            }
        }
        private void PutOffEquip(PackType type, int index, int id)
        {
            if (type != PackType.rptJadeDynastyEquip || index != (int)equipType) return;
            SetDisplay();
        }
        private void PutOnEquip(PackType type, int index, int id)
        {
            if (type != PackType.rptJadeDynastyEquip || index != (int)equipType) return;
            SetDisplay();
        }
        private void ClickItemCell(ItemModel item)
        {
            if (item == null) return;
            tipsModel.SetItemTipsModel(item.packType,item.itemInfo.ItemGUID);
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 932f7caddd34f5848a1b609234d55caa
timeCreated: 1548035370
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
New file
@@ -0,0 +1,97 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastyEquipWin : Window
    {
        [SerializeField] Button decomposeBtn;
        [Header("诛仙装备位")]
        [SerializeField] Button stoneAttrBtn;
        [SerializeField] Button suitAttrBtn;
        [Header("诛仙背包")]
        [SerializeField] ScrollerController itemCtrl;
        [SerializeField] int initCount = 100;
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            decomposeBtn.AddListener(ClickDecompose);
            stoneAttrBtn.AddListener(ClickStoneAttr);
            suitAttrBtn.AddListener(ClickSuitAttr);
        }
        protected override void OnPreOpen()
        {
            playerPack.RefreshItemCountAct += UpdateJadeDynastyItem;
            SetDisplay();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            playerPack.RefreshItemCountAct -= UpdateJadeDynastyItem;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void SetDisplay()
        {
            CreateItemLine();
        }
        private void CreateItemLine()
        {
            itemCtrl.Refresh();
            int line = initCount / 5;
            for(int i = 0; i < line; i++)
            {
                itemCtrl.AddCell(ScrollerDataType.Header,i);
            }
            itemCtrl.Restart();
        }
        private void UpdateJadeDynastyItem(PackType type, int index, int id)
        {
            if (type != PackType.rptJadeDynastyItem) return;
            UpdateItemLine();
        }
        private void UpdateItemLine()
        {
            itemCtrl.m_Scorller.RefreshActiveCellViews();
        }
        private void ClickSuitAttr()
        {
            WindowCenter.Instance.Open<JadeDynastySuitAttrWin>();
        }
        private void ClickStoneAttr()
        {
        }
        private void ClickDecompose()
        {
            WindowCenter.Instance.Open<JadeDynastyDecomposeWin>();
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: aece173e3072f4a45ac2c3d45709d527
timeCreated: 1547867941
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
New file
@@ -0,0 +1,39 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastyItemBeh : MonoBehaviour
    {
        [SerializeField] ItemCell itemCell;
        [SerializeField] Button lockBtn;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public void SetDisplay(int index)
        {
            var singlePack = playerPack.GetSinglePackModel(PackType.rptJadeDynastyItem);
            if (singlePack == null) return;
            var itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyItem, index);
            itemCell.gameObject.SetActive(itemModel != null);
            if(itemModel != null)
            {
                lockBtn.gameObject.SetActive(false);
                itemCell.Init(itemModel,true);
                itemCell.cellBtn.RemoveAllListeners();
                itemCell.cellBtn.AddListener(()=>
                {
                    tipsModel.SetItemTipsModel(itemModel.packType,itemModel.itemInfo.ItemGUID);
                });
            }
            else
            {
                bool isLock = index > (singlePack.openGridCount - 1);
                lockBtn.gameObject.SetActive(isLock);
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e6b6e570c6125ef46842e12a39509708
timeCreated: 1548038720
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs
New file
@@ -0,0 +1,25 @@
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using System.Collections.Generic;
namespace Snxxz.UI
{
    public class JadeDynastyItemLineBeh : ScrollerUI
    {
        [SerializeField] List<JadeDynastyItemBeh> itemBehs = new List<JadeDynastyItemBeh>();
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Refresh(CellView cell)
        {
            int length = itemBehs.Count;
            for(int i = 0; i < length; i++)
            {
                int index = cell.index * length + i;
                var itemBeh = itemBehs[i];
                itemBeh.SetDisplay(index);
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 90b8c7969d616ae458ab3efef2d4880d
timeCreated: 1548038657
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
New file
@@ -0,0 +1,84 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastyKnapSackWin : Window
    {
        [SerializeField] FunctionButton funcEquip;
        [SerializeField] FunctionButtonGroup funcGroup;
        [SerializeField] Button closeBtn;
        [SerializeField] Button leftBtn;
        [SerializeField] Button rightBtn;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            closeBtn.AddListener(CloseClick);
            leftBtn.AddListener(ClickLeft);
            rightBtn.AddListener(ClickRight);
            funcEquip.AddListener(ClickFuncEquip);
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
            funcGroup.TriggerByOrder(functionOrder);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void ClickRight()
        {
            funcGroup.TriggerNext();
        }
        private void ClickLeft()
        {
            funcGroup.TriggerLast();
        }
        private void ClickFuncEquip()
        {
            CloseSubWindows();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<JadeDynastyKnapSackWin>();
            }
            else
            {
                WindowCenter.Instance.Open<JadeDynastyKnapSackWin>();
            }
            functionOrder = funcEquip.order;
        }
        private void CloseSubWindows()
        {
            var children = WindowConfig.Get().FindChildWindows(this.GetType().Name);
            foreach (var window in children)
            {
                WindowCenter.Instance.Close(window);
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5336f00e3c02082409234c4d9281b34a
timeCreated: 1547867941
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
New file
@@ -0,0 +1,108 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using TableConfig;
namespace Snxxz.UI
{
    public class JadeDynastySuitAttrBeh : MonoBehaviour
    {
        [SerializeField] Text titleText;
        [SerializeField] List<SuitAttr> suitAttrs = new List<SuitAttr>();
        [SerializeField] GameObject noneActive;
        public void SetDisplay(int suitLv,bool isNext = false)
        {
            bool isShowNoneActive = false;
            if (!isNext)
            {
                bool isActive = true;
                isShowNoneActive = !isActive;
                titleText.text = StringUtility.Contact("套装总属性");
            }
            else
            {
                bool isMaxSuitLv = false;
                isShowNoneActive = isMaxSuitLv;
                titleText.text = StringUtility.Contact("进阶属性");
            }
            if(noneActive != null)
            {
                noneActive.SetActive(isShowNoneActive);
            }
            for(int i = 0; i < suitAttrs.Count; i++)
            {
                var suitAttr = suitAttrs[i];
                suitAttr.SetDisplay(i,1,null,null);
            }
        }
        [Serializable]
        public class SuitAttr
        {
            [SerializeField] Text suitTypeText;
            [SerializeField] List<GameObject> attrObjlist = new List<GameObject>();
            [SerializeField] List<Text> attrTextlist = new List<Text>();
            [SerializeField] Text activeText;
            [SerializeField] GameObject activeObj;
            ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
            public void SetDisplay(int suitType,int suitLv,List<int> ids,List<int> values)
            {
                if (ids == null || values == null) return;
                bool isActive = true;
                switch(suitType)
                {
                    case 0:
                        suitTypeText.text = StringUtility.Contact("诛仙守护LV." + suitLv);
                        break;
                    case 1:
                        suitTypeText.text = StringUtility.Contact("诛仙之力LV." + suitLv);
                        break;
                    case 2:
                        suitTypeText.text = StringUtility.Contact("诛仙剑阵LV." + suitLv);
                        break;
                }
                activeObj.SetActive(!isActive);
                if(!isActive)
                {
                    string conditionSB = StringUtility.Contact("达到8阶激活");
                }
                for (int i = 0; i < attrObjlist.Count; i++)
                {
                    var attrObj = attrObjlist[i];
                    attrObj.SetActive(i < ids.Count);
                    if(i < ids.Count)
                    {
                        var attrId = ids[i];
                        var attrValue = values[i];
                        var attrText = attrTextlist[i];
                        var attrConfig = Config.Instance.Get<PlayerPropertyConfig>(attrId);
                        string attrSB = string.Empty;
                        string attrValueSB = string.Empty;
                        if (isActive)
                        {
                          attrValueSB = UIHelper.AppendStringColor(TextColType.Green, tipsModel.GetProValueTypeStr(attrConfig, attrValue));
                        }
                        else
                        {
                            attrValueSB = UIHelper.AppendStringColor(TextColType.Gray, tipsModel.GetProValueTypeStr(attrConfig, attrValue));
                        }
                        if (attrConfig.Name.Contains("%s"))
                        {
                            attrSB = attrConfig.Name.Replace("%s", attrValueSB);
                        }
                        else
                        {
                            attrSB = StringUtility.Contact(attrConfig.Name, "+", attrValueSB);
                        }
                        attrText.text = attrSB;
                    }
                }
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fd03e25d39702af45834d010b9ce3c1f
timeCreated: 1548051833
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs
New file
@@ -0,0 +1,58 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class JadeDynastySuitAttrWin : Window
    {
        [SerializeField] JadeDynastySuitAttrBeh curSuitAttrBeh;
        [SerializeField] JadeDynastySuitAttrBeh nextSuitAttrBeh;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            SetDisplay();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void SetDisplay()
        {
            int curSuitLv = 0;
            int nextSuitLv = 1;
            bool isMaxSuitLv = false;
            nextSuitAttrBeh.gameObject.SetActive(!isMaxSuitLv);
            if(isMaxSuitLv)
            {
                curSuitAttrBeh.SetDisplay(curSuitLv);
            }
            else
            {
                curSuitAttrBeh.SetDisplay(curSuitLv);
                nextSuitAttrBeh.SetDisplay(nextSuitLv,true);
            }
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 57eff5f7971a1f74da451b3bde6e9606
timeCreated: 1548051551
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/KnapSack/Logic/EquipTip.cs
@@ -94,6 +94,11 @@
        [SerializeField]
        ScrollerController suirAttrCtrl;
        [Header("诛仙套装")]
        [SerializeField] GameObject jadeDynastySuitObj;
        [SerializeField] JadeDynastySuitAttrBeh curJadeDynastySuitAttr;
        [SerializeField] JadeDynastySuitAttrBeh nextJadeDynastySuitAttr;
        [SerializeField] List<GameObject> attrCutLinelist = new List<GameObject>();
        #endregion
@@ -235,6 +240,7 @@
            SetWashAttrUI();
            SetGemAttrUI();
            SetSuitAttrUI();
            SetJadeDynastySuitAttr();
            for (int i = 0; i < attrCutLinelist.Count; i++)
            {
                if (i == curAttrTypeNum - 1)
@@ -843,6 +849,37 @@
            }
        }
        private void SetJadeDynastySuitAttr()
        {
            if (jadeDynastySuitObj == null) return;
            if(itemAttrData.itemConfig.EquipPlace >= (int)RoleEquipType.JadeDynasty_Cloak
                && itemAttrData.itemConfig.EquipPlace <= (int)RoleEquipType.JadeDynasty_Sword4)
            {
                jadeDynastySuitObj.SetActive(true);
            }
            else
            {
                jadeDynastySuitObj.SetActive(false);
                return;
            }
            bool isMaxSuitLv = false;
            int maxSuitLv = 1;
            int curSuitLv = itemAttrData.packType == PackType.rptJadeDynastyItem ? maxSuitLv : 0;
            bool isShowNext = !isMaxSuitLv && itemAttrData.packType == PackType.rptJadeDynastyItem;
            nextJadeDynastySuitAttr.gameObject.SetActive(isShowNext);
            if(isShowNext)
            {
                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
                nextJadeDynastySuitAttr.SetDisplay(curSuitLv + 1);
            }
            else
            {
                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
            }
        }
        private void SetMidUIHeight(float midHeight)
        {
            scrollRect.enabled = false;
System/MainInterfacePanel/InGamePushContainer.cs
@@ -35,6 +35,7 @@
        DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } }
        DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
        CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }
        JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
@@ -269,10 +270,12 @@
                        show = !GeneralDefine.elderGodNoRebornRemindMaps.Contains(mapId);
                        break;
                    case FindPreciousType.DemonJar:
                        var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID);
                        var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID);
                        killable = totalTimes > enterTimes;
                        show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
                        {
                            var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID);
                            var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID);
                            killable = totalTimes > enterTimes;
                            show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
                        }
                        break;
                    case FindPreciousType.DogzDungeon:
                        killable = dogzDungeonModel.wearyValue < GeneralDefine.bossWearyValues[2];
@@ -282,6 +285,14 @@
                        killable = crossServerBossModel.wearyValue < GeneralDefine.bossWearyValues[2];
                        show = !GeneralDefine.dogzNoRebornRemindMaps.Contains(mapId);
                        break;
                    case FindPreciousType.JadeDynastyBoss:
                        {
                            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
                            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
                            killable = totalTimes > enterTimes;
                            show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
                        }
                        break;
                }
                if (!killable)
System/OpenServerActivity/OpenServiceAchievementModel.cs
@@ -20,7 +20,7 @@
    public int DayIndex;//第X天
    public int Point;//积分
    public int AwardRecord;//领奖记录
    public ActionTypeClass[] ActionType;//领奖信息
    public List<ActionTypeClass> ActionType;//领奖信息
}
public class TimeDayClass
{
@@ -154,30 +154,36 @@
            WeekPartyDayInfoClass WeekPartyDayInfo = new WeekPartyDayInfoClass();
            WeekPartyDayInfo.DayIndex = (int)DayInfo.DayIndex;
            WeekPartyDayInfo.Point = (int)DayInfo.Point;
            WeekPartyDayInfo.AwardRecord = (int)DayInfo.AwardRecord;
            WeekPartyDayInfo.AwardRecord = (int)DayInfo.AwardRecord;
            if (WeekPartyDayInfoDic.ContainsKey((int)DayInfo.DayIndex))
            {
                var dit = WeekPartyDayInfoDic[(int)DayInfo.DayIndex];
                dit.DayIndex= (int)DayInfo.DayIndex; 
                dit.Point = (int)DayInfo.Point; 
                dit.AwardRecord= (int)DayInfo.AwardRecord;
                for (int j = 0; j < dit.ActionType.Length; j++)
                for (int j = 0; j < DayInfo.ACount; j++)
                {
                    if (dit.ActionType[j].TemplateID == DayInfo.TaskList[0].TemplateID)
                    var taskList = DayInfo.TaskList[j];
                   int Index = dit.ActionType.FindIndex(s=>s.TemplateID== taskList.TemplateID);
                    if (Index != -1)
                    {
                        dit.ActionType[Index].CurTimes = taskList.CurTimes;
                        dit.ActionType[Index].GotTimes = taskList.GotTimes;
                    }
                    else
                    {
                        ActionTypeClass ActionType = new ActionTypeClass();
                        ActionType.TemplateID = DayInfo.TaskList[0].TemplateID;
                        ActionType.CurTimes = DayInfo.TaskList[0].CurTimes;
                        ActionType.GotTimes = DayInfo.TaskList[0].GotTimes;
                        dit.ActionType[j] = ActionType;
                    }
                        ActionType.TemplateID = taskList.TemplateID;
                        ActionType.CurTimes = taskList.CurTimes;
                        ActionType.GotTimes = taskList.GotTimes;
                        dit.ActionType.Add(ActionType);
                    }
                }
                WeekPartyDayInfoDic[(int)DayInfo.DayIndex] = dit;
            }
            else
            {
                WeekPartyDayInfo.ActionType = new ActionTypeClass[DayInfo.ACount];
                WeekPartyDayInfo.ActionType = new List<ActionTypeClass>();
                for (int k = 0; k < DayInfo.ACount; k++)
                {
                    var Task = DayInfo.TaskList[k];
@@ -185,7 +191,7 @@
                    ActionType.TemplateID = Task.TemplateID;
                    ActionType.CurTimes = Task.CurTimes;
                    ActionType.GotTimes = Task.GotTimes;
                    WeekPartyDayInfo.ActionType[k] = ActionType;
                    WeekPartyDayInfo.ActionType.Add(ActionType);
                }
                WeekPartyDayInfoDic.Add((int)DayInfo.DayIndex, WeekPartyDayInfo);
            }
@@ -298,7 +304,7 @@
        {
            var WeekPartyDay = WeekPartyDayInfoDic[Day];
            for (int i = 0; i < WeekPartyDay.ActionType.Length; i++)
            for (int i = 0; i < WeekPartyDay.ActionType.Count; i++)
            {
                var ActionType = WeekPartyDay.ActionType[i];
                if (ID == ActionType.TemplateID)
@@ -316,7 +322,7 @@
        {
            var WeekPartyDay = WeekPartyDayInfoDic[Day];
            for (int i = 0; i < WeekPartyDay.ActionType.Length; i++)
            for (int i = 0; i < WeekPartyDay.ActionType.Count; i++)
            {
                var ActionType = WeekPartyDay.ActionType[i];
                if (ID == ActionType.TemplateID)
System/PlayerDead/ReliveWin.cs
@@ -47,8 +47,9 @@
            MapConfig mapConfig = Config.Instance.Get<MapConfig>(curMapId);
            dieDesText.gameObject.SetActive(false);
            buffText.gameObject.SetActive(curMapId == ElderBattleMapID);
            inplaceRebornBtn.gameObject.SetActive(curMapId == UnionleagueMapID);
            switch(curMapId)
            inplaceRebornBtn.gameObject.SetActive(curMapId == UnionleagueMapID
                || curMapId == JadeDynastyBossModel.JADEDYNASTY_MAP);
            switch (curMapId)
            {
                case ElderBattleMapID:
                    SetBuffDes();
System/WindowBase/ModelCenter.cs
@@ -222,6 +222,7 @@
            RegisterModel<OpenServiceAchievementModel>();
            RegisterModel<FashionDressModel>();
            RegisterModel<LoginRewardModel>();
            RegisterModel<JadeDynastyBossModel>();
            inited = true;
        }
UI/Common/SortTable.cs
@@ -93,6 +93,7 @@
    {
        EquipQuality,
        EquipStar,
        EquipLv,
    }
    [Serializable]
    public struct SortElement
Utility/EnumHelper.cs
@@ -326,6 +326,7 @@
    DungeonAssist = 29,
    GatherSoulDungeon = 30,
    CrossServerPk = 31,
    JadeDynastyBoss = 32,
}
public enum ActivityPrepareType
@@ -377,6 +378,18 @@
    retFashionWeapon = 20,//时装武器
    retFashionClothes = 21,//时装衣服
    retFashionWeapon2 = 22,//时装副手
    JadeDynasty_Cloak = 121, //诛仙披风
    JadeDynasty_FaceMask = 122, //诛仙面罩
    JadeDynasty_Glove1 = 123, //诛仙手套
    JadeDynasty_Glove2 = 124, //诛仙手套
    JadeDynasty_Ruyi = 125, //诛仙如意
    JadeDynasty_Pendant = 126, //诛仙吊坠
    JadeDynasty_Ring1 = 127, //诛仙戒指
    JadeDynasty_Ring2 = 128, //诛仙戒指
    JadeDynasty_Sword1 = 129, //诛仙剑
    JadeDynasty_Sword2 = 130, //戮仙剑
    JadeDynasty_Sword3 = 131, //陷仙剑
    JadeDynasty_Sword4 = 132, //绝仙剑
    retMax,
};
@@ -652,6 +665,8 @@
    rptPetPack = 31, //宠物背包
    rptDogzItem = 32, //神兽物品背包
    rptDogzEquip = 33, //神兽装备背包(神兽穿戴)
    rptJadeDynastyItem = 34, //诛仙物品背包
    rptJadeDynastyEquip = 35,//诛仙装备背包(诛仙穿戴)
    rptBlastFrunacePack = 253, //炼丹背包
    rptGatherSoul = 254,//聚魂
    rptRunePack = 255,//符印背包
@@ -681,6 +696,16 @@
    Accessories4,// 配饰4
    Accessories5,// 配饰5
    Accessories6,// 配饰6
    JadeDynasty_Cloak = 128, //诛仙披风
    JadeDynasty_FaceMask = 129, //诛仙面罩
    JadeDynasty_Glove = 130, //诛仙手套
    JadeDynasty_Ruyi = 131, //诛仙如意
    JadeDynasty_Pendant = 132, //诛仙吊坠
    JadeDynasty_Ring = 133, //诛仙戒指
    JadeDynasty_Sword1 = 134, //诛仙剑
    JadeDynasty_Sword2 = 135, //戮仙剑
    JadeDynasty_Sword3 = 136, //陷仙剑
    JadeDynasty_Sword4 = 137, //绝仙剑
}
/** 物品类型 */
@@ -1145,6 +1170,7 @@
    DemonJarAuto = 32,
    AssistXianYuanCoinsAdd = 33,//助战仙缘币上限加成
    AssistXianYuanCoinsRatioAdd = 34,//助战仙缘币获得倍率加成(万分比)
    JadeDynastyBoss = 35,
}
@@ -1178,7 +1204,8 @@
    ElderGodArea = 3,
    DemonJar = 4,
    DogzDungeon = 5,
    CrossServerBoss=6,
    CrossServerBoss = 6,
    JadeDynastyBoss = 7,
    None = 99,
}