少年修仙传客户端代码仓库
client_linchunjie
2019-03-26 0d4146aeb683838b6689b9290e6b4a356cea84db
3335 法宝章节任务
19个文件已修改
717 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HA3_Achievement/DTCA312_tagMCMagicWeaponData.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA6_VIP/DTCA606_tagMCVIPKillNPCLVInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/PreFightMission.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUITreasureModelWrap.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FlyingShoesTask.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HighSettingTip.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskModel.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewBieGuidance/FunctionalGuideCenter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewBieGuidance/NewBieCenter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/DemonTreasureWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCollectBriefInfoBehaviour.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureData.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureExhibitionBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 408 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureStageUpTriggerWin.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapTreasure.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Achievement/DTCA312_tagMCMagicWeaponData.cs
@@ -1,18 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class DTCA312_tagMCMagicWeaponData : DtcBasic {
    TreasureModel m_Model;
    TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>()); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var vNetData = vNetPack as HA312_tagMCMagicWeaponData;
        model.UpdateTreasureCollectState(vNetData.MagicWeaponID);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class DTCA312_tagMCMagicWeaponData : DtcBasic {
    TreasureModel m_Model;
    TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>()); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var vNetData = vNetPack as HA312_tagMCMagicWeaponData;
        model.ReceivePackage(vNetData.MagicWeaponID);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
@@ -14,7 +14,7 @@
    {
        base.Done(vNetPack);
        var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
        ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
        ModelCenter.Instance.GetModel<TreasureModel>().ReceivePackage(package);
        ModelCenter.Instance.GetModel<KingTreasureModel>().OnReceivePackage(package);
    }
Core/NetworkPackage/DTCFile/ServerPack/HA6_VIP/DTCA606_tagMCVIPKillNPCLVInfo.cs
@@ -25,7 +25,7 @@
        };
        if (package.KillLV > beforeLevel && package.KillLV > 1)
        {
            model.CheckReguluPop();
            model.TryOpenRegulusPopWindow();
        }
    }
Fight/PreFightMission.cs
@@ -1315,7 +1315,7 @@
        _model.dialogID = 1003;
        _model.onClose = () =>
        {
            ModelCenter.Instance.GetModel<TreasureModel>().SetTreasureUnlockShow(TreasureCategory.Human, 101);
            ModelCenter.Instance.GetModel<TreasureModel>().SetUnlockAnim(TreasureCategory.Human, 101);
            NewBieCenter.Instance.StartNewBieGuide(35);
            NewBieCenter.Instance.guideCompletedEvent += FabaoFlyFinished;
        };
Lua/Gen/SnxxzUITreasureModelWrap.cs
@@ -291,7 +291,7 @@
                
                {
                    
                    gen_to_be_invoked.CheckReguluPop(  );
                    gen_to_be_invoked.TryOpenRegulusPopWindow(  );
                    
                    
                    
@@ -319,7 +319,7 @@
                {
                    TreasureCategory __type;translator.Get(L, 2, out __type);
                    
                        int gen_ret = gen_to_be_invoked.GetTreasureUnlockShow( __type );
                        int gen_ret = gen_to_be_invoked.IsRequireUnlockAnim( __type );
                        LuaAPI.xlua_pushinteger(L, gen_ret);
                    
                    
@@ -380,7 +380,7 @@
                    TreasureCategory __type;translator.Get(L, 2, out __type);
                    int __id = LuaAPI.xlua_tointeger(L, 3);
                    
                    gen_to_be_invoked.SetTreasureUnlockShow( __type, __id );
                    gen_to_be_invoked.SetUnlockAnim( __type, __id );
                    
                    
                    
@@ -639,7 +639,7 @@
                {
                    uint[] _collecteds = (uint[])translator.GetObject(L, 2, typeof(uint[]));
                    
                    gen_to_be_invoked.UpdateTreasureCollectState( _collecteds );
                    gen_to_be_invoked.ReceivePackage( _collecteds );
                    
                    
                    
@@ -694,7 +694,7 @@
                {
                    HA352_tagMCMagicWeaponLVInfo _package = (HA352_tagMCMagicWeaponLVInfo)translator.GetObject(L, 2, typeof(HA352_tagMCMagicWeaponLVInfo));
                    
                    gen_to_be_invoked.UpdateTreasureLevelInfo( _package );
                    gen_to_be_invoked.ReceivePackage( _package );
                    
                    
                    
System/MainInterfacePanel/FlyingShoesTask.cs
@@ -187,7 +187,7 @@
                        var treasureConfig = TreasureConfig.Get(_treasureId);
                        treasureModel.currentCategory = (TreasureCategory)treasureConfig.Category;
                        WindowCenter.Instance.Close<MainInterfaceWin>();
                        var _unlockTreasure = treasureModel.GetTreasureUnlockShow(treasureModel.currentCategory);
                        var _unlockTreasure = treasureModel.IsRequireUnlockAnim(treasureModel.currentCategory);
                        if (_unlockTreasure != 0)
                        {
                            treasureModel.treasureGotoId = _unlockTreasure;
@@ -208,7 +208,7 @@
                        var treasureConfig = TreasureConfig.Get(_treasureId);
                        treasureModel.currentCategory = (TreasureCategory)treasureConfig.Category;
                        WindowCenter.Instance.Close<MainInterfaceWin>();
                        var _unlockTreasure = treasureModel.GetTreasureUnlockShow(treasureModel.currentCategory);
                        var _unlockTreasure = treasureModel.IsRequireUnlockAnim(treasureModel.currentCategory);
                        if (_unlockTreasure != 0)
                        {
                            treasureModel.treasureGotoId = _unlockTreasure;
System/MainInterfacePanel/HighSettingTip.cs
@@ -307,11 +307,11 @@
                return;
            }
            WindowCenter.Instance.Close<MainInterfaceWin>();
            if (_model.GetTreasureUnlockShow(TreasureCategory.Human) != 0)
            if (_model.IsRequireUnlockAnim(TreasureCategory.Human) != 0)
            {
                _model.currentCategory = TreasureCategory.Human;
            }
            else if (_model.GetTreasureUnlockShow(TreasureCategory.Demon) != 0)
            else if (_model.IsRequireUnlockAnim(TreasureCategory.Demon) != 0)
            {
                _model.currentCategory = TreasureCategory.Demon;
            }
System/MainInterfacePanel/TaskModel.cs
@@ -232,8 +232,6 @@
            {
                currentMission = MissionID;
                currentMissionState = MissionState;
                if (Event_MainlineTask != null)
                    Event_MainlineTask(MissionID, MissionState);
            }
@@ -328,6 +326,19 @@
            _C0801.PosY = (ushort)PosY;
            GameNetSystem.Instance.SendInfo(_C0801);
        }
    }
    public int GetCurrentMainTaskId()
    {
        var taskId = 0;
        foreach (var id in MainTaskDic.Keys)
        {
            if (id > taskId)
            {
                taskId = id;
            }
        }
        return taskId;
    }
    void DefaultDialogue()//关于打开默认对话界面
@@ -534,6 +545,10 @@
                        {
                            MainTaskDic.Add(_taskID, allMissionDict[_taskID]);
                        }
                        if (Event_MainlineTask != null)
                        {
                            Event_MainlineTask(_taskID, MissionState);
                        }
                    }
                }
System/NewBieGuidance/FunctionalGuideCenter.cs
@@ -297,7 +297,7 @@
                case GuideTriggerType.TreasureDungeon:
                    Treasure treasure2;
                    treasureModel.TryGetTreasure(config.Condition, out treasure2);
                    return treasure2 != null && treasure2.isChallengeDungeonAble;
                    return treasure2 != null && treasure2.state == TreasureState.Collecting;
                case GuideTriggerType.TreasureCollectSoul:
                    return IsTreasureCollectSoul(config.Condition);
                case GuideTriggerType.TreasureAwaken:
System/NewBieGuidance/NewBieCenter.cs
@@ -312,7 +312,7 @@
                case GuideTriggerType.TreasureDungeon:
                    Treasure treasure;
                    treasureModel.TryGetTreasure(config.Condition, out treasure);
                    return treasure != null && treasure.isChallengeDungeonAble;
                    return treasure != null && treasure.state == TreasureState.Collecting;
                case GuideTriggerType.Treasure:
                    if (!treasureModel.newGotShowing)
                    {
System/Treasure/DemonTreasureWin.cs
@@ -130,7 +130,7 @@
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            model.demonTreasureDungeonUpdate -= DemonTreasureDungeonUpdate;
            TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure;
            model.SetTreasureUnlockShow(TreasureCategory.Demon, 0);
            model.SetUnlockAnim(TreasureCategory.Demon, 0);
            treasureTweening = false;
        }
System/Treasure/TreasureCollectBriefInfoBehaviour.cs
@@ -283,14 +283,6 @@
                Treasure treasure;
                model.TryGetTreasure(displayTreasureId, out treasure);
                var progress = 0f;
                try
                {
                    progress = treasure.progress / (float)config.RequirementTotal;
                }
                catch (System.Exception ex)
                {
                    Debug.Log(ex);
                }
                switch (displayState)
                {
@@ -366,7 +358,7 @@
            }
            WindowCenter.Instance.Close<MainInterfaceWin>();
            if (model.GetTreasureUnlockShow(TreasureCategory.Human) == displayTreasureId)
            if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayTreasureId)
            {
                model.treasureGotoId = displayTreasureId;
                model.currentCategory = TreasureCategory.Human;
System/Treasure/TreasureComponent.cs
@@ -275,7 +275,7 @@
            if (treasureSkin != null)
            {
                treasureSkin.material.SetFloat("_Gray", requireGraySkin ? 1 : 0);
                if (model.GetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id
                if (model.IsRequireUnlockAnim(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id
                    && !UI3DTreasureSelectStage.Instance.CloserComplete)
                {
                    treasureSkin.material.SetFloat("_Gray", 1);
@@ -306,7 +306,7 @@
                    RecycleTreasureLabel();
                    break;
            }
            if (model.GetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id)
            if (model.IsRequireUnlockAnim(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id)
            {
                RecycleCollectingSfx();
                RecycleTreasureEffect();
@@ -337,7 +337,7 @@
                {
                    _effectId = UNGET_BACKLIGHT_EFFECT;
                }
                if (model.GetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory) == treasureId)
                if (model.IsRequireUnlockAnim(UI3DTreasureSelectStage.Instance.currentCategory) == treasureId)
                {
                    _effectId = UNGET_BACKLIGHT_EFFECT;
                }
@@ -446,37 +446,37 @@
            switch (category)
            {
                case TreasureCategory.Human:
                    if (model.IsVersionUnOpenTreasure(treasureId))
                    {
                        displayStr = "=";
                    }
                    else
                    {
                        Achievement achievement = null;
                        var achievementId = 0;
                        var unlock = false;
                        if (model.TryGetTreasureUnlockAchievement(treasureId, out achievementId))
                        {
                            if (achievementModel.TryGetAchievement(achievementId, out achievement))
                            {
                                unlock = true;
                            }
                        }
                        if (unlock && !achievement.completed)
                        {
                            var _achievementConfig = SuccessConfig.Get(achievementId);
                            var _missionId = _achievementConfig.Condition[0];
                            var _taskConfig = PyTaskConfig.Get(_missionId);
                            if (_taskConfig == null)
                            {
                                return;
                            }
                            if (_achievementConfig.Type == 3)
                            {
                                displayStr = StringUtility.Contact(_taskConfig.lv, "+");
                            }
                        }
                    }
                    //if (model.IsVersionUnOpenTreasure(treasureId))
                    //{
                    //    displayStr = "=";
                    //}
                    //else
                    //{
                    //    Achievement achievement = null;
                    //    var achievementId = 0;
                    //    var unlock = false;
                    //    if (model.TryGetTreasureUnlockAchievement(treasureId, out achievementId))
                    //    {
                    //        if (achievementModel.TryGetAchievement(achievementId, out achievement))
                    //        {
                    //            unlock = true;
                    //        }
                    //    }
                    //    if (unlock && !achievement.completed)
                    //    {
                    //        var _achievementConfig = SuccessConfig.Get(achievementId);
                    //        var _missionId = _achievementConfig.Condition[0];
                    //        var _taskConfig = PyTaskConfig.Get(_missionId);
                    //        if (_taskConfig == null)
                    //        {
                    //            return;
                    //        }
                    //        if (_achievementConfig.Type == 3)
                    //        {
                    //            displayStr = StringUtility.Contact(_taskConfig.lv, "+");
                    //        }
                    //    }
                    //}
                    break;
                case TreasureCategory.Demon:
                    var config = TreasureConfig.Get(treasureId);
@@ -776,7 +776,7 @@
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(2.2f);
            UI3DTreasureSelectStage.Instance.UnlockShowing = false;
            model.SetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory, 0);
            model.SetUnlockAnim(UI3DTreasureSelectStage.Instance.currentCategory, 0);
            if (display)
            {
                UpdateTreasureState();
System/Treasure/TreasureData.cs
@@ -30,26 +30,6 @@
            set { m_State = value; }
        }
        int m_Progress = 0;
        public int progress
        {
            get { return m_Progress; }
            set { m_Progress = value; }
        }
        public bool isChallengeDungeonAble
        {
            get
            {
                if (state != TreasureState.Collecting)
                {
                    return false;
                }
                var config = TreasureConfig.Get(id);
                return progress >= config.RequirementTotal;// && config.LastSuccID > 0;
            }
        }
        public int skillId
        {
            get
@@ -94,15 +74,6 @@
            }
            return 0;
        }
        public int IndexOfStage(int _stage)
        {
            if (treasureStages[0].unlockType == TreasureStageUnlock.None)
            {
                return Mathf.Max(_stage - 1, 0);
            }
            return _stage;
        }
    }
System/Treasure/TreasureExhibitionBehaviour.cs
@@ -103,7 +103,7 @@
        private void EffectToFaBaoEvent()
        {
            var treasureId = 0;
            if ((treasureId = model.GetTreasureUnlockShow(TreasureCategory.Human)) != 0)
            if ((treasureId = model.IsRequireUnlockAnim(TreasureCategory.Human)) != 0)
            {
                model.treasureCollectingShowId = treasureId;
                ShowCollectingTreasure();
System/Treasure/TreasureModel.cs
@@ -99,11 +99,11 @@
        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>();
        List<int> eightFurnacesAchievements = new List<int>();
        List<int> m_CacheGotAchievements = new List<int>();
        Dictionary<int, int> treasureStageShowDict = new Dictionary<int, int>();
        List<int> treasureUnOpens = new List<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>();
        List<int> eightFurnacesAchievements = new List<int>();
        List<int> treasureUnOpens = new List<int>();//版本未开放法宝
        public Dictionary<int, int> fairyTreasureGetDict { get; private set; }
@@ -132,6 +132,7 @@
        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 {
@@ -146,50 +147,21 @@
        }
        bool playerLevelRefresh = false;
        bool needDisplayReguluLevelUp = false;
        public override void Init()
        {
            ParseConfigs();
            achievementModel.achievementProgressUpdateEvent += OnAchievementProgressUpdate;
            achievementModel.achievementCompletedEvent += OnAchievementCompleted;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterOpenEvent += OnWindowOpen;
            WindowCenter.Instance.windowAfterCloseEvent += OnWindowClose;
            NewBieCenter.Instance.guideCompletedEvent += GuideComplete;
            StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
            GlobalTimeEvent.Instance.secondEvent += PerSecond;
        }
        public override void UnInit()
        {
            achievementModel.achievementProgressUpdateEvent -= OnAchievementProgressUpdate;
            achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
            NewBieCenter.Instance.guideCompletedEvent -= GuideComplete;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen;
            WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose;
            StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
        }
        private void PerSecond()
        {
            if (serverInited)
            {
                if (playerLevelRefresh)
                {
                    playerLevelRefresh = false;
                }
            }
        }
        public void OnAfterPlayerDataInitialize()
        {
            collectingDemon = 0;
            collectingHuman = 0;
            TaskModel.Event_MainlineTask += OnTaskRefresh;
        }
        public void OnBeforePlayerDataInitialize()
@@ -209,14 +181,50 @@
            }
        }
        public void OnAfterPlayerDataInitialize()
        {
            collectingDemon = 0;
            collectingHuman = 0;
        }
        public void OnPlayerLoginOk()
        {
            serverInited = true;
            UpdateDemonDungeonRedpoints();
            RefreshDemonDungeonRedpoints();
        }
        private bool needDisplayReguluLevelUp = false;
        public void CheckReguluPop()
        public override void UnInit()
        {
            achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
            NewBieCenter.Instance.guideCompletedEvent -= GuideComplete;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
            WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen;
            WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose;
            StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
            TaskModel.Event_MainlineTask -= OnTaskRefresh;
        }
        private void PerSecond()
        {
            if (serverInited)
            {
                if (playerLevelRefresh)
                {
                    playerLevelRefresh = false;
                }
            }
        }
        private void OnStageLoadFinish()
        {
            if (!(StageLoad.Instance.currentStage is DungeonStage))
            {
                exitRecord = 0;
            }
        }
        public void TryOpenRegulusPopWindow()
        {
            if (serverInited)
            {
@@ -235,16 +243,7 @@
            }
        }
        private void OnStageLoadFinish()
        {
            if (!(StageLoad.Instance.currentStage is DungeonStage))
            {
                exitRecord = 0;
            }
        }
        Dictionary<TreasureCategory, int> treasureUnlockShowDict = new Dictionary<TreasureCategory, int>();
        public int GetTreasureUnlockShow(TreasureCategory _type)
        public int IsRequireUnlockAnim(TreasureCategory _type)
        {
            if (!treasureUnlockShowDict.ContainsKey(_type))
            {
@@ -258,22 +257,22 @@
        public bool TryGetUnlockShowTreasure(out int _id)
        {
            _id = 0;
            if ((_id = GetTreasureUnlockShow(TreasureCategory.Human)) != 0)
            if ((_id = IsRequireUnlockAnim(TreasureCategory.Human)) != 0)
            {
                return true;
            }
            else if ((_id = GetTreasureUnlockShow(TreasureCategory.Demon)) != 0)
            else if ((_id = IsRequireUnlockAnim(TreasureCategory.Demon)) != 0)
            {
                return true;
            }
            else if ((_id = GetTreasureUnlockShow(TreasureCategory.Fairy)) != 0)
            else if ((_id = IsRequireUnlockAnim(TreasureCategory.Fairy)) != 0)
            {
                return true;
            }
            return false;
        }
        public void SetTreasureUnlockShow(TreasureCategory _type, int _id)
        public void SetUnlockAnim(TreasureCategory _type, int _id)
        {
            if (treasureUnlockShowDict.ContainsKey(_type))
            {
@@ -320,6 +319,11 @@
        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);
        }
        public List<int> GetAllTreasure()
@@ -376,44 +380,49 @@
            return 0;
        }
        public void UpdateTreasureCollectState(uint[] collecteds)
        public void ReceivePackage(uint[] collecteds)
        {
            for (int i = 0; i < collecteds.Length; i++)
            {
                var id = (int)collecteds[i];
                Treasure treasure;
                if (TryGetTreasure(id, out treasure))
                if (!treasures.ContainsKey(id))
                {
                    var config = TreasureConfig.Get(id);
                    if (treasure.state != TreasureState.Collected)
                    {
                        treasure.state = TreasureState.Collected;
                        if (config.Category == (int)TreasureCategory.Human)
                        {
                            if (GetTreasureUnlockShow(TreasureCategory.Human) == treasure.id)
                            {
                                SetTreasureUnlockShow(TreasureCategory.Human, 0);
                            }
                        }
                    continue;
                }
                Treasure treasure = treasures[id];
                if (treasure.state == TreasureState.Collected)
                {
                    continue;
                }
                        if (serverInited)
                        {
                            newGotTreasureId = id;
                            OpenTreasureNewGot();
                        }
                treasure.state = TreasureState.Collected;
                        UpdateDemonDungeonRedpoint(treasure.id);
                var config = TreasureConfig.Get(id);
                var category = (TreasureCategory)config.Category;
                        if (treasureCollectingShowId == id)
                        {
                            treasureCollectingShowId = 0;
                        }
                if (IsRequireUnlockAnim(category) == treasure.id)
                {
                    SetUnlockAnim(category, 0);
                }
                        if (treasureStateChangeEvent != null)
                        {
                            treasureStateChangeEvent(id);
                        }
                    }
                if (serverInited)
                {
                    newGotTreasureId = id;
                    OpenTreasureNewGot();
                }
                if (category == TreasureCategory.Demon)
                {
                    RefreshDemonDungeonRedpoint(treasure.id);
                }
                if (treasureCollectingShowId == id)
                {
                    treasureCollectingShowId = 0;
                }
                if (treasureStateChangeEvent != null)
                {
                    treasureStateChangeEvent(id);
                }
            }
@@ -428,91 +437,54 @@
                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:
                        case TreasureCategory.Demon:
                            if (treasure.state == TreasureState.Locked)
                            {
                                int _unlockAchievement = 0;
                                Achievement _achievement;
                                treasureAchievementDict.TryGetValue(treasure.id, out _unlockAchievement);
                                achievementModel.TryGetAchievement(_unlockAchievement, out _achievement);
                                if (_achievement == null || _achievement.completed)
                                List<int> tasks;
                                if (TryGetTreasureTasks(config.ID, out tasks))
                                {
                                    if (serverInited)
                                    var lastTask = tasks[tasks.Count - 1];
                                    var taskId = taskModel.GetCurrentMainTaskId();
                                    var taskState = taskModel.GetQuestState(taskId);
                                    if (taskId > lastTask || (taskId == lastTask && taskState == 3))
                                    {
                                        SetTreasureUnlockShow((TreasureCategory)config.Category, treasure.id);
                                    }
                                    treasure.state = TreasureState.Collecting;
                                    UpdateDemonDungeonRedpoint(treasure.id);
                                    if ((TreasureCategory)config.Category == TreasureCategory.Demon)
                                    {
                                        collectingDemon = key;
                                    }
                                    else if ((TreasureCategory)config.Category == TreasureCategory.Human)
                                    {
                                        satisfyCollect = true;
                                        collectingHuman = key;
                                    }
                                }
                            }
                            break;
                        default:
                        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);
                    }
                }
            }
        }
        private void OnAchievementProgressUpdate(int _achievement)
        {
            foreach (var treasure in treasures.Values)
            {
                int[] achievements = null;
                var config = TreasureConfig.Get(treasure.id);
                achievements = config.Achievements;
                if (achievements == null)
                {
                    continue;
                }
                if (Array.IndexOf(achievements, _achievement) != -1)
                {
                    UpdateTreasureCollectProgress(treasure);
                }
            }
        }
        private void UpdateTreasureCollectProgress(Treasure _treasure)
        {
            var config = TreasureConfig.Get(_treasure.id);
            var oldProgress = _treasure.progress;
            var tempProgress = 0;
            Achievement achievement;
            int[] achievements = config.Achievements;
            for (int i = 0; i < achievements.Length; i++)
            {
                if (achievementModel.TryGetAchievement(achievements[i], out achievement))
                {
                    if (achievement.completed)
                    {
                        tempProgress++;
                    }
                }
            }
            if (oldProgress != tempProgress)
            {
                _treasure.progress = tempProgress;
                if (treasureCollectProgressUpdateEvent != null)
                {
                    treasureCollectProgressUpdateEvent(_treasure.id);
                }
            }
        }
@@ -526,20 +498,20 @@
                    break;
                case PlayerDataType.FightPoint:
                case PlayerDataType.FightPower:
                    UpdateDemonDungeonRedpoints();
                    RefreshDemonDungeonRedpoints();
                    break;
            }
        }
        private void UpdateDemonDungeonRedpoints()
        private void RefreshDemonDungeonRedpoints()
        {
            foreach (var treasureId in treasureDungeons.Keys)
            {
                UpdateDemonDungeonRedpoint(treasureId);
                RefreshDemonDungeonRedpoint(treasureId);
            }
        }
        private void UpdateDemonDungeonRedpoint(int treasureId)
        private void RefreshDemonDungeonRedpoint(int treasureId)
        {
            TreasureDungeon treasureDungeon;
            if (TryGetTreasureDungeon(treasureId, out treasureDungeon))
@@ -569,7 +541,7 @@
                SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot());
                if (needDisplayReguluLevelUp)
                {
                    CheckReguluPop();
                    TryOpenRegulusPopWindow();
                }
            }
        }
@@ -628,14 +600,6 @@
            foreach (var treasure in treasures.Values)
            {
                var config = TreasureConfig.Get(treasure.id);
                var achievements = config.Achievements;
                if (achievements != null)
                {
                    if (Array.IndexOf(achievements, _achievementId) != -1)
                    {
                        UpdateTreasureCollectProgress(treasure);
                    }
                }
                if (treasure.state == TreasureState.Locked)
                {
@@ -649,32 +613,18 @@
                            Treasure _pretreasure;
                            switch ((TreasureCategory)config.Category)
                            {
                                case TreasureCategory.Human:
                                    TryGetTreasure(config.PreTreasure, out _pretreasure);
                                    if (_pretreasure == null || _pretreasure.state == TreasureState.Collected)
                                    {
                                        treasure.state = TreasureState.Collecting;
                                        collectingHuman = treasure.id;
                                        if (serverInited)
                                        {
                                            SetTreasureUnlockShow((TreasureCategory)config.Category, config.ID);
                                        }
                                    }
                                    break;
                                case TreasureCategory.Demon:
                                    TryGetTreasure(config.PreTreasure, out _pretreasure);
                                    if (_pretreasure == null || _pretreasure.state == TreasureState.Collected)
                                    {
                                        treasure.state = TreasureState.Collecting;
                                        UpdateDemonDungeonRedpoint(treasure.id);
                                        RefreshDemonDungeonRedpoint(treasure.id);
                                        collectingDemon = treasure.id;
                                        if (serverInited)
                                        {
                                            SetTreasureUnlockShow((TreasureCategory)config.Category, config.ID);
                                            SetUnlockAnim((TreasureCategory)config.Category, config.ID);
                                        }
                                    }
                                    break;
                                case TreasureCategory.Fairy:
                                    break;
                            }
@@ -688,7 +638,7 @@
            }
        }
        public void UpdateTreasureLevelInfo(HA352_tagMCMagicWeaponLVInfo package)
        public void ReceivePackage(HA352_tagMCMagicWeaponLVInfo package)
        {
            for (int i = 0; i < package.Count; i++)
            {
@@ -714,11 +664,55 @@
                if (TryGetTreasureDungeon((int)package.InfoList[i].MWID, out treasureDungeon))
                {
                    treasureDungeon.currentLevel = package.InfoList[i].FBPassLV;
                    UpdateDemonDungeonRedpoint(treasureDungeon.treasureId);
                    RefreshDemonDungeonRedpoint(treasureDungeon.treasureId);
                    if (demonTreasureDungeonUpdate != null)
                    {
                        demonTreasureDungeonUpdate(treasureDungeon.treasureId);
                    }
                }
            }
        }
        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);
                }
            }
        }
@@ -754,38 +748,26 @@
                treasures[config.ID] = treasure;
                for (int i = 0; i < config.Achievements.Length; i++)
                if (config.Category == (int)TreasureCategory.Demon)
                {
                    var achieveConfig = SuccessConfig.Get(config.Achievements[i]);
                    if (achieveConfig == null)
                    for (int i = 0; i < config.Achievements.Length; i++)
                    {
                        continue;
                        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 (config.Category == (int)TreasureCategory.Human
                        && (achieveConfig.Type == 3 || achieveConfig.Type == 1))
                    {
                        treasureAchievementDict.Add(config.ID, config.Achievements[i]);
                        break;
                    }
                    else if (config.Category == (int)TreasureCategory.Demon
                        && (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;
                    switch ((TreasureCategory)config.Category)
                    if (treasure.state == TreasureState.Locked && config.PreTreasure == 0)
                    {
                        case TreasureCategory.Human:
                            collectingHuman = treasure.id;
                            break;
                        case TreasureCategory.Demon:
                            collectingDemon = treasure.id;
                            break;
                        treasure.state = TreasureState.Collecting;
                        collectingDemon = treasure.id;
                    }
                }
@@ -844,6 +826,18 @@
                }
                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)
System/Treasure/TreasureStageUpTriggerWin.cs
@@ -116,61 +116,6 @@
        {
            model.TryGetTreasure(model.selectedTreasure, out m_Treasure);
            if (m_Treasure.id == 301)
            {
                OnFurnacesTreasure();
                return;
            }
            var _stage = m_Treasure.treasureStages.Find((x) =>
            {
                return x.stage == m_Treasure.stage;
            });
            if (_stage == null)
            {
                CloseImmediately();
                return;
            }
            var instance = UIUtility.CreateWidget(_stage.unlockType == TreasureStageUnlock.Skill
                ?"TreasureStageSkillFlyObject": "TreasureStageFuncFlyObject", "TreasureStageFlyObject");
            instance.transform.SetParentEx(m_FlyContainer, Vector3.zero, Quaternion.identity, Vector3.one);
            var _index = _stage.stage;
            _index = m_Treasure.IndexOfStage(_index);
            var _config = ScriptableObjectLoader.LoadSoTreasureMeridian(model.selectedTreasure);
            if (_config != null)
            {
                instance.transform.localPosition = _stage.unlockType == TreasureStageUnlock.Skill ? m_SkillPosition : _config[_index].position;
            }
            flyObject = instance.GetComponent<FunctionUnlockFlyObject>();
            switch (_stage.unlockType)
            {
                case TreasureStageUnlock.Skill:
                    flyObject.SetContent(FunctionUnlockType.TreasureSkill, m_Treasure.id);
                    flyObject.SetSpeed(6.0f);
                    break;
                case TreasureStageUnlock.Func:
                    flyObject.SetContent(FunctionUnlockType.Normal, _stage.func);
                    flyObject.SetSpeed(3.0f);
                    break;
            }
            if (screenShotCut != null)
            {
                m_AlphaTween.Play(OnAlphaComplete);
            }
            else
            {
                m_AlphaTween.SetEndState();
                flyObject.Begin(OnReach);
            }
        }
        void OnFurnacesTreasure()
        {
            var instance = UIUtility.CreateWidget("TreasureUnlockFlyObject_1", "TreasureUnlockFlyObject_1");
            instance.transform.SetParentEx(m_FurnacesFlyContainer, Vector3.zero, Quaternion.identity, Vector3.one);
            flyObject = instance.GetComponent<FunctionUnlockFlyObject>();
@@ -197,51 +142,7 @@
        private void OnReach()
        {
            if (m_Treasure.id == 301)
            {
                NewBieCenter.Instance.StartNewBieGuide(33);
                CloseImmediately();
                return;
            }
            var _stage = m_Treasure.treasureStages.Find((x) =>
            {
                return x.stage == m_Treasure.stage;
            });
            switch (_stage.unlockType)
            {
                case TreasureStageUnlock.Func:
                    var funcConfig = FuncOpenLVConfig.Get(_stage.func);
                    if (funcConfig != null)
                    {
                        if ((FuncOpenEnum)funcConfig.FuncId == FuncOpenEnum.Strength)
                        {
                            NewBieCenter.Instance.StartNewBieGuide(10);
                        }
                        else if((FuncOpenEnum)funcConfig.FuncId == FuncOpenEnum.Mounts)
                        {
                            NewBieCenter.Instance.StartNewBieGuide(19);
                        }
                        else if ((FuncOpenEnum)funcConfig.FuncId == FuncOpenEnum.Pet)
                        {
                            NewBieCenter.Instance.StartNewBieGuide(23);
                        }
                        else if ((FuncOpenEnum)funcConfig.FuncId == FuncOpenEnum.Rune)
                        {
                            NewBieCenter.Instance.StartNewBieGuide(27);
                        }
                    }
                    break;
                case TreasureStageUnlock.Skill:
                    switch (m_Treasure.id)
                    {
                        case 104:
                            break;
                        case 105:
                            NewBieCenter.Instance.StartNewBieGuide(49);
                            break;
                    }
                    break;
            }
            NewBieCenter.Instance.StartNewBieGuide(33);
            CloseImmediately();
        }
    }
System/Treasure/UI3DTreasureSelectStage.cs
@@ -356,7 +356,7 @@
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            model.treasureStageUpEvent -= TreasureStageUpEvent;
            model.SetTreasureUnlockShow(currentCategory, 0);
            model.SetUnlockAnim(currentCategory, 0);
            if (currentTreasureTitle != null)
            {
@@ -481,9 +481,9 @@
        {
            var _treasure = 0;
            int _index = -1;
            if (model.GetTreasureUnlockShow(currentCategory) != 0)
            if (model.IsRequireUnlockAnim(currentCategory) != 0)
            {
                _treasure = model.GetTreasureUnlockShow(currentCategory);
                _treasure = model.IsRequireUnlockAnim(currentCategory);
                model.treasureGotoId = _treasure;
                UnlockShowing = true;
            }
@@ -1082,10 +1082,10 @@
                return;
            }
            var treasureId = 0;
            if (model.GetTreasureUnlockShow(currentCategory) != 0)
            if (model.IsRequireUnlockAnim(currentCategory) != 0)
            {
                UnlockShowing = true;
                treasureId = model.GetTreasureUnlockShow(currentCategory);
                treasureId = model.IsRequireUnlockAnim(currentCategory);
                model.treasureGotoId = treasureId;
            }
            if (treasureId != 0)
System/WorldMap/LocalMapTreasure.cs
@@ -32,7 +32,7 @@
            Treasure treasure;
            if (model.TryGetTreasure(treasureId, out treasure))
            {
                var progress = treasure.progress / (float)config.RequirementTotal;
                var progress = 0f;
                m_Progress.value = progress;
                m_TreasureProgress.text = StringUtility.Contact((progress * 100f).ToString("f0"), "%");
            }