少年修仙传客户端代码仓库
client_Hale
2018-11-13 4c2762f9fb30671679c6dbc11e3e4aa428c62ab4
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
19个文件已修改
6个文件已添加
1133 ■■■■ 已修改文件
System/Achievement/AchievementModel.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BossShow/BossShowModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatCenter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/CoinTaskTipModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FlyingShoesTask.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/PlayerTaskDatas.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/PowerAddWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/StoreModel.cs 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/DemonTreasureWin.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/DemonTreasureWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureCollectPanel.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureCollectPanelPattern3.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureCollectPanelPattern5.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureWin.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureBaseWin.cs 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureBaseWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCollectBriefInfoBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureDemonBehaviour.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureExhibitionBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureLevelUpWin.cs 315 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSelectWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapTreasure.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Achievement/AchievementModel.cs
@@ -179,7 +179,7 @@
                switch (config.Type)
                {
                    case 3:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        var hasTask = taskmodel.GetQuestState(config.Condition[0]) != -1;
@@ -234,7 +234,7 @@
                                else
                                {
                                    taskmodel.DailyBountyMove();
                                    WindowCenter.Instance.Close<TreasureLevelUpWin>();
                                    WindowCenter.Instance.Close<TreasureBaseWin>();
                                    WindowCenter.Instance.Open<MainInterfaceWin>();
                                }
                            }
@@ -243,7 +243,7 @@
                    case 1:
                        if (PlayerDatas.Instance.baseData.LV < GeneralDefine.achievementEarlierStageLevel)
                        {
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            WindowCenter.Instance.Open<MainInterfaceWin>();
                            taskmodel.AutomaticTripToTask(taskmodel.currentMission);
                        }
@@ -257,7 +257,7 @@
                        break;
                    case 4:
                    case 86:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        var mapModel = ModelCenter.Instance.GetModel<MapModel>();
                        var pointId = mapModel.GetRecommendHangPoint();
                        var mapEventConfig = Config.Instance.Get<MapEventPointConfig>(pointId);
@@ -265,12 +265,12 @@
                        WindowCenter.Instance.Open<LocalMapWin>();
                        break;
                    case 36:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        MapTransferUtility.Instance.MoveToNPC(config.Condition[0]);
                        break;
                    case 37:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        MapTransferUtility.Instance.MoveToLocalMapPosition(config.Condition2.Vector3Parse());
                        break;
@@ -292,7 +292,7 @@
                        {
                            if (PlayerDatas.Instance.baseData.LV < GeneralDefine.achievementEarlierStageLevel)
                            {
                                WindowCenter.Instance.Close<TreasureLevelUpWin>();
                                WindowCenter.Instance.Close<TreasureBaseWin>();
                                WindowCenter.Instance.Open<MainInterfaceWin>();
                                taskmodel.AutomaticTripToTask(taskmodel.currentMission);
                            }
@@ -333,7 +333,7 @@
                        else
                        {
                            AchievementGoto.guideAchievementId = _achievementId;
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            playerPack.SetLookIndex(guid82);
                            WindowCenter.Instance.Close<MainInterfaceWin>();
@@ -358,7 +358,7 @@
                        {
                            AchievementGoto.guideAchievementId = _achievementId;
                            playerPack.SetLookIndex(guid83);
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            WindowCenter.Instance.Close<MainInterfaceWin>();
                            WindowCenter.Instance.Open<KnapSackWin>();
                        }
@@ -379,7 +379,7 @@
                        }
                        else
                        {
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            playerPack.SetLookIndex(guid84);
                            WindowCenter.Instance.Close<MainInterfaceWin>();
@@ -402,7 +402,7 @@
                        }
                        else
                        {
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            playerPack.SetLookIndex(guid85);
                            WindowCenter.Instance.Close<MainInterfaceWin>();
@@ -417,7 +417,7 @@
                        }
                        else
                        {
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<TreasureBaseWin>();
                            playerPack.SetLookIndex(guid90);
                            WindowCenter.Instance.Close<MainInterfaceWin>();
@@ -425,7 +425,7 @@
                        }
                        break;
                    case 109:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        var skillId = SkillConfig.FindSkillByJob(config.Condition, PlayerDatas.Instance.baseData.Job);
                        if (skillId != 0)
@@ -483,7 +483,7 @@
                                }
                                treasureModel.currentCategory = TreasureCategory.Human;
                                treasureModel.selectedTreasure = treasureId;
                                if (!WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
                                if (!WindowCenter.Instance.IsOpen<TreasureBaseWin>())
                                {
                                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureCollectSoul);
                                }
@@ -491,7 +491,7 @@
                        }
                        break;
                    default:
                        WindowCenter.Instance.Close<TreasureLevelUpWin>();
                        WindowCenter.Instance.Close<TreasureBaseWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        break;
System/BossShow/BossShowModel.cs
@@ -80,10 +80,10 @@
                ActiveBossShowCam(true);
                CameraController.Instance.CameraObject.enabled = false;
                if (WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
                if (WindowCenter.Instance.IsOpen<TreasureBaseWin>())
                {
                    WindowJumpMgr.Instance.ClearJumpData();
                    WindowCenter.Instance.CloseImmediately<TreasureLevelUpWin>();
                    WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                    WindowCenter.Instance.CloseImmediately<TreasureSelectWin>();
                    WindowCenter.Instance.Open<MainInterfaceWin>();
                }
System/Chat/ChatCenter.cs
@@ -779,7 +779,7 @@
        private void CheckChatFloatOpen()
        {
            if (WindowCenter.Instance.ExitAnyFullScreenOrMaskWin() && !WindowCenter.Instance.IsOpen<LoadingWin>()
                && StageManager.Instance.CurrentStage is DungeonStage && !WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
                && StageManager.Instance.CurrentStage is DungeonStage && !WindowCenter.Instance.IsOpen<TreasureBaseWin>())
            {
                if (!WindowCenter.Instance.IsOpen<ChatFloatWin>())
                {
System/MainInterfacePanel/CoinTaskTipModel.cs
@@ -114,7 +114,7 @@
    private IEnumerator PopupPanel()
    {
        yield return WaitingForSecondConst.WaitMS1500;
        if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing || WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
        if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing || WindowCenter.Instance.IsOpen<TreasureBaseWin>())
        {
            yield break;
        }
@@ -136,7 +136,7 @@
    private IEnumerator FairyAuTaskPanel()
    {
        yield return WaitingForSecondConst.WaitMS1500;
        if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing || WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
        if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing || WindowCenter.Instance.IsOpen<TreasureBaseWin>())
        {
            yield break;
        }
System/MainInterfacePanel/FlyingShoesTask.cs
@@ -189,7 +189,7 @@
                        {
                            treasureModel.selectedTreasure = _treasureId;
                            treasureModel.openFromTaskId = Task_ID;
                            WindowCenter.Instance.Open<TreasureLevelUpWin>();
                            WindowCenter.Instance.Open<TreasureBaseWin>();
                        }
                        return;
                    }
@@ -211,7 +211,7 @@
                        {
                            treasureModel.selectedTreasure = _treasureId;
                            treasureModel.openFromTaskId = Task_ID;
                            WindowCenter.Instance.Open<TreasureLevelUpWin>();
                            WindowCenter.Instance.Open<TreasureBaseWin>();
                        }
                    }
                    break;
System/MainInterfacePanel/PlayerTaskDatas.cs
@@ -1295,7 +1295,7 @@
            yield break;
        }
        if (WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
        if (WindowCenter.Instance.IsOpen<TreasureBaseWin>())
        {
            yield break;
        }
System/MainInterfacePanel/PowerAddWin.cs
@@ -121,7 +121,7 @@
        void CheckPosition()
        {
            var type = WindowType.None;
            if (WindowCenter.Instance.IsOpen<TreasureLevelUpWin>())
            if (WindowCenter.Instance.IsOpen<TreasureBaseWin>())
            {
                type = WindowType.TreasureLevelUp;
            }
System/Store/StoreModel.cs
@@ -109,6 +109,260 @@
        isLogin = false;
    }
    #region 解析本地数据
    public Dictionary<int, List<int>> storeRedRuleDict { get; private set; } //红点类型 1,免费商品  2,必买商品  3,坐骑灵宠 4,可购买物品(积分兑换)
    public Dictionary<int, List<int>> storePushDict { get; private set; } //1,每日弹1次2,只弹1次
    private void ParseFuncConfig()
    {
        storeRedRuleDict = new Dictionary<int, List<int>>();
        storePushDict = new Dictionary<int, List<int>>();
        FuncConfigConfig storeRedRules = Config.Instance.Get<FuncConfigConfig>("StoreRedRules");
        if(storeRedRules != null)
        {
            JsonData redRules = JsonMapper.ToObject(storeRedRules.Numerical1);
            foreach(var type in redRules.Keys)
            {
                int redType = 0;
                int.TryParse(type,out redType);
                JsonData shops = redRules[type];
                if (!storeRedRuleDict.ContainsKey(redType))
                {
                    List<int> shopIdlist = new List<int>();
                    if(shops.IsArray)
                    {
                        for(int i = 0; i < shops.Count; i++)
                        {
                            int shopId = 0;
                            int.TryParse(shops[i].ToString(),out shopId);
                            shopIdlist.Add(shopId);
                        }
                    }
                    storeRedRuleDict.Add(redType,shopIdlist);
                }
            }
            JsonData pushRules = JsonMapper.ToObject(storeRedRules.Numerical2);
            foreach(var type in pushRules.Keys)
            {
                int pushType = 0;
                int.TryParse(type,out pushType);
                JsonData shops = pushRules[type];
                if (!storePushDict.ContainsKey(pushType))
                {
                    List<int> shopIdlist = new List<int>();
                    if (shops.IsArray)
                    {
                        for (int i = 0; i < shops.Count; i++)
                        {
                            int shopId = 0;
                            int.TryParse(shops[i].ToString(), out shopId);
                            shopIdlist.Add(shopId);
                        }
                    }
                    storePushDict.Add(pushType, shopIdlist);
                }
            }
        }
    }
    public Dictionary<int,List<StoreConfig>> storeTypeDict { get; private set; }
    private void ParseStoreConfig()
    {
        storeTypeDict = new Dictionary<int, List<StoreConfig>>();
        List<StoreConfig> storeConfigs = Config.Instance.GetAllValues<StoreConfig>();
        for(int i = 0; i < storeConfigs.Count; i++)
        {
            var config = storeConfigs[i];
            if(config.ShopType != 0)
            {
                if(!storeTypeDict.ContainsKey(config.ShopType))
                {
                    List<StoreConfig> configs = new List<StoreConfig>();
                    configs.Add(config);
                    storeTypeDict.Add(config.ShopType,configs);
                }
                else
                {
                    storeTypeDict[config.ShopType].Add(config);
                }
            }
        }
        foreach(var type in storeTypeDict.Keys)
        {
            var configs = storeTypeDict[type];
            configs.Sort(CompareByShopSort);
        }
    }
    public int CompareByShopSort(StoreConfig start, StoreConfig end)
    {
        int sort1 = start.ShopSort;
        int sort2 = end.ShopSort;
        if (sort1.CompareTo(sort2) != 0) return sort1.CompareTo(sort2);
        return 0;
    }
    #endregion
    #region 获取数据
    public bool TryGetRedTypeByShopId(int shopId, out int type)
    {
        type = 0;
        foreach (var key in storeRedRuleDict.Keys)
        {
            List<int> idlist = storeRedRuleDict[key];
            if (idlist.Contains(shopId))
            {
                type = key;
                return true;
            }
        }
        return false;
    }
    public bool TryGetPushTypeByShopId(int shopId, out int type)
    {
        type = 0;
        foreach (var key in storePushDict.Keys)
        {
            List<int> idlist = storePushDict[key];
            if (idlist.Contains(shopId))
            {
                type = key;
                return true;
            }
        }
        return false;
    }
    private Dictionary<int, List<StoreConfig>> showStoreTypeDict = new Dictionary<int, List<StoreConfig>>();
    public void UpdateShowStore()
    {
        showStoreTypeDict.Clear();
        foreach(var type in storeTypeDict.Keys)
        {
            var configs = storeTypeDict[type];
            List<StoreConfig> showConfigs = new List<StoreConfig>();
            if(!showStoreTypeDict.ContainsKey(type))
            {
                for (int i = 0; i < configs.Count; i++)
                {
                    var config = configs[i];
                    int remainNum = 0;
                    bool isSellOut = TryGetIsSellOut(config, out remainNum);
                    if(isSellOut && config.TheOnlyShop == 1)
                    {
                    }
                }
            }
        }
    }
    public bool TryGetIsSellOut(StoreConfig storeConfig, out int remainCnt)
    {
        int canBuyCnt = 0;
        int addBuyCnt = 0;
        remainCnt = 0;
        bool isLimitBuy = TryGetLimitBuy(storeConfig, out canBuyCnt, out addBuyCnt);
        if (!isLimitBuy) return false;
        int remainNum = canBuyCnt;
        BuyShopItemLimit shopItemLimit = GetBuyShopLimit((uint)storeConfig.ID);
        if (shopItemLimit != null)
        {
            remainNum -= shopItemLimit.BuyCnt;
        }
        if (remainNum <= 0)
        {
            return true;
        }
        return false;
    }
    public bool TryGetLimitBuy(StoreConfig config, out int canBuyCnt, out int addBuyCnt)
    {
        canBuyCnt = 0;
        addBuyCnt = 0;
        if (config == null) return false;
        int[] canBuyNums = config.PurchaseNumber;
        if (canBuyNums == null || canBuyNums.Length < 1) return false;
        int curVipIndex = -1;
        int nexVipIndex = -1;
        bool isVipBuy = TryGetVipBuy(config, out curVipIndex, out nexVipIndex);
        if (isVipBuy)
        {
            if (curVipIndex != -1)
            {
                canBuyCnt = canBuyNums[curVipIndex];
            }
            if (nexVipIndex != -1)
            {
                addBuyCnt = canBuyNums[nexVipIndex] - canBuyCnt;
            }
            return true;
        }
        else
        {
            if (canBuyNums[0] != 0)
            {
                canBuyCnt = canBuyNums[0];
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    public bool TryGetVipBuy(StoreConfig config, out int curVipIndex, out int nextVipIndex)
    {
        curVipIndex = -1;
        nextVipIndex = -1;
        bool isVipBuy = false;
        if (config == null) return false;
        var vipLvs = config.VIPLV;
        if (vipLvs == null || vipLvs.Length < 1) return false;
        for(int i =  0; i < vipLvs.Length; i++)
        {
            var vipLv = vipLvs[i];
            if(vipLv != 0)
            {
                isVipBuy = true;
            }
        }
        if (isVipBuy)
        {
            int playerVip = PlayerDatas.Instance.baseData.VIPLv;
            for (int i = vipLvs.Length - 1; i > -1; i--)
            {
                var vipLv = vipLvs[i];
                if (vipLv > playerVip)
                {
                    nextVipIndex = i;
                }
                else if (vipLv <= playerVip)
                {
                    curVipIndex = i;
                    break;
                }
            }
        }
        return isVipBuy;
    }
    #endregion
    public string GetStoreRefreshTimeByType(int type)
    {
        if (resetTimeDict == null || !resetTimeDict.ContainsKey(type)) return string.Empty;
System/Treasure/DemonTreasureWin.cs
New file
@@ -0,0 +1,70 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, November 13, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class DemonTreasureWin : Window
    {
        [SerializeField] TreasureDemonBehaviour m_TreasureDemonBehaviour;
        TreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            UI3DTreasureSelectStage.Instance.SetStartState();
        }
        protected override void OnActived()
        {
            base.OnActived();
            model.treasureSelectedEvent += TreasureSelectedEvent;
            m_TreasureDemonBehaviour.Display(model.selectedTreasure, true);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            model.treasureSelectedEvent -= TreasureSelectedEvent;
            model.SetTreasureUnlockShow(TreasureCategory.Demon, 0);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void TreasureSelectedEvent(int obj)
        {
            m_TreasureDemonBehaviour.Display(model.selectedTreasure, false);
        }
    }
}
System/Treasure/DemonTreasureWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9a3ed68d5cc690a458ae6f67f431841b
timeCreated: 1542095044
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/FairyTreasureCollectPanel.cs
@@ -12,8 +12,10 @@
{
    public class FairyTreasureCollectPanel : MonoBehaviour
    {
        [SerializeField] Image m_TreasureNameIcon;
        [SerializeField] PositionTween m_NameTween;
        [SerializeField] TreasureContainer[] m_TreasureContainers;
        public void Display(int _treasureId, bool _tween = false)
        {
@@ -33,6 +35,20 @@
                }
            }
            var config = Config.Instance.Get<TreasureConfig>(_treasureId);
            if (config != null)
            {
                m_TreasureNameIcon.SetSprite(config.TreasureNameIcon);
            }
            if (_tween)
            {
                m_NameTween.Play();
            }
            else
            {
                m_NameTween.SetEndState();
            }
        }
        public void Dispose()
System/Treasure/FairyTreasureCollectPanelPattern3.cs
@@ -130,7 +130,7 @@
                        FuncOpen.Instance.ProcessorFuncErrorTip(124);
                        return;
                    }
                    WindowCenter.Instance.CloseImmediately<TreasureLevelUpWin>();
                    WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                    WindowCenter.Instance.Open<TreasureFindHostWin>();
                    break;
            }
@@ -145,7 +145,7 @@
            }
            if (show)
            {
                WindowCenter.Instance.CloseImmediately<TreasureLevelUpWin>();
                WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
            show = false;
System/Treasure/FairyTreasureCollectPanelPattern5.cs
@@ -182,7 +182,7 @@
        private void DisplayFurnacesHole()
        {
            m_ContainerHoles.gameObject.SetActive(treasure.state == TreasureState.Collected);
            if (treasure.state == TreasureState.Collected)
            if (treasure.state == TreasureState.Collected && treasure.stage == 0)
            {
                var _list = model.GetFurnacesAchievements();
                for (int i = 0; i < m_FurnacesIcons.Length; i++)
@@ -218,7 +218,7 @@
                    m_FurnacesIcons[i].gameObject.SetActive(achievement != null && achievement.completed);
                }
            }
            else
            if (treasure.state == TreasureState.Collected && treasure.stage >= 1)
            {
                for (int i = 0; i < m_FurnacesIcons.Length; i++)
                {
@@ -257,7 +257,7 @@
            {
                TreasureStageUpTriggerWin.screenShotCut = _tex;
                WindowJumpMgr.Instance.ClearJumpData();
                WindowCenter.Instance.CloseImmediately<TreasureLevelUpWin>();
                WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                WindowCenter.Instance.Open<TreasureStageUpTriggerWin>(true);
                WindowCenter.Instance.Open<MainInterfaceWin>();
                if (WindowCenter.Instance.IsOpen<DialogueDuidanceWin>())
@@ -439,7 +439,7 @@
        private void GotoStove()
        {
            WindowCenter.Instance.CloseImmediately<TreasureLevelUpWin>();
            WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
            WindowCenter.Instance.Close<MainInterfaceWin>();
            WindowCenter.Instance.Open<BlastFurnaceWin>();
        }
System/Treasure/FairyTreasureWin.cs
New file
@@ -0,0 +1,70 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, November 13, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class FairyTreasureWin : Window
    {
        [SerializeField] FairyTreasureCollectPanel m_TreasureFairyBehaviour;
        TreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            UI3DTreasureSelectStage.Instance.SetStartState();
        }
        protected override void OnActived()
        {
            base.OnActived();
            model.treasureSelectedEvent += TreasureSelectedEvent;
            m_TreasureFairyBehaviour.Dispose();
            m_TreasureFairyBehaviour.Display(model.selectedTreasure, true);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            m_TreasureFairyBehaviour.Dispose();
            model.treasureSelectedEvent -= TreasureSelectedEvent;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void TreasureSelectedEvent(int obj)
        {
            m_TreasureFairyBehaviour.Dispose();
            m_TreasureFairyBehaviour.Display(model.selectedTreasure, false);
        }
    }
}
System/Treasure/FairyTreasureWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e51dda432d4101d459487613d8918b7e
timeCreated: 1542095817
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/TreasureBaseWin.cs
New file
@@ -0,0 +1,288 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, November 13, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class TreasureBaseWin : Window
    {
        [SerializeField] RectTransform m_DisplayContainer;
        [SerializeField] Image m_TreasureTitle;
        [SerializeField] DragSelectComponent m_DragSelect;
        [SerializeField] Button m_Left;
        [SerializeField] Button m_Right;
        [SerializeField] Button m_Back;
        public static event Func<int, bool> allowSelectTreasure;
        public static event Func<int> allowBack;
        public static event Action<int> prepareSelectTreasure;
        public static event Action prepareBack;
        bool backToSelectWindow = false;
        TreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Left.onClick.AddListener(Left);
            m_Right.onClick.AddListener(Right);
            m_Back.onClick.AddListener(Back);
        }
        protected override void OnPreOpen()
        {
            backToSelectWindow = false;
            m_DisplayContainer.gameObject.SetActive(false);
            if (UI3DTreasureSelectStage.Instance.IsOpen)
            {
                if (UI3DTreasureSelectStage.Instance.jumpTreasure != 0)
                {
                    model.selectedTreasure = UI3DTreasureSelectStage.Instance.jumpTreasure;
                }
                else
                {
                    model.selectedTreasure = UI3DTreasureSelectStage.Instance.selectTreasure;
                }
            }
        }
        protected override void OnAfterOpen()
        {
            UI3DTreasureSelectStage.Instance.OnCameraCloserComplete += OnCameraCloserComplete;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete += OnCameraBackComplete;
            m_DragSelect.onDragComplete += OnDragComplete;
            model.treasureSelectedEvent += TreasureSelectedEvent;
            CameraManager.uiCamera.enabled = true;
            if (!UI3DTreasureSelectStage.Instance.IsOpen)
            {
                UI3DTreasureSelectStage.Instance.Open(true, model.currentCategory);
                var _list = model.GetTreasureCategory(model.currentCategory);
                var _index = _list.FindIndex((x) =>
                {
                    return x == model.selectedTreasure;
                });
                UI3DTreasureSelectStage.Instance.GotoImmediatly(_index);
                OnCameraCloserComplete();
            }
            else if (UI3DTreasureSelectStage.Instance.CloserComplete)
            {
                OnCameraCloserComplete();
            }
        }
        protected override void OnPreClose()
        {
            CloseSubWindows();
            UI3DTreasureSelectStage.Instance.OnCameraCloserComplete -= OnCameraCloserComplete;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete -= OnCameraBackComplete;
            m_DragSelect.onDragComplete -= OnDragComplete;
            model.treasureSelectedEvent -= TreasureSelectedEvent;
            if (!backToSelectWindow)
            {
                UI3DTreasureSelectStage.Instance.Close();
            }
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void TreasureSelectedEvent(int treasureId)
        {
            DisplaySelects();
            var list = model.GetTreasureCategory(model.currentCategory);
            var index = list.FindIndex((x) =>
            {
                return x == treasureId;
            });
            if (index != -1)
            {
                UI3DTreasureSelectStage.Instance.GotoImmediatly(index);
            }
        }
        private void OnCameraCloserComplete()
        {
            if (WindowCenter.Instance.IsOpen<EffectToFaBaoWin>())
            {
                WindowCenter.Instance.CloseImmediately<EffectToFaBaoWin>();
            }
            CloseSubWindows();
            m_DisplayContainer.gameObject.SetActive(true);
            switch (model.currentCategory)
            {
                case TreasureCategory.Human:
                    m_TreasureTitle.SetSprite("XT_FB_45");
                    m_Left.image.SetSprite("XT_FB_33");
                    m_Right.image.SetSprite("XT_FB_34");
                    WindowCenter.Instance.Open<TreasureLevelUpWin>();
                    break;
                case TreasureCategory.Demon:
                    m_TreasureTitle.SetSprite("XT_FB_46");
                    m_Left.image.SetSprite("XT_FB_35");
                    m_Right.image.SetSprite("XT_FB_36");
                    WindowCenter.Instance.Open<DemonTreasureWin>();
                    break;
                case TreasureCategory.Fairy:
                    m_TreasureTitle.SetSprite("XT_FB_47");
                    m_Left.image.SetSprite("XT_FB_33");
                    m_Right.image.SetSprite("XT_FB_34");
                    WindowCenter.Instance.Open<FairyTreasureWin>();
                    break;
            }
            DisplaySelects();
        }
        private void DisplaySelects()
        {
            var leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure + 1);
            m_Right.gameObject.SetActive(leftRifht != null);
            leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure - 1);
            m_Left.gameObject.SetActive(leftRifht != null);
        }
        private void OnCameraBackComplete()
        {
            backToSelectWindow = true;
            CloseImmediately();
        }
        private void OnDragComplete(int result)
        {
            if (result > 0)
            {
                Right();
            }
            else if (result < 0)
            {
                Left();
            }
        }
        private void Left()
        {
            var selectTreasure = model.selectedTreasure - 1;
            if (!AllowSelectTreasure(selectTreasure))
            {
                return;
            }
            if (prepareSelectTreasure != null)
            {
                prepareSelectTreasure(selectTreasure);
            }
            model.selectedTreasure = selectTreasure;
        }
        private void Right()
        {
            var selectTreasure = model.selectedTreasure + 1;
            if (!AllowSelectTreasure(selectTreasure))
            {
                return;
            }
            if (prepareSelectTreasure != null)
            {
                prepareSelectTreasure(selectTreasure);
            }
            model.selectedTreasure = selectTreasure;
        }
        private void Back()
        {
            var returnCode = 0;
            if (allowBack != null)
            {
                returnCode = allowBack();
            }
            if (returnCode != 0)
            {
                return;
            }
            if (PlayerDatas.Instance.baseData.LV < model.treasureBackLvLimit
                            && !WindowJumpMgr.Instance.IsJumpState)
            {
                StartBack();
                return;
            }
            if (!WindowJumpMgr.Instance.IsJumpState && model.openFromTreasureList)
            {
                StartBack();
                return;
            }
            if (!WindowJumpMgr.Instance.IsJumpState && model.exitRecord >= 4)
            {
                StartBack();
                model.exitRecord = 0;
                return;
            }
            model.openFromTreasureList = false;
            CloseImmediately();
            if (!WindowJumpMgr.Instance.IsJumpState)
            {
                model.exitRecord++;
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        void StartBack()
        {
            if (prepareBack != null)
            {
                prepareBack();
            }
            model.openFromTreasureList = false;
            CloseSubWindows();
            m_DisplayContainer.gameObject.SetActive(false);
            WindowCenter.Instance.Open<TreasureSelectWin>(true);
            UI3DTreasureSelectStage.Instance.StartBack();
        }
        private bool AllowSelectTreasure(int treasureId)
        {
            Treasure treasure;
            if (!model.TryGetTreasure(treasureId, out treasure))
            {
                return false;
            }
            if (allowSelectTreasure != null && !allowSelectTreasure(treasureId))
            {
                return false;
            }
            return true;
        }
        private void CloseSubWindows()
        {
            var childrens = WindowConfig.Get().FindChildWindows("TreasureBaseWin");
            foreach (var window in childrens)
            {
                WindowCenter.Instance.Close(window);
            }
        }
    }
}
System/Treasure/TreasureBaseWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8caae764204324b49a5cdc5ee43c33c4
timeCreated: 1542077271
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/TreasureCollectBriefInfoBehaviour.cs
@@ -384,7 +384,7 @@
                model.selectedTreasure = displayTreasureId;
                model.currentCategory = (TreasureCategory)config.Category;
                model.openFromTreasureCollect = true;
                WindowCenter.Instance.Open<TreasureLevelUpWin>();
                WindowCenter.Instance.Open<TreasureBaseWin>();
            }
        }
System/Treasure/TreasureDemonBehaviour.cs
@@ -9,6 +9,7 @@
{
    public class TreasureDemonBehaviour : MonoBehaviour
    {
        [SerializeField] Image m_TreasureNameIcon;
        [SerializeField] Text m_TreasureDescription;
        [SerializeField] RectTransform m_ContainerFightPower;
        [SerializeField] Text m_FightPower;
@@ -24,6 +25,7 @@
        [SerializeField] PositionTween m_DescriptionTween;
        [SerializeField] PositionTween m_SkillTween;
        [SerializeField] PositionTween m_NameTween;
        TreasureModel m_Model;
        TreasureModel model
@@ -74,11 +76,13 @@
                m_SkillTween.SetStartState();
                m_DescriptionTween.Play();
                m_SkillTween.Play();
                m_NameTween.Play();
            }
            else
            {
                m_DescriptionTween.SetEndState();
                m_SkillTween.SetEndState();
                m_NameTween.SetEndState();
            }
            var config = Config.Instance.Get<TreasureConfig>(_id);
@@ -91,6 +95,7 @@
            m_GetBtn.gameObject.SetActive(m_Treasure.state == TreasureState.Collecting);
            m_RecommondPower.gameObject.SetActive(m_Treasure.state != TreasureState.Collected);
            m_ContainerFightPower.gameObject.SetActive(m_Treasure.state == TreasureState.Collected);
            m_TreasureNameIcon.SetSprite(config.TreasureNameIcon);
            if (m_Treasure.state == TreasureState.Locked)
            {
System/Treasure/TreasureExhibitionBehaviour.cs
@@ -58,7 +58,7 @@
            {
                return;
            }
            if (_window is TreasureSelectWin || _window is TreasureLevelUpWin)
            if (_window is TreasureSelectWin || _window is TreasureBaseWin)
            {
                if (!m_NewTreasureEffect.IsPlaying)
                {
System/Treasure/TreasureLevelUpWin.cs
@@ -17,8 +17,6 @@
    {
        [SerializeField] TreasureAnimation m_TreasureAnimation;
        [SerializeField] RectTransform m_DisplayContainer;
        [SerializeField] Image m_TreasureTitle;
        [SerializeField] DragSelectComponent m_DragSelect;
        [SerializeField] RectTransform m_ContainerUnGet;
        [SerializeField] RectTransform m_ContainerLockDetail;
@@ -54,16 +52,6 @@
        [SerializeField] RectTransform m_ContainerPotential;
        [SerializeField] TreasurePotentialPanel m_TreasurePotential;
        [SerializeField] TreasureDemonBehaviour m_TreasureDemonBehaviour;
        [SerializeField] FairyTreasureCollectPanel m_TreasureFairyBehaviour;
        [SerializeField] RectTransform m_ContainerSelect;
        [SerializeField] Image m_LeftRedpoint;
        [SerializeField] Image m_RightRedpoint;
        [SerializeField] Button m_LeftBtn;
        [SerializeField] Button m_RightBtn;
        [SerializeField] Button m_BackBtn;
        TreasureModel m_Model;
        TreasureModel model
        {
@@ -95,9 +83,7 @@
        Treasure m_Treasure;
        bool m_CorrectClose = false;
        bool m_OnLevelUpStage = false;
        bool m_Init = false;
        bool m_NewBieGuide = false;
        int mainTaskId = 0;
@@ -118,44 +104,29 @@
        protected override void AddListeners()
        {
            m_BackBtn.onClick.AddListener(OnBack);
            m_GetTreasureBtn.onClick.AddListener(OnGetTreasure);
            m_LevelUpBtn.onClick.AddListener(OnLevelUp);
            m_LeftBtn.onClick.AddListener(OnLeftBtn);
            m_RightBtn.onClick.AddListener(OnRightBtn);
            m_Controller.OnRefreshCell += OnRefreshCell;
        }
        protected override void OnPreOpen()
        {
            m_Init = false;
            if (UI3DTreasureSelectStage.Instance.IsOpen)
            {
                if (UI3DTreasureSelectStage.Instance.jumpTreasure != 0)
                {
                    model.selectedTreasure = UI3DTreasureSelectStage.Instance.jumpTreasure;
                }
                else
                {
                    model.selectedTreasure = UI3DTreasureSelectStage.Instance.selectTreasure;
                }
            }
            m_DisplayContainer.gameObject.SetActive(false);
            m_DisplayContainer.gameObject.SetActive(true);
            m_ContainerSkillShow.gameObject.SetActive(false);
            m_ContainerTip.gameObject.SetActive(false);
            m_CorrectClose = false;
            m_OnLevelUpStage = false;
            m_NewBieGuide = false;
            model.treasureStepUpShow = false;
            m_TreasureAnimation.stepComplete = true;
            beforePlayerLv = PlayerDatas.Instance.baseData.LV;
            model.SetTreasureUnlockShow(TreasureCategory.Human, 0);
        }
        protected override void OnAfterOpen()
        protected override void OnActived()
        {
            UI3DTreasureSelectStage.Instance.OnCameraCloserComplete += OnCameraCloserComplete;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete += OnCameraBackComplete;
            base.OnActived();
            PlayerTaskDatas.CardLevelChange += CardLevelChange;
            model.treasureLevelProgressUpdateEvent += TreasureLevelProgressUpdateEvent;
            model.treasureSelectedEvent += TreasureSelectedEvent;
@@ -169,39 +140,23 @@
            m_Slider.slider.onValueChanged.AddListener(OnSliderValueUpdate);
            NewBieCenter.Instance.guideCompletedEvent += GuideCompletedEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            model.skillLevelUpRedpointUpdate += SkillLevelUpRedpointUpdate;
            m_DragSelect.onDragComplete += onDragComplete;
            CameraManager.uiCamera.enabled = true;
            if (!UI3DTreasureSelectStage.Instance.IsOpen)
            {
                UI3DTreasureSelectStage.Instance.Open(true, model.currentCategory);
                var _list = model.GetTreasureCategory(model.currentCategory);
                var _index = _list.FindIndex((x) =>
                {
                    return x == model.selectedTreasure;
                });
                UI3DTreasureSelectStage.Instance.GotoImmediatly(_index);
                OnCameraCloserComplete();
            }
            else if (UI3DTreasureSelectStage.Instance.CloserComplete && !m_Init)
            {
                OnCameraCloserComplete();
            }
            model.treasureStateChangeEvent += TreasureStateChangeEvent;
            TreasureBaseWin.allowSelectTreasure += AllowSelectTreasure;
            TreasureBaseWin.prepareSelectTreasure += PrepareSelectTreasure;
            TreasureBaseWin.allowBack += AllowBack;
            TreasureBaseWin.prepareBack += PrepareBack;
            mainTaskId = 0;
            Display();
        }
        protected override void OnActived()
        protected override void OnAfterOpen()
        {
            base.OnActived();
        }
        protected override void OnPreClose()
        {
            UI3DTreasureSelectStage.Instance.OnCameraCloserComplete -= OnCameraCloserComplete;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete -= OnCameraBackComplete;
            model.treasureLevelProgressUpdateEvent -= TreasureLevelProgressUpdateEvent;
            PlayerTaskDatas.CardLevelChange -= CardLevelChange;
            model.treasureSelectedEvent -= TreasureSelectedEvent;
@@ -215,19 +170,16 @@
            NewBieCenter.Instance.guideCompletedEvent -= GuideCompletedEvent;
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            m_DragSelect.onDragComplete -= onDragComplete;
            model.skillLevelUpRedpointUpdate -= SkillLevelUpRedpointUpdate;
            TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure;
            TreasureBaseWin.prepareSelectTreasure -= PrepareSelectTreasure;
            TreasureBaseWin.allowBack -= AllowBack;
            TreasureBaseWin.prepareBack -= PrepareBack;
            m_Slider.slider.onValueChanged.RemoveAllListeners();
            m_TreasurePotential.Dispose();
            m_AchievementScroll.Dispose();
            m_TreasureFairyBehaviour.Dispose();
            if (FunctionalGuideCenter.Instance.ExistUnderwayGuide(65))
            {
                FunctionalGuideCenter.Instance.RemoveGuide(65);
            }
            if (!m_CorrectClose)
            {
                UI3DTreasureSelectStage.Instance.Close();
            }
            if (m_TreasureAnimation.step == TreasureAnimation.TreasureShowStep.FirstUnLock)
            {
@@ -260,32 +212,11 @@
            if (_id == model.selectedTreasure && _treasure != null
                && _treasure.state == TreasureState.Collecting && model.serverInited)
            {
                UpdateStage();
                if (WindowCenter.Instance.IsOpen<EffectToFaBaoWin>())
                {
                    WindowCenter.Instance.CloseImmediately<EffectToFaBaoWin>();
                }
                Display();
            }
        }
        private void OnCameraCloserComplete()
        {
            m_Init = true;
            m_DisplayContainer.gameObject.SetActive(true);
            UpdateStage();
            if (WindowCenter.Instance.IsOpen<EffectToFaBaoWin>())
            {
                WindowCenter.Instance.CloseImmediately<EffectToFaBaoWin>();
            }
        }
        private void OnCameraBackComplete()
        {
            m_CorrectClose = true;
            CloseImmediately();
        }
        private void UpdateStage(int _state = 0)
        private void Display(int _state = 0)
        {
            m_TreasureAnimation.selectTreasureId = model.selectedTreasure;
            model.TryGetTreasure(model.selectedTreasure, out m_Treasure);
@@ -294,71 +225,9 @@
            model.cacheGotAchievements.Clear();
            var _config = Config.Instance.Get<TreasureConfig>(m_Treasure.id);
            m_TreasureProperty.treasureNameTween.SetEndState();
            switch (model.currentCategory)
            {
                case TreasureCategory.Human:
                    beforePlayerLv = PlayerDatas.Instance.baseData.LV;
                    m_TreasureDemonBehaviour.gameObject.SetActive(false);
                    m_TreasureFairyBehaviour.gameObject.SetActive(false);
                    model.treasureStepUpShow = false;
                    SelectHumanTreasure(_state);
                    m_TreasureTitle.SetSprite("XT_FB_45");
                    m_LeftBtn.image.SetSprite("XT_FB_33");
                    m_RightBtn.image.SetSprite("XT_FB_34");
                    break;
                case TreasureCategory.Demon:
                    HideHuman();
                    m_TreasureAnimation.SetDisplayEnd();
                    m_TreasureAnimation.TreasureTween();
                    m_TreasureAnimation.stepComplete = true;
                    model.treasureStepUpShow = false;
                    m_TreasureProperty.containerName.gameObject.SetActive(true);
                    m_TreasureDemonBehaviour.gameObject.SetActive(true);
                    m_TreasureFairyBehaviour.gameObject.SetActive(false);
                    m_TreasureDemonBehaviour.Display(m_Treasure.id, _state == 0);
                    if (_state == 0)
                    {
                        m_TreasureProperty.treasureNameTween.Play();
                    }
                    m_TreasureTitle.SetSprite("XT_FB_46");
                    m_LeftBtn.image.SetSprite("XT_FB_35");
                    m_RightBtn.image.SetSprite("XT_FB_36");
                    break;
                case TreasureCategory.Fairy:
                    HideHuman();
                    m_TreasureAnimation.SetDisplayEnd();
                    m_TreasureAnimation.TreasureTween();
                    m_TreasureAnimation.stepComplete = true;
                    model.treasureStepUpShow = false;
                    m_TreasureDemonBehaviour.gameObject.SetActive(false);
                    m_TreasureProperty.containerName.gameObject.SetActive(true);
                    m_TreasureFairyBehaviour.gameObject.SetActive(true);
                    m_TreasureFairyBehaviour.Dispose();
                    m_TreasureFairyBehaviour.Display(m_Treasure.id, _state == 0);
                    if (_state == 0)
                    {
                        m_TreasureProperty.treasureNameTween.Play();
                    }
                    m_TreasureTitle.SetSprite("XT_FB_47");
                    m_LeftBtn.image.SetSprite("XT_FB_33");
                    m_RightBtn.image.SetSprite("XT_FB_34");
                    break;
            }
            var _leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure + 1);
            m_RightBtn.gameObject.SetActive(_leftRifht != null);
            _leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure - 1);
            m_LeftBtn.gameObject.SetActive(_leftRifht != null);
            var skillLevelUpRedpointTreasure = model.GetSkillLevelUpRedpointTreasure();
            m_LeftRedpoint.gameObject.SetActive(false);
            m_RightRedpoint.gameObject.SetActive(false);
        }
        private void HideHuman()
        {
            m_ContainerUnGet.gameObject.SetActive(false);
            m_ContainerPotential.gameObject.SetActive(false);
            m_ContainerLevelUp.gameObject.SetActive(false);
            beforePlayerLv = PlayerDatas.Instance.baseData.LV;
            model.treasureStepUpShow = false;
            SelectHumanTreasure(_state);
        }
        private void SelectHumanTreasure(int _state = 0)
@@ -434,7 +303,7 @@
                            && FuncOpen.Instance.IsFuncOpen(82) && !model.GetSpAnim(m_Treasure.id))
                        {
                            m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
                            UpdateStage(2);
                            Display(2);
                            return;
                        }
                    }
@@ -451,7 +320,7 @@
                    && !model.GetSpAnim(m_Treasure.id))
                {
                    m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
                    UpdateStage(2);
                    Display(2);
                }
            }
        }
@@ -519,68 +388,11 @@
        private void TreasureSelectedEvent(int _id)
        {
            if (!m_TreasureAnimation.stepComplete)
            {
                return;
            }
            var _list = model.GetTreasureCategory(model.currentCategory);
            var _index = _list.FindIndex((x) =>
            {
                return x == _id;
            });
            if (_index != -1)
            {
                m_OnLevelUpStage = false;
                UI3DTreasureSelectStage.Instance.GotoImmediatly(_index);
                UpdateStage(1);
            }
            Display(1);
        }
        private void onDragComplete(int _value)
        private bool AllowSelectTreasure(int treasureId)
        {
            if (_value > 0)
            {
                OnRightBtn();
            }
            else if (_value < 0)
            {
                OnLeftBtn();
            }
        }
        private void OnLeftBtn()
        {
            if (CheckSelectTreasureFunc(model.selectedTreasure - 1))
            {
                model.openFromTaskId = 0;
                if (FunctionalGuideCenter.Instance.ExistUnderwayGuide(65))
                {
                    FunctionalGuideCenter.Instance.RemoveGuide(65);
                }
                model.selectedTreasure = model.selectedTreasure - 1;
            }
        }
        private void OnRightBtn()
        {
            if (CheckSelectTreasureFunc(model.selectedTreasure + 1))
            {
                model.openFromTaskId = 0;
                if (FunctionalGuideCenter.Instance.ExistUnderwayGuide(65))
                {
                    FunctionalGuideCenter.Instance.RemoveGuide(65);
                }
                model.selectedTreasure = model.selectedTreasure + 1;
            }
        }
        private bool CheckSelectTreasureFunc(int _id)
        {
            Treasure _treasure;
            if (!model.TryGetTreasure(_id, out _treasure))
            {
                return false;
            }
            if (model.TreasureStageUpLimit(model.selectedTreasure))
            {
                return false;
@@ -588,49 +400,31 @@
            return m_TreasureAnimation.stepComplete && !model.treasureStepUpShow && !m_NewBieGuide;
        }
        private void OnBack()
        private void PrepareSelectTreasure(int treasureId)
        {
            if (!m_TreasureAnimation.stepComplete || model.treasureStepUpShow || m_NewBieGuide)
            model.openFromTaskId = 0;
            if (FunctionalGuideCenter.Instance.ExistUnderwayGuide(65))
            {
                return;
            }
            if (model.TreasureStageUpLimit(model.selectedTreasure))
            {
                return;
            }
            if (PlayerDatas.Instance.baseData.LV < model.treasureBackLvLimit
                && !WindowJumpMgr.Instance.IsJumpState)
            {
                StartBack();
                return;
            }
            if (!WindowJumpMgr.Instance.IsJumpState && model.openFromTreasureList)
            {
                StartBack();
                return;
            }
            if (!WindowJumpMgr.Instance.IsJumpState && model.exitRecord >= 4)
            {
                StartBack();
                model.exitRecord = 0;
                return;
            }
            model.openFromTreasureList = false;
            CloseImmediately();
            if (!WindowJumpMgr.Instance.IsJumpState)
            {
                model.exitRecord++;
                WindowCenter.Instance.Open<MainInterfaceWin>();
                FunctionalGuideCenter.Instance.RemoveGuide(65);
            }
        }
        void StartBack()
        private int AllowBack()
        {
            if (!m_TreasureAnimation.stepComplete || model.treasureStepUpShow || m_NewBieGuide)
            {
                return 1;
            }
            if (model.TreasureStageUpLimit(model.selectedTreasure))
            {
                return 1;
            }
            return 0;
        }
        private void PrepareBack()
        {
            model.SetTreasureUnlockShow(TreasureCategory.Human, 0);
            model.openFromTreasureList = false;
            m_DisplayContainer.gameObject.SetActive(false);
            WindowCenter.Instance.Open<TreasureSelectWin>(true);
            UI3DTreasureSelectStage.Instance.StartBack();
        }
        private void OnGetTreasure()
@@ -750,7 +544,7 @@
        private void AchievementCompletedEvent(int _id)
        {
            var config = Config.Instance.Get<TreasureConfig>(model.selectedTreasure);
            if (!m_Init || config == null || (TreasureCategory)config.Category != TreasureCategory.Human
            if (config == null || (TreasureCategory)config.Category != TreasureCategory.Human
                || m_Treasure.state != TreasureState.Collected || m_Treasure.IsHighestStage)
            {
                return;
@@ -836,7 +630,7 @@
                    else if (FuncOpen.Instance.IsFuncOpen(82) && !model.GetSpAnim(m_Treasure.id))
                    {
                        m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
                        UpdateStage(2);
                        Display(2);
                    }
                    break;
                case TreasureAnimation.TreasureShowStep.FirstUnLock:
@@ -864,13 +658,13 @@
                if (m_Treasure.IsHighestStage && FuncOpen.Instance.IsFuncOpen(82))
                {
                    m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
                    UpdateStage(2);
                    Display(2);
                }
                else
                {
                    if (mainTaskId != 0)
                    {
                        CloseImmediately();
                        WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        task.AutomaticTripToTask(mainTaskId);
                    }
@@ -995,8 +789,8 @@
                    break;
                case TreasureStageUnlock.Treasure:
                    WindowJumpMgr.Instance.ClearJumpData();
                    WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                    WindowCenter.Instance.Open<MainInterfaceWin>();
                    CloseImmediately();
                    break;
                case TreasureStageUnlock.TreasureSoul:
                    TreasureSoulActiveWin.treasureSoulId = stage.treasureSoul;
@@ -1019,7 +813,7 @@
            {
                TreasureStageUpTriggerWin.screenShotCut = _tex;
                WindowJumpMgr.Instance.ClearJumpData();
                CloseImmediately();
                WindowCenter.Instance.CloseImmediately<TreasureBaseWin>();
                WindowCenter.Instance.Open<TreasureStageUpTriggerWin>(true);
                WindowCenter.Instance.Open<MainInterfaceWin>();
                if (WindowCenter.Instance.IsOpen<DialogueDuidanceWin>())
@@ -1218,13 +1012,6 @@
            }
        }
        private void SkillLevelUpRedpointUpdate()
        {
            var skillLevelUpRedpointTreasure = model.GetSkillLevelUpRedpointTreasure();
            m_LeftRedpoint.gameObject.SetActive(false);
            m_RightRedpoint.gameObject.SetActive(false);
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
@@ -1251,7 +1038,7 @@
        public void PreviewAnimation()
        {
            m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
            UpdateStage(2);
            Display(2);
        }
        [ContextMenu("测试功能开启")]
System/Treasure/TreasureSelectWin.cs
@@ -169,7 +169,7 @@
            WindowJumpMgr.Instance.ClearJumpData();
            m_CorrectClose = true;
            CameraManager.uiCamera.enabled = false;
            WindowCenter.Instance.Open<TreasureLevelUpWin>();
            WindowCenter.Instance.Open<TreasureBaseWin>();
            CloseImmediately();
        }
System/Treasure/UI3DTreasureSelectStage.cs
@@ -426,6 +426,7 @@
            {
                StopCoroutine(preloadCoroutine);
                preloadCoroutine = null;
                Preloading = false;
            }
            if (!m_PreloadDict.ContainsKey(currentCategory) && !_closer)
System/WindowJump/WindowJumpMgr.cs
@@ -503,7 +503,7 @@
                SetJumpLogic<TreasureSoulWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.TreasureCollectSoul:
                SetJumpLogic<TreasureLevelUpWin>(0);
                SetJumpLogic<TreasureBaseWin>(0);
                break;
            case JumpUIType.Kylin:
                dungeonModel.currentDungeon = new Dungeon(31190, 0);
@@ -617,7 +617,7 @@
            case JumpUIType.LLBT:
                treasureModel.currentCategory = TreasureCategory.Fairy;
                treasureModel.selectedTreasure = int.Parse(_tagWinSearchModel.SelectActive);
                SetJumpLogic<TreasureLevelUpWin>(_tagWinSearchModel.TABID);
                SetJumpLogic<TreasureBaseWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.FYZJTyp1:
            case JumpUIType.FYZJTyp2:
@@ -625,7 +625,7 @@
            case JumpUIType.SHLTyp2:
                treasureModel.currentCategory = TreasureCategory.Demon;
                treasureModel.selectedTreasure = int.Parse(_tagWinSearchModel.SelectActive);
                SetJumpLogic<TreasureLevelUpWin>(_tagWinSearchModel.TABID);
                SetJumpLogic<TreasureBaseWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.DhszTs:
@@ -640,7 +640,7 @@
            case JumpUIType.StfTs:
                treasureModel.currentCategory = TreasureCategory.Human;
                treasureModel.selectedTreasure = int.Parse(_tagWinSearchModel.SelectActive);
                SetJumpLogic<TreasureLevelUpWin>(_tagWinSearchModel.TABID);
                SetJumpLogic<TreasureBaseWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.FirstRecharge:
                SetJumpLogic<FirstRechargeWin>(_tagWinSearchModel.TABID, true);
System/WorldMap/LocalMapTreasure.cs
@@ -55,7 +55,7 @@
            model.selectedTreasure = treasureId;
            model.currentCategory = TreasureCategory.Human;
            WindowCenter.Instance.Open<TreasureLevelUpWin>();
            WindowCenter.Instance.Open<TreasureBaseWin>();
        }
    }