少年修仙传客户端代码仓库
client_linchunjie
2019-03-27 e65c80a945e723829a285923353dc836e9db937d
3335 法宝修改
14个文件已删除
21个文件已修改
5657 ■■■■ 已修改文件
Core/GameEngine/Model/Config/TreasureConfig.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TreasureConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TreasureUpConfig.cs 409 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TreasureUpConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Achievement/DTCA312_tagMCMagicWeaponData.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA352_tagMCMagicWeaponLVInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUITreasureModelWrap.cs 1726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUITreasureModelWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/TreasureConfigWrap.cs 612 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/TreasureConfigWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/TreasureUpConfigWrap.cs 462 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/TreasureUpConfigWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeWin.cs 514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/ViewFuncCell.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/DemonTreasureWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureCollectPanelPattern5.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/HumanTreasureWin.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureAchievement.cs 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureAchievement.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCollectBriefInfoBehaviour.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCyclicScroll.cs 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCyclicScroll.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureData.cs 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 676 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureNewGotBehaviour.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureNewGotWin.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureProperty.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureStageTipWin.cs 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureStageTipWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipRechargeWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/FuncOpen.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TreasureConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, February 20, 2019
//    [  Date ]:           Wednesday, March 27, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -21,19 +21,14 @@
    public readonly string NameIcon;
    public readonly string TreasureNameIcon;
    public readonly string Model;
    public readonly string SourceDescription;
    public readonly string Story;
    public readonly string IndexTitle;
    public readonly string StoryName;
    public readonly int RequirementTotal;
    public readonly int[] Achievements;
    public readonly int MapId;
    public readonly int LineId;
    public readonly int ChallengeLevel;
    public readonly int EffectID;
    public readonly string[] Verse;
    public readonly int ShowNetGotEffect;
    public readonly int PreferredStage;
    public readonly int UIScale;
    public TreasureConfig()
@@ -62,38 +57,23 @@
            Model = tables[7];
            SourceDescription = tables[8];
            Story = tables[8];
            Story = tables[9];
            IndexTitle = tables[9];
            IndexTitle = tables[10];
            StoryName = tables[10];
            StoryName = tables[11];
            int.TryParse(tables[11],out MapId);
            int.TryParse(tables[12],out RequirementTotal);
            int.TryParse(tables[12],out LineId);
            string[] AchievementsStringArray = tables[13].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            Achievements = new int[AchievementsStringArray.Length];
            for (int i=0;i<AchievementsStringArray.Length;i++)
            {
                 int.TryParse(AchievementsStringArray[i],out Achievements[i]);
            }
            int.TryParse(tables[13],out ChallengeLevel);
            int.TryParse(tables[14],out MapId);
            int.TryParse(tables[14],out EffectID);
            int.TryParse(tables[15],out LineId);
            Verse = tables[15].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            int.TryParse(tables[16],out ChallengeLevel);
            int.TryParse(tables[17],out EffectID);
            Verse = tables[18].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            int.TryParse(tables[19],out ShowNetGotEffect);
            int.TryParse(tables[20],out PreferredStage);
            int.TryParse(tables[21],out UIScale);
            int.TryParse(tables[16],out UIScale);
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/TreasureConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 0c81d30c7f415f64d93047863b1dc1e1
timeCreated: 1550121610
timeCreated: 1553652922
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Config/TreasureUpConfig.cs
@@ -1,18 +1,18 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Thursday, February 14, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class TreasureUpConfig
{
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, March 27, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class TreasureUpConfig
{
    public readonly int ID;
    public readonly int MWID;
    public readonly int LV;
@@ -20,22 +20,19 @@
    public readonly string AddAttr;
    public readonly int[] UnLockSkill;
    public readonly int UnLockFuncID;
    public readonly int ActiveMWID;
    public readonly string ItemAward;
    public readonly int SoulID;
    public readonly int PowerEx;
    public readonly string DescriptionMainWin;
    public TreasureUpConfig()
    {
    }
    public TreasureUpConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
    public readonly string DescriptionMainWin;
    public TreasureUpConfig()
    {
    }
    public TreasureUpConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID); 
            int.TryParse(tables[1],out MWID); 
@@ -55,183 +52,177 @@
            int.TryParse(tables[6],out UnLockFuncID); 
            int.TryParse(tables[7],out ActiveMWID);
            int.TryParse(tables[7],out PowerEx);
            ItemAward = tables[8];
            int.TryParse(tables[9],out SoulID);
            int.TryParse(tables[10],out PowerEx);
            DescriptionMainWin = tables[11];
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, TreasureUpConfig> configs = new Dictionary<string, TreasureUpConfig>();
    public static TreasureUpConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("TreasureUpConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        TreasureUpConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new TreasureUpConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static TreasureUpConfig Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<TreasureUpConfig> GetValues()
    {
        var values = new List<TreasureUpConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/TreasureUp.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/TreasureUp.txt");
        }
        var tempConfig = new TreasureUpConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            if (!preParse)
            {
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new TreasureUpConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new TreasureUpConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
            DescriptionMainWin = tables[8];
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, TreasureUpConfig> configs = new Dictionary<string, TreasureUpConfig>();
    public static TreasureUpConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("TreasureUpConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        TreasureUpConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new TreasureUpConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static TreasureUpConfig Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<TreasureUpConfig> GetValues()
    {
        var values = new List<TreasureUpConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/TreasureUp.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/TreasureUp.txt");
        }
        var tempConfig = new TreasureUpConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            if (!preParse)
            {
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new TreasureUpConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new TreasureUpConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
Core/GameEngine/Model/Config/TreasureUpConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 6ba7e531e0e0ec34a858510c2f5b560a
timeCreated: 1550121533
timeCreated: 1553665069
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DTCFile/ServerPack/HA3_Achievement/DTCA312_tagMCMagicWeaponData.cs
@@ -12,7 +12,5 @@
    {
        base.Done(vNetPack);
        var vNetData = vNetPack as HA312_tagMCMagicWeaponData;
        model.ReceivePackage(vNetData.MagicWeaponID);
    }
}
Core/NetworkPackage/ServerPack/HA3_Function/HA352_tagMCMagicWeaponLVInfo.cs
@@ -19,7 +19,6 @@
            TransBytes (out InfoList[i].MWID, vBytes, NetDataType.DWORD);
            TransBytes (out InfoList[i].LV, vBytes, NetDataType.BYTE);
            TransBytes (out InfoList[i].Exp, vBytes, NetDataType.DWORD);
            TransBytes (out InfoList[i].State, vBytes, NetDataType.BYTE);
            TransBytes (out InfoList[i].FBPassLV, vBytes, NetDataType.BYTE);
            TransBytes (out InfoList[i].IsWear, vBytes, NetDataType.BYTE);
        }
@@ -29,7 +28,6 @@
        public uint MWID;
        public byte LV;
        public uint Exp;
        public byte State;        //是否点击法宝认主
        public byte FBPassLV;        //副本关卡
        public byte IsWear;        //是否佩戴(仅适用王者法宝)
    }
Lua/Gen/SnxxzUITreasureModelWrap.cs
File was deleted
Lua/Gen/SnxxzUITreasureModelWrap.cs.meta
File was deleted
Lua/Gen/TreasureConfigWrap.cs
File was deleted
Lua/Gen/TreasureConfigWrap.cs.meta
File was deleted
Lua/Gen/TreasureUpConfigWrap.cs
File was deleted
Lua/Gen/TreasureUpConfigWrap.cs.meta
File was deleted
Lua/Gen/XLuaGenAutoRegister.cs
@@ -607,9 +607,6 @@
            translator.DelayWrapLoader(typeof(TeamTargetConfig), TeamTargetConfigWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(TreasureConfig), TreasureConfigWrap.__Register);
            translator.DelayWrapLoader(typeof(TreasureDungeonConfig), TreasureDungeonConfigWrap.__Register);
        
        
@@ -623,9 +620,6 @@
        
        
            translator.DelayWrapLoader(typeof(TreasureSkillConfig), TreasureSkillConfigWrap.__Register);
            translator.DelayWrapLoader(typeof(TreasureUpConfig), TreasureUpConfigWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(TrialExchangeConfig), TrialExchangeConfigWrap.__Register);
@@ -1390,9 +1384,6 @@
        
        
            translator.DelayWrapLoader(typeof(PwdKeyboard), PwdKeyboardWrap.__Register);
            translator.DelayWrapLoader(typeof(Snxxz.UI.TreasureModel), SnxxzUITreasureModelWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.TreasureSoulModel), SnxxzUITreasureSoulModelWrap.__Register);
System/MainInterfacePanel/FeatureNoticeWin.cs
File was deleted
System/MainInterfacePanel/FeatureNoticeWin.cs.meta
File was deleted
System/MainInterfacePanel/TaskModel.cs
@@ -328,7 +328,7 @@
        }
    }
    public int GetCurrentMainTaskId()
    public int GetLatestMainTaskId()
    {
        var taskId = 0;
        foreach (var id in MainTaskDic.Keys)
System/RoleParticulars/ViewFuncCell.cs
@@ -195,15 +195,15 @@
                        targetValue = viewPlayerData.rolePlusData.Rune;
                        break;
                    case FuncPowerType.Human:
                        selfValue += treasureModel.GetActiveTreasureCategory(TreasureCategory.Human);
                        selfValue += treasureModel.GetCollectedTreasureCount(TreasureCategory.Human);
                        targetValue = viewPlayerData.rolePlusData.GetTreasureCount((int)TreasureCategory.Human);
                        break;
                    case FuncPowerType.Demon:
                        selfValue += treasureModel.GetActiveTreasureCategory(TreasureCategory.Demon);
                        selfValue += treasureModel.GetCollectedTreasureCount(TreasureCategory.Demon);
                        targetValue = viewPlayerData.rolePlusData.GetTreasureCount((int)TreasureCategory.Demon);
                        break;
                    case FuncPowerType.Fairy:
                        selfValue += treasureModel.GetActiveTreasureCategory(TreasureCategory.Fairy);
                        selfValue += treasureModel.GetCollectedTreasureCount(TreasureCategory.Fairy);
                        targetValue = viewPlayerData.rolePlusData.GetTreasureCount((int)TreasureCategory.Fairy);
                        break;
                }
System/Treasure/DemonTreasureWin.cs
@@ -433,7 +433,7 @@
        private void TreasureStateChangeEvent(int id)
        {
            if (!model.serverInited)
            if (!model.isServerReady)
            {
                return;
            }
@@ -456,7 +456,7 @@
        private void DemonTreasureDungeonUpdate(int id)
        {
            if (!model.serverInited)
            if (!model.isServerReady)
            {
                return;
            }
System/Treasure/FairyTreasureCollectPanelPattern5.cs
@@ -128,7 +128,7 @@
        private void TreasureStageUpEvent(int _id)
        {
            if (_id == treasureId && model.serverInited)
            if (_id == treasureId && model.isServerReady)
            {
                TreasureActiveEffect();
            }
@@ -145,9 +145,9 @@
        private void DisplayProgress()
        {
            m_ContainerAchievement.gameObject.SetActive(treasure.state == TreasureState.Collected && treasure.stage <= 0);
            m_ContainerAchievement.gameObject.SetActive(treasure.state == TreasureState.Collected && treasure.level <= 1);
            var _processingIndex = -1;
            if (treasure.state == TreasureState.Collected && treasure.stage <= 0)
            if (treasure.state == TreasureState.Collected && treasure.level <= 1)
            {
                var _list = model.GetFurnacesAchievements();
                for (int i = 0; i < m_FurnacesAchievements.Length; i++)
@@ -182,7 +182,7 @@
        private void DisplayFurnacesHole()
        {
            m_ContainerHoles.gameObject.SetActive(treasure.state == TreasureState.Collected);
            if (treasure.state == TreasureState.Collected && treasure.stage == 0)
            if (treasure.state == TreasureState.Collected && treasure.level == 1)
            {
                var _list = model.GetFurnacesAchievements();
                for (int i = 0; i < m_FurnacesIcons.Length; i++)
@@ -214,7 +214,7 @@
                    m_FurnacesIcons[i].gameObject.SetActive(achievement != null && achievement.completed);
                }
            }
            if (treasure.state == TreasureState.Collected && treasure.stage >= 1)
            if (treasure.state == TreasureState.Collected && treasure.level >= 2)
            {
                for (int i = 0; i < m_FurnacesIcons.Length; i++)
                {
@@ -267,51 +267,20 @@
            GetCurrentAchievement();
            if (treasure.state != TreasureState.Collected)
            {
                //int unlocktreasureId = 0;
                //var list = model.GetTreasureCategory(TreasureCategory.Human);
                //for (int i = 0; i < list.Count; i++)
                //{
                //    Treasure _treasure;
                //    if(model.TryGetTreasure(list[i], out _treasure))
                //    {
                //        var index = _treasure.treasureStages.FindIndex((x) =>
                //        {
                //            return x.unlockType == TreasureStageUnlock.Treasure && x.treasure == treasure.id;
                //        });
                //        if (index != -1)
                //        {
                //            unlocktreasureId = list[i];
                //            break;
                //        }
                //    }
                //}
                //var unlockTreasureConfig = TreasureConfig.Get(unlocktreasureId);
                var config = TreasureConfig.Get(treasure.id);
                var requireCondition = 0;
                if (config != null)
                {
                    var successConfig = SuccessConfig.Get(config.Achievements.Length > 0 ? config.Achievements[0] : 0);
                    if (successConfig != null)
                    {
                        requireCondition = successConfig.NeedCnt;
                    }
                }
                m_AchievementGetBtn.gameObject.SetActive(false);
                m_ActiveBtn.gameObject.SetActive(false);
                m_GotoGet.gameObject.SetActive(false);
                m_ContainerLocked.gameObject.SetActive(true);
                m_LockedDescription.text = Language.Get("BlastFurnaceGet", requireCondition);
                m_LockedDescription.text = Language.Get("BlastFurnaceGet", config.ChallengeLevel);
                m_ContainerAchievement.gameObject.SetActive(false);
            }
            else if (currentAchievement == null || treasure.stage >= 1)
            else if (currentAchievement == null || treasure.level >= 2)
            {
                m_AchievementGetBtn.gameObject.SetActive(false);
                m_GotoGet.gameObject.SetActive(false);
                m_ContainerLocked.gameObject.SetActive(false);
                m_ActiveBtn.gameObject.SetActive(currentAchievement == null && treasure.stage == 0);
                m_ActiveBtn.gameObject.SetActive(currentAchievement == null && treasure.level == 1);
            }
            else
            {
@@ -323,7 +292,7 @@
                m_GotoGet.gameObject.SetActive(!_isReach);
            }
            m_GotoStove.gameObject.SetActive(treasure.stage >= 1);
            m_GotoStove.gameObject.SetActive(treasure.level >= 2);
        }
        private void OnAchievementGet()
@@ -337,7 +306,7 @@
        private void DisplayFunc()
        {
            m_FuncTitle.text = treasure.state == TreasureState.Collected && treasure.stage >= 1 ? Language.Get("FairyTreasureOpenFunc") : Language.Get("FairyTreasureUnOpenFunc");
            m_FuncTitle.text = treasure.state == TreasureState.Collected && treasure.level >= 2 ? Language.Get("FairyTreasureOpenFunc") : Language.Get("FairyTreasureUnOpenFunc");
            var funcStage = treasure.treasureStages.Find((x) =>
            {
                return x.unlockType == TreasureStageUnlock.Func;
@@ -351,8 +320,8 @@
        private void DisplayFurnace()
        {
            m_ContainerFurnace.gameObject.SetActive(treasure.state == TreasureState.Collected && treasure.stage >= 1);
            if (treasure.state == TreasureState.Collected && treasure.stage >= 1)
            m_ContainerFurnace.gameObject.SetActive(treasure.state == TreasureState.Collected && treasure.level >= 2);
            if (treasure.state == TreasureState.Collected && treasure.level >= 2)
            {
                var stoveLevel = blastFurnaceModel.StoveLV;
                m_FurnaceLv.text = Language.Get("BlastFurnace101", stoveLevel);
System/Treasure/HumanTreasureWin.cs
@@ -23,10 +23,13 @@
        [SerializeField] Text m_SkillName;
        [SerializeField] Text m_SkillType;
        [SerializeField] Text m_SkillDescription;
        [SerializeField] Transform m_ContainerUnlock;
        [SerializeField] Transform m_ContainerCollect;
        [SerializeField] Button m_Challenge;
        [SerializeField] Transform m_ContainerCondition;
        [SerializeField] Text m_Condition;
        [SerializeField] Button m_Goto;
        [SerializeField] Slider m_TaskSlider;
        [SerializeField] Text m_TaskCount;
        [SerializeField] Transform m_ContainerCollected;
        [SerializeField] Transform m_ContainerUnknown;
        bool animationStep = false;
@@ -35,10 +38,7 @@
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        AchievementModel achievementModel
        {
            get { return ModelCenter.Instance.GetModel<AchievementModel>(); }
        }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        protected override void BindController()
        {
@@ -47,6 +47,7 @@
        protected override void AddListeners()
        {
            m_Challenge.AddListener(Challenge);
            m_Goto.AddListener(GotoTask);
        }
        protected override void OnPreOpen()
@@ -80,7 +81,7 @@
        void Display()
        {
            DisplayBase();
            DisplayCondition();
            DisplayProgress();
        }
        void DisplayBase()
@@ -101,58 +102,35 @@
            }
        }
        void DisplayCondition()
        void DisplayProgress()
        {
            Treasure treasure;
            if (!model.TryGetTreasure(model.selectedTreasure, out treasure))
            if (model.TryGetTreasure(model.selectedTreasure, out treasure))
            {
                return;
            }
                m_ContainerCollect.gameObject.SetActive(treasure.state != TreasureState.Collected);
                m_ContainerCollected.gameObject.SetActive(treasure.state == TreasureState.Collected);
                m_ContainerUnknown.gameObject.SetActive(treasure.state == TreasureState.Locked);
            var state = treasure.state;
            Achievement achievement = null;
            int achievementId = 0;
            bool unlockAchievement = false;
            if (model.TryGetTreasureUnlockAchievement(treasure.id, out achievementId))
            {
                if (achievementModel.TryGetAchievement(achievementId, out achievement))
                if (treasure.state == TreasureState.Collecting)
                {
                    unlockAchievement = true;
                }
            }
            m_Challenge.gameObject.SetActive(!unlockAchievement || achievement.completed);
            m_ContainerCondition.gameObject.SetActive(unlockAchievement && !achievement.completed);
                    var satisfyChallenge = model.SatisfyChallenge(model.selectedTreasure);
            if (state == TreasureState.Collected)
            {
                m_Challenge.gameObject.SetActive(false);
                m_ContainerCondition.gameObject.SetActive(false);
            }
                    m_Goto.gameObject.SetActive(!satisfyChallenge);
                    m_Challenge.gameObject.SetActive(satisfyChallenge);
            if (model.IsVersionUnOpenTreasure(treasure.id))
            {
                m_Condition.text = Language.Get("TreasureNoOpen");
                return;
            }
                    m_TaskCount.gameObject.SetActive(false);
                    var progress = 1f;
            if (unlockAchievement && !achievement.completed)
            {
                var config = SuccessConfig.Get(achievementId);
                var _missionId = config.Condition[0];
                var _taskConfig = PyTaskConfig.Get(_missionId);
                if (_taskConfig == null)
                {
                    return;
                }
                switch (config.Type)
                {
                    case 1:
                        m_Condition.text = Language.Get("TreasureChallengeLv", config.Condition[0]);
                        break;
                    case 3:
                        m_Condition.text = Language.Get("TreasureGetRequire", _taskConfig.lv);
                        break;
                    List<int> tasks = null;
                    if (model.TryGetTreasureTasks(model.selectedTreasure, out tasks))
                    {
                        var count = model.GetCompleteTaskCount(model.selectedTreasure);
                        progress = Mathf.Clamp01((float)count / tasks.Count);
                        m_TaskCount.gameObject.SetActive(true);
                        m_TaskCount.text = StringUtility.Contact(count, "/", tasks.Count);
                    }
                    m_TaskSlider.value = progress;
                }
            }
        }
@@ -160,7 +138,8 @@
        void DisplayAnimation()
        {
            animationStep = true;
            m_ContainerUnlock.gameObject.SetActive(false);
            m_ContainerCollect.gameObject.SetActive(false);
            m_ContainerCollected.gameObject.SetActive(false);
            m_PositionTween.Play();
            UI3DTreasureSelectStage.Instance.Tween(OnTreasureTweenComplete);
        }
@@ -168,7 +147,7 @@
        private void OnTreasureTweenComplete()
        {
            animationStep = false;
            m_ContainerUnlock.gameObject.SetActive(true);
            DisplayProgress();
        }
        private void TreasureSelectedEvent(int obj)
@@ -190,6 +169,15 @@
            }
        }
        private void GotoTask()
        {
            WindowJumpMgr.Instance.ClearJumpData();
            WindowCenter.Instance.Close<TreasureBaseWin>();
            WindowCenter.Instance.Open<MainInterfaceWin>();
            var taskId = taskModel.GetLatestMainTaskId();
            taskModel.TaskMove(taskId);
        }
        private bool AllowSelectTreasure(int treasureId)
        {
            if (NewBieCenter.Instance.inGuiding || animationStep)
System/Treasure/TreasureAchievement.cs
File was deleted
System/Treasure/TreasureAchievement.cs.meta
File was deleted
System/Treasure/TreasureCollectBriefInfoBehaviour.cs
@@ -300,26 +300,26 @@
                        break;
                    case DisplayState.AwakenUnderway:
                        DisplayProgress(true, progress);
                        DisplayTreasureUpStage(treasure.GetStageId(treasure.stage + 1));
                        //DisplayTreasureUpStage(treasure.GetStageId(treasure.level + 1));
                        break;
                    case DisplayState.WaitUnLock:
                        Achievement achievement = null;
                        var achievementId = 0;
                        if (model.TryGetTreasureUnlockAchievement(displayTreasureId, out achievementId))
                        {
                            if (achievementModel.TryGetAchievement(achievementId, out achievement))
                            {
                                var achievementConfig = SuccessConfig.Get(achievementId);
                                var missionId = achievementConfig.Condition[0];
                                var taskConfig = PyTaskConfig.Get(missionId);
                                m_Description.text = Language.Get("FabaoState_Text_5", taskConfig.lv);
                            }
                        }
                        else
                        {
                            m_Description.text = Language.Get("FabaoState_Text_5");
                        }
                        //Achievement achievement = null;
                        //var achievementId = 0;
                        //if (model.TryGetTreasureUnlockAchievement(displayTreasureId, out achievementId))
                        //{
                        //    if (achievementModel.TryGetAchievement(achievementId, out achievement))
                        //    {
                        //        var achievementConfig = SuccessConfig.Get(achievementId);
                        //        var missionId = achievementConfig.Condition[0];
                        //        var taskConfig = PyTaskConfig.Get(missionId);
                        //
                        //        m_Description.text = Language.Get("FabaoState_Text_5", taskConfig.lv);
                        //    }
                        //}
                        //else
                        //{
                        //    m_Description.text = Language.Get("FabaoState_Text_5");
                        //}
                        DisplayProgress(false, progress);
                        break;
                    case DisplayState.PotentialUpAble:
@@ -341,22 +341,6 @@
        private void ViewTreasure()
        {
            if (displayState == DisplayState.Challenge)
            {
                Treasure treasure;
                if (model.TryGetTreasure(displayTreasureId, out treasure))
                {
                    if (!treasure.alreadyClickChallenge)
                    {
                        var sendInfo = new CA516_tagCMMagicWeaponState();
                        sendInfo.MWID = (uint)displayTreasureId;
                        GameNetSystem.Instance.SendInfo(sendInfo);
                    }
                    treasure.alreadyClickChallenge = true;
                }
            }
            WindowCenter.Instance.Close<MainInterfaceWin>();
            if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayTreasureId)
            {
System/Treasure/TreasureCyclicScroll.cs
File was deleted
System/Treasure/TreasureCyclicScroll.cs.meta
File was deleted
System/Treasure/TreasureData.cs
@@ -17,11 +17,9 @@
    {
        public int id { get; private set; }
        public int stage { get; private set; }
        public int level { get; private set; }
        public int exp { get; private set; }
        public bool alreadyClickChallenge { get; set; }
        TreasureState m_State = TreasureState.Locked;
        public TreasureState state
@@ -45,213 +43,22 @@
        public List<TreasureStage> treasureStages = new List<TreasureStage>();
        public Treasure(int _id)
        public Treasure(int id)
        {
            this.id = _id;
            this.id = id;
        }
        public void RefreshLevel(int stage, int exp, bool alreadyClickChallenge)
        public void RefreshLevel(int level, int exp)
        {
            this.stage = stage;
            this.level = level;
            this.exp = exp;
            this.alreadyClickChallenge = alreadyClickChallenge;
        }
        public void AddTreasureStage(TreasureUpConfig config)
        public void ParseStage(TreasureUpConfig config)
        {
            var _stage = new TreasureStage(config);
            treasureStages.Add(_stage);
        }
        public int GetStageId(int _stageIndex)
        {
            foreach (var item in treasureStages)
            {
                if (item.stage == _stageIndex)
                {
                    return item.id;
                }
            }
            return 0;
        }
    }
    public class AchievementGroup
    {
        AchievementModel model { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
        public int group { get; private set; }
        List<int> achievements = new List<int>();
        public AchievementGroup(int _category)
        {
            group = _category;
        }
        public void AddAchievement(int _achievement)
        {
            if (!achievements.Contains(_achievement))
            {
                achievements.Add(_achievement);
            }
        }
        public void Sort()
        {
            achievements.Sort(AchievementCompare);
        }
        public bool Contain(int _achievementId)
        {
            return achievements.Contains(_achievementId);
        }
        public bool IsAwardable()
        {
            var doingAchievement = GetDoingAchievement();
            if (doingAchievement > 0)
            {
                Achievement achievement;
                if (model.TryGetAchievement(doingAchievement, out achievement) && !achievement.completed)
                {
                    return Achievement.IsReach(doingAchievement, achievement.progress);
                }
            }
            return false;
        }
        public bool IsCompleted()
        {
            var achievementId = GetDoingAchievement();
            Achievement doingAchievement;
            if (model.TryGetAchievement(achievementId, out doingAchievement) && doingAchievement.completed)
            {
                return true;
            }
            for (int i = 0; i < achievements.Count; i++)
            {
                var id = achievements[i];
                Achievement achievement;
                if (model.TryGetAchievement(id, out achievement) && !achievement.completed)
                {
                    return false;
                }
            }
            return true;
        }
        public int GetDoingAchievement()
        {
            var achievementId = 0;
            for (int i = 0; i < achievements.Count; i++)
            {
                var id = achievements[i];
                Achievement achievement;
                if (model.TryGetAchievement(id, out achievement) && !achievement.completed)
                {
                    return id;
                }
                achievementId = id;
            }
            return achievementId;
        }
        public int GetLastAchievement()
        {
            if (achievements.Count == 0)
            {
                return 0;
            }
            else
            {
                var achievementId = GetDoingAchievement();
                Achievement doingAchievement;
                if (model.TryGetAchievement(achievementId, out doingAchievement) && doingAchievement.completed)
                {
                    return achievementId;
                }
                return achievements[achievements.Count - 1];
            }
        }
        private int AchievementCompare(int _lhs, int _rhs)
        {
            var configA = SuccessConfig.Get(_lhs);
            var configB = SuccessConfig.Get(_rhs);
            return configA.ReOrder.CompareTo(configB.ReOrder);
        }
        public static int Compare(AchievementGroup _lhs, AchievementGroup _rhs)
        {
            var awardableA = _lhs.IsAwardable();
            var awardableB = _rhs.IsAwardable();
            if (awardableA != awardableB)
            {
                return awardableA ? -1 : 1;
            }
            else
            {
                var completedA = _lhs.IsCompleted();
                var completedB = _rhs.IsCompleted();
                if (completedA != completedB)
                {
                    return completedA.CompareTo(completedB);
                }
                else if (completedA && completedB)
                {
                    return _lhs.group < _rhs.group ? -1 : 1;
                }
                else
                {
                    var idA = _lhs.GetDoingAchievement();
                    var idB = _rhs.GetDoingAchievement();
                    var configA = SuccessConfig.Get(idA);
                    var configB = SuccessConfig.Get(idB);
                    if (configA == null)
                    {
                        return 1;
                    }
                    else if (configB == null)
                    {
                        return -1;
                    }
                    else if (configA == null && configB == null)
                    {
                        return 0;
                    }
                    else
                    {
                        return configA.ReOrder < configB.ReOrder ? -1 : 1;
                    }
                }
            }
        }
    }
    public struct PotentialBook
    {
        public int itemId;
        public int needCount;
        public int successRate;
        public int levelUpId;
        public PotentialBook(int _itemId, int _needCount, int _successRate, int _levelUpId)
        {
            this.itemId = _itemId;
            this.needCount = _needCount;
            this.successRate = _successRate;
            this.levelUpId = _levelUpId;
        }
    }
    public struct VIPKillNPCTreasure
@@ -301,29 +108,6 @@
            {
                unlockType = TreasureStageUnlock.Property;
                propertyDict = ConfigParse.GetDic<int, int>(_config.AddAttr);
            }
            else if (_config.ActiveMWID != 0)
            {
                unlockType = TreasureStageUnlock.Treasure;
                treasure = _config.ActiveMWID;
            }
            else if (_config.SoulID != 0)
            {
                unlockType = TreasureStageUnlock.TreasureSoul;
                treasureSoul = _config.SoulID;
            }
            else if (!string.IsNullOrEmpty(_config.ItemAward))
            {
                unlockType = TreasureStageUnlock.Item;
                var itemArray = LitJson.JsonMapper.ToObject<int[]>(_config.ItemAward);
                if (itemArray != null && itemArray.Length > 0)
                {
                    item = new Item()
                    {
                        id = itemArray[0],
                        count = itemArray.Length > 1 ? itemArray[1] : 1,
                    };
                }
            }
            exp = _config.NeedExp;
@@ -498,9 +282,6 @@
        Property,
        Skill,
        Func,
        Item,
        Treasure,
        TreasureSoul,
    }
}
System/Treasure/TreasureModel.cs
@@ -13,7 +13,7 @@
{
    [XLua.LuaCallCSharp]
    public class TreasureModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
    public class TreasureModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
    {
        public const int TREASURE_DATAMAPID = 41110;
        public const int TREASURE_MAPID = 41110;
@@ -37,15 +37,16 @@
        public event Action<TreasureCategory> collectingTreasureChangeEvent;
        public event Action<int> treasureStateChangeEvent;
        public event Action vipKillNPCTreasureEvent;
        public event Action<int> treasureLevelProgressUpdateEvent;
        public event Action<int> treasureStageUpEvent;
        public event Action<int> demonTreasureDungeonUpdate;
        public event Action demonDungeonChallengeNext;
        int m_SelectedTreasure = 0;
        public int selectedTreasure {
        public int selectedTreasure
        {
            get { return m_SelectedTreasure; }
            set {
            set
            {
                if (m_SelectedTreasure != value)
                {
                    m_SelectedTreasure = value;
@@ -60,15 +61,18 @@
        public bool treasureStageUpShow { get; set; }
        TreasureCategory m_CurrentCategory = TreasureCategory.Human;
        public TreasureCategory currentCategory {
        public TreasureCategory currentCategory
        {
            get { return m_CurrentCategory; }
            set { m_CurrentCategory = value; }
        }
        int m_CollectingHuman = 0;
        public int collectingHuman {
        public int collectingHuman
        {
            get { return m_CollectingHuman; }
            set {
            set
            {
                if (m_CollectingHuman != value)
                {
                    m_CollectingHuman = value;
@@ -81,9 +85,11 @@
        }
        int m_CollectingDemon = 0;
        public int collectingDemon {
        public int collectingDemon
        {
            get { return m_CollectingDemon; }
            set {
            set
            {
                if (m_CollectingDemon != value)
                {
                    m_CollectingDemon = value;
@@ -98,7 +104,6 @@
        Dictionary<int, Treasure> treasures = new Dictionary<int, Treasure>();
        Dictionary<TreasureCategory, List<int>> treasureCategory = new Dictionary<TreasureCategory, List<int>>();
        Dictionary<int, int> treasureMapDict = new Dictionary<int, int>();
        Dictionary<int, int> treasureAchievementDict = new Dictionary<int, int>();
        Dictionary<int, TreasureDungeon> treasureDungeons = new Dictionary<int, TreasureDungeon>();
        Dictionary<int, List<int>> treasureTasks = new Dictionary<int, List<int>>();
        Dictionary<TreasureCategory, int> treasureUnlockShowDict = new Dictionary<TreasureCategory, int>();
@@ -107,17 +112,20 @@
        public Dictionary<int, int> fairyTreasureGetDict { get; private set; }
        public bool serverInited { get; private set; }
        public int newGotTreasureId {
        public bool isServerReady { get; private set; }
        public int newGotTreasureId
        {
            get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_NewGotTreasureId")); }
            set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_NewGotTreasureId"), value); }
        }
        public bool newGotShowing {
        public bool newGotShowing
        {
            get { return newGotTreasureId > 0; }
        }
        public int treasureCollectingShowId {
        public int treasureCollectingShowId
        {
            get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_TreasureCollectingShowId")); }
            set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_TreasureCollectingShowId"), value); }
        }
@@ -131,13 +139,14 @@
        public int exitRecord { get; set; }
        public int entranceOpenCondition { get; private set; }
        AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        VIPKillNPCTreasure m_VIPKillNPCTreasure;
        public VIPKillNPCTreasure vipKillNPCTreasure {
        public VIPKillNPCTreasure vipKillNPCTreasure
        {
            get { return m_VIPKillNPCTreasure; }
            set {
            set
            {
                m_VIPKillNPCTreasure = value;
                if (vipKillNPCTreasureEvent != null)
                {
@@ -154,7 +163,6 @@
        {
            ParseConfigs();
            achievementModel.achievementCompletedEvent += OnAchievementCompleted;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterOpenEvent += OnWindowOpen;
            WindowCenter.Instance.windowAfterCloseEvent += OnWindowClose;
@@ -166,14 +174,14 @@
        public void OnBeforePlayerDataInitialize()
        {
            serverInited = false;
            isServerReady = false;
            playerLevelRefresh = false;
            needDisplayReguluLevelUp = false;
            treasureUnlockShowDict.Clear();
            foreach (var treasure in treasures.Values)
            {
                treasure.state = TreasureState.Locked;
                treasure.RefreshLevel(0, 0, false);
                treasure.RefreshLevel(0, 0);
            }
            foreach (var treasureDungeon in treasureDungeons.Values)
            {
@@ -189,13 +197,12 @@
        public void OnPlayerLoginOk()
        {
            serverInited = true;
            isServerReady = true;
            RefreshDemonDungeonRedpoints();
        }
        public override void UnInit()
        {
            achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
            NewBieCenter.Instance.guideCompletedEvent -= GuideComplete;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen;
@@ -207,11 +214,12 @@
        private void PerSecond()
        {
            if (serverInited)
            if (isServerReady)
            {
                if (playerLevelRefresh)
                {
                    playerLevelRefresh = false;
                    RefreshTreasureCollectState();
                }
            }
        }
@@ -224,9 +232,99 @@
            }
        }
        private void ParseConfigs()
        {
            var treasureConfigs = TreasureConfig.GetValues();
            foreach (var config in treasureConfigs)
            {
                var category = (TreasureCategory)config.Category;
                List<int> categoryTreasures = null;
                if (!treasureCategory.ContainsKey(category))
                {
                    treasureCategory[category] = categoryTreasures = new List<int>();
                }
                else
                {
                    categoryTreasures = treasureCategory[category];
                }
                categoryTreasures.Add(config.ID);
                Treasure treasure = new Treasure(config.ID);
                treasures[config.ID] = treasure;
                if (!treasureMapDict.ContainsKey(config.ID))
                {
                    treasureMapDict.Add(config.ID, config.MapId);
                }
                if (config.ID == 301)
                {
                    List<int> list = null;
                    SuccessConfig.TryGetTreasureExpAchievements(config.ID, out list);
                    if (list != null)
                    {
                        eightFurnacesAchievements.AddRange(list);
                    }
                }
            }
            var treasureUpConfigs = TreasureUpConfig.GetValues();
            foreach (var config in treasureUpConfigs)
            {
                Treasure treasure;
                if (TryGetTreasure(config.MWID, out treasure))
                {
                    treasure.ParseStage(config);
                }
            }
            var funcConfig = FuncConfigConfig.Get("GuideMission");
            guideTreasures = new List<int>();
            guideTreasures.AddRange(ConfigParse.GetMultipleStr<int>(funcConfig.Numerical2));
            funcConfig = FuncConfigConfig.Get("TreasureGetVipLv");
            fairyTreasureGetDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical1);
            funcConfig = FuncConfigConfig.Get("TreasureSkip");
            treasureBackLvLimit = int.Parse(funcConfig.Numerical1);
            funcConfig = FuncConfigConfig.Get("TreasureNoOpen");
            treasureUnOpens.AddRange(ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1));
            funcConfig = FuncConfigConfig.Get("OpenFabao");
            entranceOpenCondition = int.Parse(funcConfig.Numerical1);
            var treasureDungeonConfigs = TreasureDungeonConfig.GetValues();
            foreach (var config in treasureDungeonConfigs)
            {
                TreasureDungeon treasureDungeon;
                if (!treasureDungeons.TryGetValue(config.MWID, out treasureDungeon))
                {
                    var treasureConfig = TreasureConfig.Get(config.MWID);
                    var challengeRedpoint = new Redpoint(CATEGORY_REDPOINTIDS[treasureConfig.Category - 1], TREASURE_REDPOINTBASE + redpointIndex++);
                    treasureDungeon = new TreasureDungeon(config.MWID, challengeRedpoint);
                    treasureDungeons.Add(config.MWID, treasureDungeon);
                }
                treasureDungeon.ParseDungeonInfo(config);
            }
            var taskConfigs = TaskListConfig.GetValues();
            foreach (var config in taskConfigs)
            {
                List<int> tasks = null;
                if (!treasureTasks.TryGetValue(config.FabaoID, out tasks))
                {
                    tasks = new List<int>();
                    treasureTasks.Add(config.FabaoID, tasks);
                }
                tasks.Add(config.TaskID);
            }
        }
        public void TryOpenRegulusPopWindow()
        {
            if (serverInited)
            if (isServerReady)
            {
                if (WindowCenter.Instance.IsOpen<MainInterfaceWin>() && !WindowCenter.Instance.ExistAnyFullScreenOrMaskWin())
                {
@@ -316,11 +414,6 @@
            return false;
        }
        public bool TryGetTreasureUnlockAchievement(int _treasureId, out int achievement)
        {
            return treasureAchievementDict.TryGetValue(_treasureId, out achievement);
        }
        public bool TryGetTreasureTasks(int id, out List<int> tasks)
        {
            return treasureTasks.TryGetValue(id, out tasks);
@@ -343,24 +436,47 @@
            }
        }
        public int GetActiveTreasureCategory(TreasureCategory _category)
        public int GetCollectedTreasureCount(TreasureCategory _category)
        {
            var list = GetTreasureCategory(_category);
            if (list == null)
            {
                return 0;
            }
            var treasureIds = GetTreasureCategory(_category);
            var count = 0;
            for (int i = 0; i < list.Count; i++)
            foreach (var id in treasureIds)
            {
                Treasure treasure;
                if (TryGetTreasure(list[i], out treasure) && treasure.state == TreasureState.Collected)
                if (treasures[id].state == TreasureState.Collected)
                {
                    count++;
                }
            }
            return count;
        }
        public int GetCompleteTaskCount(int id)
        {
            var count = 0;
            List<int> tasks = null;
            if (TryGetTreasureTasks(id, out tasks))
            {
                var taskId = taskModel.GetLatestMainTaskId();
                var taskState = taskModel.GetQuestState(taskId);
                var lastTask = tasks[tasks.Count - 1];
                if (taskId > lastTask)
                {
                    count = tasks.Count;
                }
                else
                {
                    var index = tasks.IndexOf(taskId);
                    if (index == -1)
                    {
                        count = 0;
                    }
                    else
                    {
                        count = taskState == 3 ? (index + 1) : index;
                    }
                }
                count = Mathf.Min(count, tasks.Count);
            }
            return count;
        }
@@ -380,113 +496,9 @@
            return 0;
        }
        public void ReceivePackage(uint[] collecteds)
        public List<int> GetFurnacesAchievements()
        {
            for (int i = 0; i < collecteds.Length; i++)
            {
                var id = (int)collecteds[i];
                if (!treasures.ContainsKey(id))
                {
                    continue;
                }
                Treasure treasure = treasures[id];
                if (treasure.state == TreasureState.Collected)
                {
                    continue;
                }
                treasure.state = TreasureState.Collected;
                var config = TreasureConfig.Get(id);
                var category = (TreasureCategory)config.Category;
                if (IsRequireUnlockAnim(category) == treasure.id)
                {
                    SetUnlockAnim(category, 0);
                }
                if (serverInited)
                {
                    newGotTreasureId = id;
                    OpenTreasureNewGot();
                }
                if (category == TreasureCategory.Demon)
                {
                    RefreshDemonDungeonRedpoint(treasure.id);
                }
                if (treasureCollectingShowId == id)
                {
                    treasureCollectingShowId = 0;
                }
                if (treasureStateChangeEvent != null)
                {
                    treasureStateChangeEvent(id);
                }
            }
            foreach (var key in treasures.Keys)
            {
                var treasure = treasures[key];
                if (treasure.state != TreasureState.Locked)
                {
                    continue;
                }
                var config = TreasureConfig.Get(key);
                if (config.PreTreasure == 0 || treasures[config.PreTreasure].state == TreasureState.Collected)
                {
                    var satisfyCollect = false;
                    switch ((TreasureCategory)config.Category)
                    {
                        case TreasureCategory.Human:
                            {
                                List<int> tasks;
                                if (TryGetTreasureTasks(config.ID, out tasks))
                                {
                                    var lastTask = tasks[tasks.Count - 1];
                                    var taskId = taskModel.GetCurrentMainTaskId();
                                    var taskState = taskModel.GetQuestState(taskId);
                                    if (taskId > lastTask || (taskId == lastTask && taskState == 3))
                                    {
                                        satisfyCollect = true;
                                        collectingHuman = key;
                                    }
                                }
                            }
                            break;
                        case TreasureCategory.Demon:
                            {
                                int _unlockAchievementId = 0;
                                Achievement _achievement;
                                treasureAchievementDict.TryGetValue(treasure.id, out _unlockAchievementId);
                                achievementModel.TryGetAchievement(_unlockAchievementId, out _achievement);
                                if (_achievement == null || _achievement.completed)
                                {
                                    satisfyCollect = true;
                                    RefreshDemonDungeonRedpoint(treasure.id);
                                    collectingDemon = key;
                                }
                            }
                            break;
                    }
                    if (satisfyCollect)
                    {
                        if (serverInited)
                        {
                            SetUnlockAnim((TreasureCategory)config.Category, treasure.id);
                        }
                        treasure.state = TreasureState.Collecting;
                    }
                    if (treasureStateChangeEvent != null)
                    {
                        treasureStateChangeEvent(key);
                    }
                }
            }
            return eightFurnacesAchievements;
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataType refreshType)
@@ -500,6 +512,77 @@
                case PlayerDataType.FightPower:
                    RefreshDemonDungeonRedpoints();
                    break;
            }
        }
        private void RefreshTreasureCollectState()
        {
            RefreshTreasureCollectState(TreasureCategory.Human);
            RefreshTreasureCollectState(TreasureCategory.Demon);
        }
        private void RefreshTreasureCollectState(TreasureCategory category)
        {
            var treasureIds = GetTreasureCategory(category);
            foreach (var id in treasureIds)
            {
                var treasure = treasures[id];
                if (treasure.state != TreasureState.Locked)
                {
                    continue;
                }
                var config = TreasureConfig.Get(id);
                if (config.PreTreasure == 0 || treasures[config.PreTreasure].state != TreasureState.Collected)
                {
                    continue;
                }
                var satisfyCollect = false;
                switch (category)
                {
                    case TreasureCategory.Human:
                        {
                            List<int> tasks;
                            if (TryGetTreasureTasks(id, out tasks))
                            {
                                var firstTask = tasks[0];
                                var taskId = taskModel.GetLatestMainTaskId();
                                var taskState = taskModel.GetQuestState(taskId);
                                if (taskId >= firstTask)
                                {
                                    satisfyCollect = true;
                                    collectingHuman = id;
                                }
                            }
                        }
                        break;
                    case TreasureCategory.Demon:
                        {
                            if (PlayerDatas.Instance.baseData.LV >= config.ChallengeLevel)
                            {
                                satisfyCollect = true;
                                collectingDemon = id;
                            }
                        }
                        break;
                }
                if (satisfyCollect)
                {
                    if (isServerReady)
                    {
                        SetUnlockAnim((TreasureCategory)config.Category, id);
                    }
                    treasure.state = TreasureState.Collecting;
                    if (category == TreasureCategory.Demon)
                    {
                        RefreshDemonDungeonRedpoint(id);
                    }
                }
                if (treasureStateChangeEvent != null)
                {
                    treasureStateChangeEvent(id);
                }
            }
        }
@@ -534,6 +617,7 @@
            }
        }
        #region 法宝新获得表现
        private void OnWindowOpen(Window _window)
        {
            if (_window is MainInterfaceWin)
@@ -562,20 +646,20 @@
            }
        }
        public void TryOpenNewGotTreasureWin()
        {
            SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot());
        }
        IEnumerator Co_OpenTreasureNewGot()
        {
            yield return null;
            OpenTreasureNewGot();
        }
        public void CheckOpenTreasureNewGot()
        {
            SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot());
        }
        private void OpenTreasureNewGot()
        {
            if (!(StageLoad.Instance.currentStage is DungeonStage) || !serverInited)
            if (!(StageLoad.Instance.currentStage is DungeonStage) || !isServerReady)
            {
                return;
            }
@@ -594,76 +678,59 @@
            }
            WindowCenter.Instance.Open<TreasureNewGotWin>();
        }
        private void OnAchievementCompleted(int _achievementId)
        {
            foreach (var treasure in treasures.Values)
            {
                var config = TreasureConfig.Get(treasure.id);
                if (treasure.state == TreasureState.Locked)
                {
                    Achievement achievement = null;
                    int _lockAchievement = 0;
                    if (TryGetTreasureUnlockAchievement(treasure.id, out _lockAchievement))
                    {
                        if (achievementModel.TryGetAchievement(_lockAchievement, out achievement)
                            && achievement.completed)
                        {
                            Treasure _pretreasure;
                            switch ((TreasureCategory)config.Category)
                            {
                                case TreasureCategory.Demon:
                                    TryGetTreasure(config.PreTreasure, out _pretreasure);
                                    if (_pretreasure == null || _pretreasure.state == TreasureState.Collected)
                                    {
                                        treasure.state = TreasureState.Collecting;
                                        RefreshDemonDungeonRedpoint(treasure.id);
                                        collectingDemon = treasure.id;
                                        if (serverInited)
                                        {
                                            SetUnlockAnim((TreasureCategory)config.Category, config.ID);
                                        }
                                    }
                                    break;
                            }
                            if (treasureStateChangeEvent != null)
                            {
                                treasureStateChangeEvent(treasure.id);
                            }
                        }
                    }
                }
            }
        }
        #endregion
        public void ReceivePackage(HA352_tagMCMagicWeaponLVInfo package)
        {
            for (int i = 0; i < package.Count; i++)
            {
                var data = package.InfoList[i];
                Treasure treasure;
                if (TryGetTreasure((int)package.InfoList[i].MWID, out treasure))
                if (TryGetTreasure((int)data.MWID, out treasure))
                {
                    bool _up = false;
                    if (treasure.stage < package.InfoList[i].LV)
                    bool levelUp = false;
                    if (treasure.level < data.LV)
                    {
                        _up = true;
                        levelUp = true;
                    }
                    treasure.RefreshLevel(package.InfoList[i].LV, (int)package.InfoList[i].Exp, package.InfoList[i].State == 1);
                    if (treasureLevelProgressUpdateEvent != null)
                    {
                        treasureLevelProgressUpdateEvent(treasure.id);
                    }
                    if (serverInited && _up && treasureStageUpEvent != null)
                    treasure.RefreshLevel(data.LV, (int)data.Exp);
                    if (isServerReady && levelUp && treasureStageUpEvent != null)
                    {
                        treasureStageUpEvent(treasure.id);
                    }
                }
                TreasureDungeon treasureDungeon;
                if (TryGetTreasureDungeon((int)package.InfoList[i].MWID, out treasureDungeon))
                if (treasure.level > 0 && treasure.state != TreasureState.Collected)
                {
                    treasureDungeon.currentLevel = package.InfoList[i].FBPassLV;
                    treasure.state = TreasureState.Collected;
                    var config = TreasureConfig.Get(treasure.id);
                    if (IsRequireUnlockAnim((TreasureCategory)config.Category) == treasure.id)
                    {
                        SetUnlockAnim((TreasureCategory)config.Category, 0);
                    }
                    if (isServerReady)
                    {
                        newGotTreasureId = treasure.id;
                        OpenTreasureNewGot();
                    }
                    if (treasureCollectingShowId == treasure.id)
                    {
                        treasureCollectingShowId = 0;
                    }
                    if (treasureStateChangeEvent != null)
                    {
                        treasureStateChangeEvent(treasure.id);
                    }
                }
                TreasureDungeon treasureDungeon;
                if (TryGetTreasureDungeon((int)data.MWID, out treasureDungeon))
                {
                    treasureDungeon.currentLevel = data.FBPassLV;
                    RefreshDemonDungeonRedpoint(treasureDungeon.treasureId);
                    if (demonTreasureDungeonUpdate != null)
                    {
@@ -671,173 +738,18 @@
                    }
                }
            }
            RefreshTreasureCollectState();
        }
        private void OnTaskRefresh(int MissionID, int MissionState)
        {
            var taskId = taskModel.GetCurrentMainTaskId();
            var taskState = taskModel.GetQuestState(taskId);
            foreach (var id in treasures.Keys)
            {
                var treasure = treasures[id];
                if (treasure.state != TreasureState.Locked)
                {
                    continue;
                }
                var config = TreasureConfig.Get(id);
                if (config.PreTreasure != 0)
                {
                    Treasure preTreasure = treasures[config.PreTreasure];
                    if (preTreasure.state != TreasureState.Collected)
                    {
                        continue;
                    }
                }
                List<int> tasks = null;
                if (TryGetTreasureTasks(id, out tasks))
                {
                    var lastTask = tasks[tasks.Count - 1];
                    if (taskId > lastTask || (taskId == lastTask && taskState == 3))
                    {
                        if (serverInited)
                        {
                            SetUnlockAnim((TreasureCategory)config.Category, config.ID);
                        }
                        treasure.state = TreasureState.Collecting;
                        collectingHuman = treasure.id;
                    }
                }
                if (treasureStateChangeEvent != null)
                {
                    treasureStateChangeEvent(treasure.id);
                }
            }
        }
        public List<int> GetFurnacesAchievements()
        {
            return eightFurnacesAchievements;
            RefreshTreasureCollectState(TreasureCategory.Human);
        }
        public bool IsVersionUnOpenTreasure(int _id)
        {
            return treasureUnOpens.Contains(_id);
        }
        private void ParseConfigs()
        {
            var treasureConfigs = TreasureConfig.GetValues();
            foreach (var config in treasureConfigs)
            {
                var category = (TreasureCategory)config.Category;
                List<int> categoryTreasures = null;
                if (!treasureCategory.ContainsKey(category))
                {
                    treasureCategory[category] = categoryTreasures = new List<int>();
                }
                else
                {
                    categoryTreasures = treasureCategory[category];
                }
                categoryTreasures.Add(config.ID);
                Treasure treasure = new Treasure(config.ID);
                treasures[config.ID] = treasure;
                if (config.Category == (int)TreasureCategory.Demon)
                {
                    for (int i = 0; i < config.Achievements.Length; i++)
                    {
                        var achieveConfig = SuccessConfig.Get(config.Achievements[i]);
                        if (achieveConfig == null)
                        {
                            continue;
                        }
                        if (achieveConfig.Type == 3 || achieveConfig.Type == 1)
                        {
                            treasureAchievementDict.Add(config.ID, config.Achievements[i]);
                            break;
                        }
                    }
                    if (treasure.state == TreasureState.Locked && config.PreTreasure == 0)
                    {
                        treasure.state = TreasureState.Collecting;
                        collectingDemon = treasure.id;
                    }
                }
                if (!treasureMapDict.ContainsKey(config.ID))
                {
                    treasureMapDict.Add(config.ID, config.MapId);
                }
                if (config.ID == 301)
                {
                    List<int> list = null;
                    SuccessConfig.TryGetTreasureExpAchievements(config.ID, out list);
                    if (list != null)
                    {
                        eightFurnacesAchievements.AddRange(list);
                    }
                }
            }
            var treasureUpConfigs = TreasureUpConfig.GetValues();
            foreach (var config in treasureUpConfigs)
            {
                Treasure treasure;
                if (TryGetTreasure(config.MWID, out treasure))
                {
                    treasure.AddTreasureStage(config);
                }
            }
            var funcConfig = FuncConfigConfig.Get("GuideMission");
            guideTreasures = new List<int>();
            guideTreasures.AddRange(ConfigParse.GetMultipleStr<int>(funcConfig.Numerical2));
            funcConfig = FuncConfigConfig.Get("TreasureGetVipLv");
            fairyTreasureGetDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical1);
            funcConfig = FuncConfigConfig.Get("TreasureSkip");
            treasureBackLvLimit = int.Parse(funcConfig.Numerical1);
            funcConfig = FuncConfigConfig.Get("TreasureNoOpen");
            treasureUnOpens.AddRange(ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1));
            funcConfig = FuncConfigConfig.Get("OpenFabao");
            entranceOpenCondition = int.Parse(funcConfig.Numerical1);
            var treasureDungeonConfigs = TreasureDungeonConfig.GetValues();
            foreach (var config in treasureDungeonConfigs)
            {
                TreasureDungeon treasureDungeon;
                if (!treasureDungeons.TryGetValue(config.MWID, out treasureDungeon))
                {
                    var treasureConfig = TreasureConfig.Get(config.MWID);
                    var challengeRedpoint = new Redpoint(CATEGORY_REDPOINTIDS[treasureConfig.Category - 1], TREASURE_REDPOINTBASE + redpointIndex++);
                    treasureDungeon = new TreasureDungeon(config.MWID, challengeRedpoint);
                    treasureDungeons.Add(config.MWID, treasureDungeon);
                }
                treasureDungeon.ParseDungeonInfo(config);
            }
            var taskConfigs = TaskListConfig.GetValues();
            foreach (var config in taskConfigs)
            {
                List<int> tasks = null;
                if (!treasureTasks.TryGetValue(config.FabaoID, out tasks))
                {
                    tasks = new List<int>();
                    treasureTasks.Add(config.FabaoID, tasks);
                }
                tasks.Add(config.TaskID);
            }
        }
        public int GetMapIdByTreasure(int _treasureId)
@@ -864,7 +776,7 @@
            for (int i = 0; i < treasure.treasureStages.Count; i++)
            {
                var _stage = treasure.treasureStages[i];
                if (_real && treasure.stage < _stage.stage)
                if (_real && treasure.level < _stage.stage)
                {
                    break;
                }
@@ -895,6 +807,38 @@
            return 0;
        }
        public bool SatisfyChallenge(int id)
        {
            if (treasures.ContainsKey(id))
            {
                var treasure = treasures[id];
                var config = TreasureConfig.Get(id);
                switch ((TreasureCategory)config.Category)
                {
                    case TreasureCategory.Human:
                        {
                            if (treasure.state != TreasureState.Collecting)
                            {
                                return false;
                            }
                            List<int> tasks = null;
                            if (TryGetTreasureTasks(id, out tasks))
                            {
                                var lastTask = tasks[tasks.Count - 1];
                                var taskId = taskModel.GetLatestMainTaskId();
                                var taskState = taskModel.GetQuestState(taskId);
                                if (taskId > lastTask || (taskId == lastTask && taskState == 3))
                                {
                                    return true;
                                }
                            }
                        }
                        break;
                }
            }
            return false;
        }
        public bool SatisfyEntranceOpen()
        {
            var list = GetTreasureCategory(TreasureCategory.Human);
System/Treasure/TreasureNewGotBehaviour.cs
@@ -61,26 +61,6 @@
                            m_FuncName.text = funcConfig.Remark;
                        }
                        break;
                    case TreasureStageUnlock.Treasure:
                        m_ContaienrTreasure.gameObject.SetActive(true);
                        var treasureConfig = TreasureConfig.Get(treasureStage.treasure);
                        if (treasureConfig != null)
                        {
                            m_TreasureIcon.SetSprite(treasureConfig.Icon);
                            m_Func.text = Language.Get("TreasureUnlockNewTreasure");
                            m_FuncName.text = treasureConfig.Name;
                        }
                        break;
                    case TreasureStageUnlock.TreasureSoul:
                        m_ContaienrTreasure.gameObject.SetActive(true);
                        var treasureSoulConfig = TreasurePrivilegeConfig.Get(treasureStage.treasureSoul);
                        if (treasureSoulConfig != null)
                        {
                            m_TreasureIcon.SetSprite(treasureSoulConfig.Icon);
                            m_Func.text = Language.Get("TreasureUnlockNewTreasureSoul");
                            m_FuncName.text = treasureSoulConfig.Name;
                        }
                        break;
                }
            }
        }
System/Treasure/TreasureNewGotWin.cs
@@ -154,7 +154,7 @@
            model.TryGetTreasure(model.newGotTreasureId, out treasure);
            treasureStage = treasure.treasureStages.Find((x) =>
            {
                return x.stage == treasure.stage;
                return x.stage == treasure.level;
            });
            showStep = ShowStep.None;
        }
@@ -348,9 +348,7 @@
                {
                    index++;
                    if (treasure.treasureStages[k].unlockType == TreasureStageUnlock.Func ||
                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.Skill ||
                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.Treasure ||
                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.TreasureSoul)
                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.Skill)
                    {
                        _stage = treasure.treasureStages[k];
                        displayStageCount++;
System/Treasure/TreasureProperty.cs
@@ -66,9 +66,9 @@
                return;
            }
            var config = TreasureConfig.Get(treasure.id);
            if (treasure.stage < treasure.treasureStages.Count)
            if (treasure.level < treasure.treasureStages.Count)
            {
                m_TreasureStage = treasure.treasureStages[treasure.stage];
                m_TreasureStage = treasure.treasureStages[treasure.level];
            }
            m_PropertyDict.Clear();
            if (config.Category == (int)TreasureCategory.Human)
@@ -76,7 +76,7 @@
                for (int i = 0; i < treasure.treasureStages.Count; i++)
                {
                    TreasureStage _treasureStage = treasure.treasureStages[i];
                    if (treasure.stage >= _treasureStage.stage
                    if (treasure.level >= _treasureStage.stage
                        && _treasureStage.unlockType == TreasureStageUnlock.Property)
                    {
                        foreach (var _key in _treasureStage.propertyDict.Keys)
System/Treasure/TreasureStageTipWin.cs
File was deleted
System/Treasure/TreasureStageTipWin.cs.meta
File was deleted
System/Treasure/UI3DTreasureSelectStage.cs
@@ -642,10 +642,10 @@
                return;
            }
            Treasure treasure;
            if (model.TryGetTreasure(102, out treasure) && treasure.state == TreasureState.Locked)
            {
                return;
            }
            //if (model.TryGetTreasure(102, out treasure) && treasure.state == TreasureState.Locked)
            //{
            //    return;
            //}
            switch (currentCategory)
            {
                case TreasureCategory.King:
System/Vip/VipRechargeWin.cs
@@ -101,7 +101,7 @@
            if (!WindowJumpMgr.Instance.IsJumpState)
            {
                WindowCenter.Instance.Open<MainInterfaceWin>();
                ModelCenter.Instance.GetModel<TreasureModel>().CheckOpenTreasureNewGot();
                ModelCenter.Instance.GetModel<TreasureModel>().TryOpenNewGotTreasureWin();
            }
        }
        #endregion
UI/Common/FuncOpen.cs
@@ -105,7 +105,7 @@
                Treasure treasure = null;
                var _stage = config.LimitMagicWeapon % 100;
                ModelCenter.Instance.GetModel<TreasureModel>().TryGetTreasure(config.LimitMagicWeapon / 100, out treasure);
                if (treasure == null || treasure.state != TreasureState.Collected || treasure.stage < _stage)
                if (treasure == null || treasure.state != TreasureState.Collected || treasure.level < _stage)
                {
                    errorCode = 2;
                    return false;