少年修仙传客户端代码仓库
client_linchunjie
2019-05-05 2126c05d9132ac974adcb49b87cc789655cf58fd
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
7个文件已修改
2 文件已重命名
4个文件已添加
2061 ■■■■ 已修改文件
System/DailyQuest/DailyQuestBehaviour.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestGroup.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestModel.cs 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestWin.cs 516 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DayQuestDetailsWin.cs 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DayQuestDetailsWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/ResourcesBackModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/ResourcesBackWin.cs 941 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/ResourcesBackWin.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/TimeLimitQuestWin.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/TimeLimitQuestWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/OneLevelWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/WindowConfig.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestBehaviour.cs
@@ -37,7 +37,6 @@
        AchievementGuideEffect m_AchievementEffect;
        DailyQuestData data;
        DailyQuestWin dailyQuestWin;
        DailyQuestConfig dailyQuestConfig;
        DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
@@ -46,10 +45,9 @@
        DailyQuestModel.DailyQuestState state = DailyQuestModel.DailyQuestState.Normal;
        public void Init(DailyQuestData _data, DailyQuestWin _dailyQuestWin)
        public void Init(DailyQuestData _data)
        {
            data = _data;
            dailyQuestWin = _dailyQuestWin;
            if (data == null || data.id <= 0)
            {
@@ -128,10 +126,10 @@
                    switch ((DailyQuestType)data.id)
                    {
                        case DailyQuestType.RuneTowerSweep:
                            dailyQuestWin.GotoDailyQuest(data.id);
                            model.GotoDailyQuest(data.id);
                            break;
                        case DailyQuestType.HazyRegion:
                            dailyQuestWin.GotoDailyQuest(data.id);
                            model.GotoDailyQuest(data.id);
                            break;
                        default:
                            var config = DailyQuestConfig.Get(data.id);
@@ -142,7 +140,7 @@
                }
                else
                {
                    dailyQuestWin.GotoDailyQuest(data.id);
                    model.GotoDailyQuest(data.id);
                }
            }
        }
@@ -258,7 +256,7 @@
                    else
                    {
                        m_AssistPoint.text = string.Empty;
                        if((DailyQuestType)data.id == DailyQuestType.DungeonAssist)
                        if ((DailyQuestType)data.id == DailyQuestType.DungeonAssist)
                        {
                            m_Complete.gameObject.SetActive(false);
                            m_Goto.gameObject.SetActive(true);
@@ -365,7 +363,7 @@
                m_AchievementEffect = null;
            }
            if (dailyQuestWin.guidingDailyQuestId == this.data.id)
            if (model.currentDailyQuest == this.data.id)
            {
                m_AchievementEffect = AchievementGuideEffectPool.Require(5);
                m_AchievementEffect.transform.SetParentEx(this.transform, Vector3.zero, Vector3.zero, Vector3.one);
System/DailyQuest/DailyQuestGroup.cs
@@ -26,7 +26,7 @@
            if (groupData.data1 != null && groupData.data1.id > 0)
            {
                m_DailyQuestBehaviour1.gameObject.SetActive(true);
                m_DailyQuestBehaviour1.Init(groupData.data1, groupData.dailyQuestWin);
                m_DailyQuestBehaviour1.Init(groupData.data1);
            }
            else
            {
@@ -36,7 +36,7 @@
            if (groupData.data2 != null && groupData.data2.id > 0)
            {
                m_DailyQuestBehaviour2.gameObject.SetActive(true);
                m_DailyQuestBehaviour2.Init(groupData.data2, groupData.dailyQuestWin);
                m_DailyQuestBehaviour2.Init(groupData.data2);
            }
            else
            {
@@ -56,13 +56,11 @@
        {
            public DailyQuestData data1;
            public DailyQuestData data2;
            public DailyQuestWin dailyQuestWin;
            public GroupData(DailyQuestData _data1, DailyQuestData _data2, DailyQuestWin _window)
            public GroupData(DailyQuestData _data1, DailyQuestData _data2)
            {
                this.data1 = _data1;
                this.data2 = _data2;
                this.dailyQuestWin = _window;
            }
        }
System/DailyQuest/DailyQuestModel.cs
@@ -17,7 +17,6 @@
        const int EVERYDAY_REDPOINTID = 78001;
        const int TIMELIMIT_REDPOINTID = 78002;
        const int ACTIVEVALUE_REDPOINT = 78004;
        const int REALMPOINT_REPOINT = 78005;
        const int DAILYQUEST_REDPOINTIDBASE = 78100;
        const int TRIALEXCHANGE_REDPOINTID = 78006;
@@ -25,7 +24,6 @@
        public Redpoint everyDayRedpoint = new Redpoint(DAILYQUEST_REDPOINTID, EVERYDAY_REDPOINTID);
        public Redpoint timeLimitRedpoint = new Redpoint(DAILYQUEST_REDPOINTID, TIMELIMIT_REDPOINTID);
        Redpoint activeValueRedpoint = new Redpoint(EVERYDAY_REDPOINTID, ACTIVEVALUE_REDPOINT);
        Redpoint realmPointRedpoint = new Redpoint(EVERYDAY_REDPOINTID, REALMPOINT_REPOINT);
        int m_DailyQuestTotalActiveValue = 150;
        public int dailyQuestTotalActiveValue {
@@ -60,6 +58,23 @@
            }
        }
        DailyQuestCategory m_Category;
        public DailyQuestCategory category {
            get {
                return m_Category;
            }
            set {
                if (m_Category != value)
                {
                    m_Category = value;
                    if (categoryChangeEvent != null)
                    {
                        categoryChangeEvent();
                    }
                }
            }
        }
        Dictionary<int, DailyQuestData> dailyQuests = new Dictionary<int, DailyQuestData>();
        Dictionary<int, int> dungeonToDailyQuestTable = new Dictionary<int, int>();
        Dictionary<int, int> dailyActionToDailyQuestTable = new Dictionary<int, int>();
@@ -72,9 +87,13 @@
        FairyLeagueModel fairyLeagueModel { get { return ModelCenter.Instance.GetModel<FairyLeagueModel>(); } }
        FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
        AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        public event Action<int> activeValueRewardGotEvent;
        public event Action<int> dailyQuestProgressUpdateEvent;
        public event Action currentActiveValueUpdateEvent;
        public event Action categoryChangeEvent;
        public override void Init()
        {
@@ -1009,6 +1028,360 @@
            return description;
        }
        public void GotoDailyQuest(int _id)
        {
            switch ((DailyQuestType)_id)
            {
                case DailyQuestType.FairyLand:
                    GotoNormalDungeon(_id);
                    break;
                case DailyQuestType.IceCrystal:
                    WindowCenter.Instance.Open<IceCrystalVeinWin>();
                    break;
                case DailyQuestType.GuardSky:
                    var _fairyModel = ModelCenter.Instance.GetModel<FairyModel>();
                    if (!_fairyModel.SatisfyGuardSkyFairyLv())
                    {
                        SysNotifyMgr.Instance.ShowTip("GuardSkyOpenLvError", _fairyModel.guardSkyOpenFairyLv);
                        break;
                    }
                    if (_fairyModel.completeGuardSky)
                    {
                        SysNotifyMgr.Instance.ShowTip("TheEmperor1");
                        break;
                    }
                    GotoNormalDungeon(_id);
                    break;
                case DailyQuestType.Kirin:
                    GotoMultipleDifficultyDungeon(_id);
                    break;
                case DailyQuestType.BountyMission:
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.BountyInterface);
                    break;
                case DailyQuestType.Demon:
                    GotoChaosDemon(_id);
                    break;
                case DailyQuestType.Trial:
                    GotoTrial();
                    break;
                case DailyQuestType.BlastStove:
                    GotoBlastStove();
                    break;
                case DailyQuestType.AncientBattleGround:
                    GotoNormalDungeon(_id, dungeonModel.GetBelongToLine(_id));
                    break;
                case DailyQuestType.EmperorRelic:
                    GotoNuwa();
                    break;
                case DailyQuestType.WyTaiChi:
                    GotoTaiChiDungeon(_id);
                    break;
                case DailyQuestType.HeavenBattle:
                    GotoHeavenBattleDungeon(_id);
                    break;
                case DailyQuestType.Prayer:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<WelfareWin>(false, 1);
                    WindowCenter.Instance.Close<MainInterfaceWin>();
                    break;
                case DailyQuestType.WorldBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>();
                    break;
                case DailyQuestType.DemonJar:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>();
                    break;
                case DailyQuestType.FairyTask:
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.UnionTask);
                    break;
                case DailyQuestType.FairyLeague:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<UnionPanel>(false, 4);
                    break;
                case DailyQuestType.FairyFeast:
                    if (CrossServerUtility.IsCrossServer())
                    {
                        SysNotifyMgr.Instance.ShowTip("CrossMap10");
                        break;
                    }
                    var config = DailyQuestConfig.Get(_id);
                    dungeonModel.SingleChallenge(config.RelatedID);
                    break;
                case DailyQuestType.RuneTowerSweep:
                    RuneTowerWin.guideSweep = true;
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<TowerWin>(false, 0);
                    break;
                case DailyQuestType.BossHome:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.PersonalBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 2);
                    break;
                case DailyQuestType.ElderGodArea:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 4);
                    break;
                case DailyQuestType.RuneTower:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<TowerWin>(false, 0);
                    break;
                case DailyQuestType.TreasureCollectSoul:
                    GotoTreasureCollectSoul();
                    break;
                case DailyQuestType.DungeonAssist:
                    WindowCenter.Instance.Open<DungeonAssistWin>();
                    break;
                case DailyQuestType.FairyGrabBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.KillMonster:
                    var point = mapModel.GetRecommendHangPoint();
                    var mapEventConfig = MapEventPointConfig.Get(point);
                    mapModel.wannaLookLocalMap = mapEventConfig.MapID;
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LocalMapWin>();
                    break;
                case DailyQuestType.GatherSoulDungeon:
                    GotoNormalDungeon(_id, 0);
                    break;
                case DailyQuestType.CrossServerPk:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>(false, 1);
                    break;
                case DailyQuestType.AllianceBoss:
                    GotoAllianceBoss(_id, 0);
                    break;
                case DailyQuestType.RidingPetActivity:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.HazyRegion:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>(false, 0);
                    break;
                default:
                    CSharpCallLua.GotoLuaDailyQuest(_id);
                    break;
            }
            WindowJumpMgr.Instance.ClearJumpData();
        }
        private void GotoTaiChiDungeon(int _dailyQuestId, int _lineId = 0)
        {
            if (VersionConfig.Get().isBanShu)
            {
                return;
            }
            var config = DailyQuestConfig.Get(_dailyQuestId);
            currentDailyQuest = config.ID;
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<TaiChilDungeonEntranceWin>();
        }
        private void GotoHeavenBattleDungeon(int _dailyQuestId, int _lineId = 0)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<HeavenBattleWin>();
        }
        private void GotoNormalDungeon(int _dailyQuestId, int _lineId = 0)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<NormalDungeonEntranceWin>();
        }
        private void GotoMultipleDifficultyDungeon(int _dailyQuestId)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
            dungeonModel.selectedKylinDungeon = default(Dungeon);
            WindowCenter.Instance.Open<MultipleDifficultyDungeonWin>();
        }
        private void GotoChaosDemon(int _dailyQuestId)
        {
            var completedTimes = GetDailyQuestCompletedTimes(_dailyQuestId);
            var totalTimes = GetDailyQuestTotalTimes(_dailyQuestId);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_DEMON_TIP))
                {
                    GotoNormalDungeon(_dailyQuestId);
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayDungeonComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            GotoNormalDungeon(_dailyQuestId);
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_DEMON_TIP, true);
                        }
                    });
                }
                return;
            }
            GotoNormalDungeon(_dailyQuestId);
        }
        private void GotoNuwa()
        {
            var id = (int)DailyQuestType.EmperorRelic;
            var completedTimes = GetDailyQuestCompletedTimes(id);
            var totalTimes = GetDailyQuestTotalTimes(id);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_RELIC_TIP))
                {
                    GotoNormalDungeon(id);
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayDungeonComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            GotoNormalDungeon(id);
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_RELIC_TIP, true);
                        }
                    });
                }
                return;
            }
            GotoNormalDungeon(id);
        }
        private void GotoTrial()
        {
            var id = (int)DailyQuestType.Trial;
            var config = DailyQuestConfig.Get(id);
            var completedTimes = GetDailyQuestCompletedTimes(id);
            var totalTimes = GetDailyQuestTotalTimes(id);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_TRIAL_TIP))
                {
                    dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
                    WindowCenter.Instance.Open<TrialDungeonSelectWin>();
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayTrialComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
                            WindowCenter.Instance.Open<TrialDungeonSelectWin>();
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_TRIAL_TIP, true);
                        }
                    });
                }
                return;
            }
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
            WindowCenter.Instance.Open<TrialDungeonSelectWin>();
        }
        private void GotoBlastStove()
        {
            WindowCenter.Instance.Close<DailyQuestWin>();
            WindowCenter.Instance.Open<AlchemyBaseWin>();
        }
        private void GotoBountyMission()
        {
            var inDungeon = MapUtility.IsDungeon(PlayerDatas.Instance.baseData.MapID);
            if (inDungeon)
            {
                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
            }
            else
            {
                taskModel.DailyBountyMove();
                WindowCenter.Instance.Close<DailyQuestWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        private void GotoAllianceBoss(int id, int lineId)
        {
            WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
        }
        private void GotoTreasureCollectSoul()
        {
            var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
            var treasures = treasureModel.GetTreasureCategory(TreasureCategory.Human);
            var gotoTreasureId = 0;
            for (int i = treasures.Count - 1; i >= 0; i--)
            {
                if (IsTreasureCollectSoul(treasures[i]))
                {
                    gotoTreasureId = treasures[i];
                    break;
                }
            }
            if (gotoTreasureId == 0)
            {
                for (int i = 0; i < treasures.Count; i++)
                {
                    Treasure treasure;
                    if (treasureModel.TryGetTreasure(treasures[i], out treasure))
                    {
                        if (treasure != null
                            && (treasure.state == TreasureState.Locked || treasure.state == TreasureState.Collecting))
                        {
                            gotoTreasureId = treasure.id;
                            break;
                        }
                    }
                }
            }
            WindowCenter.Instance.Close<DailyQuestWin>();
            if (gotoTreasureId == 0)
            {
                treasureModel.currentCategory = TreasureCategory.Human;
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureFunc1);
            }
            else
            {
                var config = TreasureConfig.Get(gotoTreasureId);
                treasureModel.selectedTreasure = gotoTreasureId;
                treasureModel.currentCategory = (TreasureCategory)config.Category;
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureCollectSoul);
            }
        }
        private bool IsTreasureCollectSoul(int _treasureId)
        {
            return false;
        }
        private void ParseConfig()
        {
            var allConfigs = DailyQuestConfig.GetValues();
System/DailyQuest/DailyQuestWin.cs
@@ -9,84 +9,41 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class DailyQuestWin : Window
    public class DailyQuestWin : OneLevelWin
    {
        [SerializeField] FunctionButtonGroup m_FunctionGroup;
        [SerializeField] FunctionButton m_EveryDaily;
        [SerializeField] FunctionButton m_TimeLimit;
        [SerializeField] FunctionButton m_ResourcesBack;
        [SerializeField] Button m_Left;
        [SerializeField] Button m_Right;
        [SerializeField] ButtonEx m_CloseButton;
        [SerializeField] RectTransform m_DailyQuestContainer;
        [SerializeField] CyclicScroll m_QuestScroll;
        [SerializeField] Button m_Calendar;
        [SerializeField] DailyQuestHangTimeBehaviour m_HangTimeBehaviour;
        [SerializeField] DailyQuestActiveSlider m_DailyQuestActiveSlider;
        [SerializeField] RectTransform m_ResourcesBackContainer;
        DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        public int guidingDailyQuestId = 0;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_CloseButton.AddListener(CloseClick);
            m_Calendar.AddListener(ShowCalendar);
            m_EveryDaily.AddListener(ShowEveryDayQuests);
            m_TimeLimit.AddListener(ShowTimeLimit);
            m_ResourcesBack.AddListener(ShowResourcesBack);
            m_Left.AddListener(ShowLastFunction);
            m_Right.AddListener(ShowNextFunction);
            base.AddListeners();
            SetFunctionListener(0, ShowEveryDayQuests);
            SetFunctionListener(1, ShowTimeLimit);
            SetFunctionListener(2, ShowResourcesBack);
        }
        protected override void OnPreOpen()
        {
            guidingDailyQuestId = model.currentDailyQuest;
        }
        protected override void OnAfterOpen()
        {
            model.currentActiveValueUpdateEvent += OnUpdateCurrentActive;
        }
        protected override void OnPreClose()
        {
            guidingDailyQuestId = 0;
            model.currentDailyQuest = 0;
            m_HangTimeBehaviour.Dispose();
            m_QuestScroll.Dispose();
            model.currentActiveValueUpdateEvent -= OnUpdateCurrentActive;
        }
        protected override void OnAfterClose()
        {
            if (!WindowJumpMgr.Instance.IsJumpState)
            {
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
            base.OnPreClose();
        }
        protected override void OnActived()
        {
            base.OnActived();
            if (guidingDailyQuestId != 0)
            if (model.currentDailyQuest != 0)
            {
                var preferTimeLimit = false;
                var dailyQuests = model.GetDailyQuests();
@@ -106,466 +63,37 @@
                    }
                }
                if (preferTimeLimit)
                {
                    functionOrder = 1;
                }
                functionOrder = preferTimeLimit ? 1 : 0;
            }
            m_FunctionGroup.TriggerByOrder(functionOrder);
            base.OnActived();
        }
        #endregion
        private void ShowEveryDayQuests()
        {
            var dailyQuests = model.GetDailyQuests(DailyQuestModel.DailyQuestCategory.EveryDay);
            m_DailyQuestContainer.gameObject.SetActive(true);
            m_ResourcesBackContainer.gameObject.SetActive(false);
            ShowQuestGroups(dailyQuests);
            functionOrder = m_EveryDaily.order;
            CloseSubWindows();
            model.category = DailyQuestModel.DailyQuestCategory.EveryDay;
            WindowCenter.Instance.Open<DayQuestDetailsWin>();
            functionOrder = 0;
        }
        private void ShowTimeLimit()
        {
            var dailyQuests = model.GetDailyQuests(DailyQuestModel.DailyQuestCategory.TimeLimit);
            m_DailyQuestContainer.gameObject.SetActive(true);
            m_ResourcesBackContainer.gameObject.SetActive(false);
            ShowQuestGroups(dailyQuests);
            functionOrder = m_TimeLimit.order;
            CloseSubWindows();
            model.category = DailyQuestModel.DailyQuestCategory.TimeLimit;
            WindowCenter.Instance.Open<DayQuestDetailsWin>();
            functionOrder = 1;
        }
        private void ShowResourcesBack()
        {
            m_DailyQuestContainer.gameObject.SetActive(false);
            m_ResourcesBackContainer.gameObject.SetActive(true);
            functionOrder = m_ResourcesBack.order;
            CloseSubWindows();
            WindowCenter.Instance.Open<ResourcesBackWin>();
            functionOrder = 2;
        }
        private void ShowLastFunction()
        {
            m_FunctionGroup.TriggerLast();
        }
        private void ShowNextFunction()
        {
            m_FunctionGroup.TriggerNext();
        }
        private void ShowQuestGroups(List<int> _quests)
        {
            m_HangTimeBehaviour.Display();
            m_DailyQuestActiveSlider.Initialize();
            m_DailyQuestActiveSlider.UpdateCurrentActiveValue(model.currentActiveValue, model.dailyQuestTotalActiveValue);
            var groupDatas = new List<DailyQuestGroup.GroupData>();
            var max = _quests.Count;
            for (int i = 0; i < max; i++, i++)
            {
                DailyQuestData data1 = null;
                model.TryGetDailyQuest(_quests[i], out data1);
                DailyQuestData data2 = null;
                if (i + 1 < max)
                {
                    model.TryGetDailyQuest(_quests[i + 1], out data2);
                }
                groupDatas.Add(new DailyQuestGroup.GroupData(data1, data2, this));
            }
            m_QuestScroll.Init(groupDatas);
            var currentQuestIndex = _quests.IndexOf(model.currentDailyQuest);
            if (currentQuestIndex != -1)
            {
                m_QuestScroll.MoveToCenter(currentQuestIndex / 2);
            }
        }
        private void ShowCalendar()
        {
            WindowCenter.Instance.Open<DailyQuestCalendarWin>();
        }
        private void OnUpdateCurrentActive()
        {
            m_DailyQuestActiveSlider.UpdateCurrentActiveValue(model.currentActiveValue, model.dailyQuestTotalActiveValue);
        }
        public void GotoDailyQuest(int _id)
        {
            switch ((DailyQuestType)_id)
            {
                case DailyQuestType.FairyLand:
                    GotoNormalDungeon(_id);
                    break;
                case DailyQuestType.IceCrystal:
                    WindowCenter.Instance.Open<IceCrystalVeinWin>();
                    break;
                case DailyQuestType.GuardSky:
                    var _fairyModel = ModelCenter.Instance.GetModel<FairyModel>();
                    if (!_fairyModel.SatisfyGuardSkyFairyLv())
                    {
                        SysNotifyMgr.Instance.ShowTip("GuardSkyOpenLvError", _fairyModel.guardSkyOpenFairyLv);
                        break;
                    }
                    if (_fairyModel.completeGuardSky)
                    {
                        SysNotifyMgr.Instance.ShowTip("TheEmperor1");
                        break;
                    }
                    GotoNormalDungeon(_id);
                    break;
                case DailyQuestType.Kirin:
                    GotoMultipleDifficultyDungeon(_id);
                    break;
                case DailyQuestType.BountyMission:
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.BountyInterface);
                    break;
                case DailyQuestType.Demon:
                    GotoChaosDemon(_id);
                    break;
                case DailyQuestType.Trial:
                    GotoTrial();
                    break;
                case DailyQuestType.BlastStove:
                    GotoBlastStove();
                    break;
                case DailyQuestType.AncientBattleGround:
                    GotoNormalDungeon(_id, dungeonModel.GetBelongToLine(_id));
                    break;
                case DailyQuestType.EmperorRelic:
                    GotoNuwa();
                    break;
                case DailyQuestType.WyTaiChi:
                    GotoTaiChiDungeon(_id);
                    break;
                case DailyQuestType.HeavenBattle:
                    GotoHeavenBattleDungeon(_id);
                    break;
                case DailyQuestType.Prayer:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<WelfareWin>(false, 1);
                    WindowCenter.Instance.Close<MainInterfaceWin>();
                    break;
                case DailyQuestType.WorldBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>();
                    break;
                case DailyQuestType.DemonJar:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>();
                    break;
                case DailyQuestType.FairyTask:
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.UnionTask);
                    break;
                case DailyQuestType.FairyLeague:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<UnionPanel>(false, 4);
                    break;
                case DailyQuestType.FairyFeast:
                    if (CrossServerUtility.IsCrossServer())
                    {
                        SysNotifyMgr.Instance.ShowTip("CrossMap10");
                        break;
                    }
                    var config = DailyQuestConfig.Get(_id);
                    dungeonModel.SingleChallenge(config.RelatedID);
                    break;
                case DailyQuestType.RuneTowerSweep:
                    RuneTowerWin.guideSweep = true;
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<TowerWin>(false, 0);
                    break;
                case DailyQuestType.BossHome:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.PersonalBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 2);
                    break;
                case DailyQuestType.ElderGodArea:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 4);
                    break;
                case DailyQuestType.RuneTower:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<TowerWin>(false, 0);
                    break;
                case DailyQuestType.TreasureCollectSoul:
                    GotoTreasureCollectSoul();
                    break;
                case DailyQuestType.DungeonAssist:
                    WindowCenter.Instance.Open<DungeonAssistWin>();
                    break;
                case DailyQuestType.FairyGrabBoss:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.KillMonster:
                    var point = mapModel.GetRecommendHangPoint();
                    var mapEventConfig = MapEventPointConfig.Get(point);
                    mapModel.wannaLookLocalMap = mapEventConfig.MapID;
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LocalMapWin>();
                    break;
                case DailyQuestType.GatherSoulDungeon:
                    GotoNormalDungeon(_id, 0);
                    break;
                case DailyQuestType.CrossServerPk:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>(false, 1);
                    break;
                case DailyQuestType.AllianceBoss:
                    GotoAllianceBoss(_id, 0);
                    break;
                case DailyQuestType.RidingPetActivity:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.HazyRegion:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>(false, 0);
                    break;
                default:
                    CSharpCallLua.GotoLuaDailyQuest(_id);
                    break;
            }
            WindowJumpMgr.Instance.ClearJumpData();
        }
        private void GotoTaiChiDungeon(int _dailyQuestId, int _lineId = 0)
        {
            if (VersionConfig.Get().isBanShu)
            {
                return;
            }
            var config = DailyQuestConfig.Get(_dailyQuestId);
            model.currentDailyQuest = config.ID;
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<TaiChilDungeonEntranceWin>();
        }
        private void GotoHeavenBattleDungeon(int _dailyQuestId, int _lineId = 0)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<HeavenBattleWin>();
        }
        private void GotoNormalDungeon(int _dailyQuestId, int _lineId = 0)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, _lineId);
            WindowCenter.Instance.Open<NormalDungeonEntranceWin>();
        }
        private void GotoMultipleDifficultyDungeon(int _dailyQuestId)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
            dungeonModel.selectedKylinDungeon = default(Dungeon);
            WindowCenter.Instance.Open<MultipleDifficultyDungeonWin>();
        }
        private void GotoChaosDemon(int _dailyQuestId)
        {
            var completedTimes = model.GetDailyQuestCompletedTimes(_dailyQuestId);
            var totalTimes = model.GetDailyQuestTotalTimes(_dailyQuestId);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_DEMON_TIP))
                {
                    GotoNormalDungeon(_dailyQuestId);
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayDungeonComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            GotoNormalDungeon(_dailyQuestId);
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_DEMON_TIP, true);
                        }
                    });
                }
                return;
            }
            GotoNormalDungeon(_dailyQuestId);
        }
        private void GotoNuwa()
        {
            var id = (int)DailyQuestType.EmperorRelic;
            var completedTimes = model.GetDailyQuestCompletedTimes(id);
            var totalTimes = model.GetDailyQuestTotalTimes(id);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_RELIC_TIP))
                {
                    GotoNormalDungeon(id);
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayDungeonComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            GotoNormalDungeon(id);
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_RELIC_TIP, true);
                        }
                    });
                }
                return;
            }
            GotoNormalDungeon(id);
        }
        private void GotoTrial()
        {
            var id = (int)DailyQuestType.Trial;
            var config = DailyQuestConfig.Get(id);
            var completedTimes = model.GetDailyQuestCompletedTimes(id);
            var totalTimes = model.GetDailyQuestTotalTimes(id);
            if (completedTimes >= totalTimes)
            {
                if (DayRemind.Instance.GetDayRemind(DayRemind.DUNGEON_TRIAL_TIP))
                {
                    dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
                    WindowCenter.Instance.Open<TrialDungeonSelectWin>();
                }
                else
                {
                    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("TodayTrialComplete"), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) =>
                    {
                        if (isOk)
                        {
                            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
                            WindowCenter.Instance.Open<TrialDungeonSelectWin>();
                        }
                        if (isToggle)
                        {
                            DayRemind.Instance.SetDayRemind(DayRemind.DUNGEON_TRIAL_TIP, true);
                        }
                    });
                }
                return;
            }
            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
            WindowCenter.Instance.Open<TrialDungeonSelectWin>();
        }
        private void GotoBlastStove()
        {
            WindowCenter.Instance.Close<DailyQuestWin>();
            WindowCenter.Instance.Open<AlchemyBaseWin>();
        }
        private void GotoBountyMission()
        {
            var inDungeon = IsDungeon();
            if (inDungeon)
            {
                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
            }
            else
            {
                taskModel.DailyBountyMove();
                WindowCenter.Instance.Close<DailyQuestWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        private void GotoFairyTask()
        {
            var inDungeon = IsDungeon();
            if (inDungeon)
            {
                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
            }
            else
            {
                taskModel.DailyFairyTaskMove();
                WindowCenter.Instance.Close<DailyQuestWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        private void GotoAllianceBoss(int id, int lineId)
        {
            WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
        }
        private void GotoTreasureCollectSoul()
        {
            var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
            var treasures = treasureModel.GetTreasureCategory(TreasureCategory.Human);
            var gotoTreasureId = 0;
            for (int i = treasures.Count - 1; i >= 0; i--)
            {
                if (IsTreasureCollectSoul(treasures[i]))
                {
                    gotoTreasureId = treasures[i];
                    break;
                }
            }
            if (gotoTreasureId == 0)
            {
                for (int i = 0; i < treasures.Count; i++)
                {
                    Treasure treasure;
                    if (treasureModel.TryGetTreasure(treasures[i], out treasure))
                    {
                        if (treasure != null
                            && (treasure.state == TreasureState.Locked || treasure.state == TreasureState.Collecting))
                        {
                            gotoTreasureId = treasure.id;
                            break;
                        }
                    }
                }
            }
            WindowCenter.Instance.Close<DailyQuestWin>();
            if (gotoTreasureId == 0)
            {
                treasureModel.currentCategory = TreasureCategory.Human;
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureFunc1);
            }
            else
            {
                var config = TreasureConfig.Get(gotoTreasureId);
                treasureModel.selectedTreasure = gotoTreasureId;
                treasureModel.currentCategory = (TreasureCategory)config.Category;
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureCollectSoul);
            }
        }
        private bool IsTreasureCollectSoul(int _treasureId)
        {
            return false;
        }
        private bool IsDungeon()//是否在副本中
        {
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var mapConfig = MapConfig.Get(mapId);
            return mapConfig != null && mapConfig.MapFBType != 0;
        }
    }
}
System/DailyQuest/DayQuestDetailsWin.cs
New file
@@ -0,0 +1,111 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Sunday, May 05, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class DayQuestDetailsWin : Window
    {
        [SerializeField] CyclicScroll m_QuestScroll;
        [SerializeField] Button m_Calendar;
        [SerializeField] DailyQuestHangTimeBehaviour m_HangTimeBehaviour;
        [SerializeField] DailyQuestActiveSlider m_DailyQuestActiveSlider;
        DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Calendar.AddListener(ShowCalendar);
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnAfterOpen()
        {
            model.currentActiveValueUpdateEvent += OnUpdateCurrentActive;
            model.categoryChangeEvent += ShowQuestGroups;
        }
        protected override void OnPreClose()
        {
            model.currentDailyQuest = 0;
            m_HangTimeBehaviour.Dispose();
            m_QuestScroll.Dispose();
            model.categoryChangeEvent -= ShowQuestGroups;
            model.currentActiveValueUpdateEvent -= OnUpdateCurrentActive;
        }
        protected override void OnAfterClose()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
            ShowQuestGroups();
        }
        #endregion
        private void ShowQuestGroups()
        {
            var quests = model.GetDailyQuests(model.category);
            m_HangTimeBehaviour.Display();
            m_DailyQuestActiveSlider.Initialize();
            m_DailyQuestActiveSlider.UpdateCurrentActiveValue(model.currentActiveValue, model.dailyQuestTotalActiveValue);
            var groupDatas = new List<DailyQuestGroup.GroupData>();
            var max = quests.Count;
            for (int i = 0; i < max; i++, i++)
            {
                DailyQuestData data1 = null;
                model.TryGetDailyQuest(quests[i], out data1);
                DailyQuestData data2 = null;
                if (i + 1 < max)
                {
                    model.TryGetDailyQuest(quests[i + 1], out data2);
                }
                groupDatas.Add(new DailyQuestGroup.GroupData(data1, data2));
            }
            m_QuestScroll.Init(groupDatas);
            var currentQuestIndex = quests.IndexOf(model.currentDailyQuest);
            if (currentQuestIndex != -1)
            {
                m_QuestScroll.MoveToCenter(currentQuestIndex / 2);
            }
        }
        private void ShowCalendar()
        {
            WindowCenter.Instance.Open<DailyQuestCalendarWin>();
        }
        private void OnUpdateCurrentActive()
        {
            m_DailyQuestActiveSlider.UpdateCurrentActiveValue(model.currentActiveValue, model.dailyQuestTotalActiveValue);
        }
    }
}
System/DailyQuest/DayQuestDetailsWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 077106fb0d5e473449180907d13e90a0
timeCreated: 1557024836
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/DailyQuest/ResourcesBackModel.cs
@@ -83,13 +83,13 @@
        public bool IsMainGo = false;//是否显示主界面入口
        public override void Init()
        {
            ResourcesBackPanel.IsAccordingRedPoint += IsAccordingRedPoint;
            ResourcesBackWin.IsAccordingRedPoint += IsAccordingRedPoint;
        }
        public override void UnInit()
        {
            ResourcesBackPanel.IsAccordingRedPoint -= IsAccordingRedPoint;
            ResourcesBackWin.IsAccordingRedPoint -= IsAccordingRedPoint;
        }
        private void IsAccordingRedPoint()
System/DailyQuest/ResourcesBackWin.cs
File was renamed from System/DailyQuest/ResourcesBackPanel.cs
@@ -1,464 +1,477 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 15, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
namespace Snxxz.UI
{
    public class ResourcesBackPanel : MonoBehaviour
    {
        [SerializeField] ScrollerController m_ScrollerController;
        [SerializeField] Button m_GetTipsBtn;
        [SerializeField] Button m_FindAKeyBtn;//一键找回
        [SerializeField] GameObject m_Text_1;
        [SerializeField] GameObject m_Text_2;
        [SerializeField] Button m_NotVipFindAKeyBtn;//非Vip一键仙玉找回
        [SerializeField] Toggle m_FairyJadeToggle;
        [SerializeField] Toggle m_CopperCashToggle;
        [SerializeField] Image m_FairyJadeImage;
        [SerializeField] GameObject m_Container_NoRecords;
        ResourcesBackModel m_ResourcesBackModel;
        ResourcesBackModel resourcesBackModel { get { return m_ResourcesBackModel ?? (m_ResourcesBackModel = ModelCenter.Instance.GetModel<ResourcesBackModel>()); } }
        public static event Action IsAccordingRedPoint;
        List<ResourcesBackClass> _list = new List<ResourcesBackClass>();//用来控制进行排序
        private bool IsBool = true;
        private int OneKeyResourcesBackNum = 0;
        private void Awake()
        {
            //m_FairyJadeToggle.isOn = false;
            //m_CopperCashToggle.isOn = true;
            ToggleSelected();
        }
        private void OnEnable()
        {
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            ResourcesBackModel.ResourcesBackUpdateEvent += OnResourcesBackUpdate;
            IsFindOneKey();
            Sequencing();
            if (_list.Count == 0)
            {
                m_Container_NoRecords.SetActive(true);
            }
            else
            {
                m_Container_NoRecords.SetActive(false);
            }
            OnCreateGridLineCell(m_ScrollerController);
        }
        private void Start()
        {
            m_GetTipsBtn.AddListener(OnClickGetTipsButton);
            m_FindAKeyBtn.AddListener(OnClickFindAKeyButton);
            m_FairyJadeToggle.onValueChanged.AddListener(FairyJadeToggle);
            m_CopperCashToggle.onValueChanged.AddListener(CopperCashToggle);
            m_NotVipFindAKeyBtn.AddListener(OnClickNoVipFindAKeyButton);
        }
        private void OnDisable()
        {
            m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
            ResourcesBackModel.ResourcesBackUpdateEvent -= OnResourcesBackUpdate;
            if (IsAccordingRedPoint != null)
            {
                IsAccordingRedPoint();
            }
        }
        private void OnResourcesBackUpdate()
        {
            Sequencing();
            OnCreateGridLineCell(m_ScrollerController);
            IsFindOneKey();
        }
        private void IsFindOneKey()
        {
            if (IsFind())
            {
                if (IsBool)
                {
                    m_FairyJadeImage.gameObject.SetActive(true);
                    m_Text_1.SetActive(true);
                    m_Text_2.SetActive(false);
                }
                else
                {
                    m_FairyJadeImage.gameObject.SetActive(false);
                    m_Text_1.SetActive(false);
                    m_Text_2.SetActive(true);
                }
                m_FindAKeyBtn.gameObject.SetActive(true);
            }
            else
            {
                m_FindAKeyBtn.gameObject.SetActive(false);
            }
            if (IsFairyJade())
            {
                m_NotVipFindAKeyBtn.gameObject.SetActive(true);
            }
            else
            {
                m_NotVipFindAKeyBtn.gameObject.SetActive(false);
            }
        }
        private void OnCreateGridLineCell(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            if (_list.Count == 0)
            {
                return;
            }
            int Line = Mathf.CeilToInt((float)_list.Count / 2);
            for (int i = 0; i < Line; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
            }
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
        {
            int gridlineIndex = cell.index;
            int childCode = 0;
            for (childCode = 0; childCode < cell.transform.childCount; childCode++)
            {
                ResourcesBackBoxBack resourcesBackBoxBack = cell.transform.GetChild(childCode).GetComponent<ResourcesBackBoxBack>();
                resourcesBackBoxBack.gameObject.SetActive(false);
                int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
                if (cellCount - 1 < resourcesBackModel.ResourcesBackDic.Count)
                {
                    resourcesBackBoxBack.gameObject.SetActive(true);
                    ResourcesBackClass resourcesBackClass = _list[cellCount - 1];
                    resourcesBackBoxBack.FairyJadeOrCopperCashFind(resourcesBackClass.ID, IsBool);
                }
            }
        }
        private void OnClickGetTipsButton()
        {
        }
        private void OnClickFindAKeyButton()//一键找回按钮
        {
            if (IsBool)
            {
                FindAKeyFairyJade();
            }
            else
            {
                FindAKeyCoins();
            }
        }
        private void OnClickNoVipFindAKeyButton()//一键仙玉(非Vip)
        {
            int NeedFairyJade = 0;
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                if (ResourcesBack.RecoverCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
                }
            }
            int CostJade = (int)UIHelper.GetMoneyCnt(1);
            string strLanguage = string.Empty;
            if (CostJade >= NeedFairyJade)
            {
                strLanguage = string.Format(Language.Get("NewResourceBack1"), NeedFairyJade);
            }
            else
            {
                strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
            }
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
            {
                if (isOk)
                {
                    if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
                    {
                        RecoverGain(2);
                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                    }
                    else
                    {
                        if (VersionConfig.Get().isBanShu)
                        {
                            SysNotifyMgr.Instance.ShowTip("GoldErr");
                            return;
                        }
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                }
            });
        }
        private void FindAKeyFairyJade()//一键找仙玉
        {
            int NeedFairyJade = 0;
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                if (ResourcesBack.RecoverCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
                }
                if (ResourcesBack.ExtraCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.ExtraCnt * ResourcesBack.VipCostJade;
                }
            }
            int CostJade = (int)UIHelper.GetMoneyCnt(1);
            string strLanguage = string.Empty;
            if (CostJade >= NeedFairyJade)
            {
                strLanguage = string.Format(Language.Get("NewResourceBack4"), NeedFairyJade);
            }
            else
            {
                strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
            }
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
            {
                if (isOk)
                {
                    if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
                    {
                        RecoverGain(0);
                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                    }
                    else
                    {
                        if (VersionConfig.Get().isBanShu)
                        {
                            SysNotifyMgr.Instance.ShowTip("GoldErr");
                            return;
                        }
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                }
            });
        }
        private void FindAKeyCoins()//一键找铜钱
        {
            RecoverGain(1);//免费找回
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
        }
        List<byte> indexList = new List<byte>();
        List<byte> recoverCntList = new List<byte>();
        private void RecoverGain(int type)//0仙玉,1铜钱,2一键非Vip仙玉
        {
            indexList.Clear();
            recoverCntList.Clear();
            CA553_tagCMRecoverGain CA553 = new CA553_tagCMRecoverGain();
            CA553.Type = (byte)type;
            if (type == 0)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0 || ResourcesBack.ExtraCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)(ResourcesBack.RecoverCnt + ResourcesBack.ExtraCnt));
                    }
                }
                CA553.Type = 0;
            }
            else if (type == 1)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)ResourcesBack.RecoverCnt);
                    }
                }
                CA553.Type = 1;
            }
            else if (type == 2)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)(ResourcesBack.RecoverCnt));
                    }
                }
                CA553.Type = 0;
            }
            CA553.Cnt = (byte)indexList.ToArray().Length;
            CA553.IndexList = indexList.ToArray();
            CA553.RecoverCntList = recoverCntList.ToArray();
            GameNetSystem.Instance.SendInfo(CA553);
        }
        private void FairyJadeToggle(bool _bool)
        {
            if (_bool)
            {
                IsBool = true;
                Sequencing();
                IsFindOneKey();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void CopperCashToggle(bool _bool)
        {
            if (_bool)
            {
                IsBool = false;
                Sequencing();
                IsFindOneKey();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void Sequencing()//关于排序
        {
            _list.Clear();
            if (resourcesBackModel.ResourcesBackDic.Count == 0)
            {
                return;
            }
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                _list.Add(resourcesBackModel.ResourcesBackDic[key]);
            }
            if (IsBool)
            {
                _list.Sort(CostJadeCompare);
            }
            else
            {
                _list.Sort(Compare);
            }
        }
        int CostJadeCompare(ResourcesBackClass x, ResourcesBackClass y)//仙玉数组排列
        {
            ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
            ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
            bool havex = (xPack.RecoverCnt > 0 || xPack.ExtraCnt > 0);
            bool havey = (yPack.RecoverCnt > 0 || yPack.ExtraCnt > 0);
            if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
            if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
            return 1;
        }
        int Compare(ResourcesBackClass x, ResourcesBackClass y)//铜钱数组排列
        {
            ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
            ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
            bool havex = (xPack.RecoverCnt > 0);
            bool havey = (yPack.RecoverCnt > 0);
            if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
            if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
            return 1;
        }
        private bool IsFind()//能否找回(包括Vip)
        {
            if (IsBool)
            {
                foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
                {
                    if (value.RecoverCnt > 0 || value.ExtraCnt > 0)
                    {
                        return true;
                    }
                }
            }
            else
            {
                foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
                {
                    if (value.RecoverCnt > 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        private bool IsFairyJade()//非Vip是否能找回判断
        {
            bool IsNumFairyJade = false;
            foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
            {
                if (value.RecoverCnt > 0)
                {
                    IsNumFairyJade = true;
                }
            }
            if (IsBool && IsNumFairyJade)
            {
                return true;
            }
            return false;
        }
        private void ToggleSelected()//Toggle选中
        {
            if (resourcesBackModel.ResourcesBackDic.Count <= 0)
            {
                return;
            }
            int Type1 = 0;
            int Type2 = 0;
            foreach (var key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                Type1 += resourcesBackModel.ResourcesBackDic[key].RecoverCnt;
                Type2 += resourcesBackModel.ResourcesBackDic[key].ExtraCnt;
            }
            if (Type1 > 0)//选中免费
            {
                IsBool = false;
                m_FairyJadeToggle.isOn = false;
                m_CopperCashToggle.isOn = true;
            }
            else if (Type2 > 0)//选中绑玉
            {
                IsBool = true;
                m_FairyJadeToggle.isOn = true;
                m_CopperCashToggle.isOn = false;
            }
            else//选中免费
            {
                IsBool = false;
                m_FairyJadeToggle.isOn = false;
                m_CopperCashToggle.isOn = true;
            }
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 15, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
namespace Snxxz.UI
{
    public class ResourcesBackWin : Window
    {
        [SerializeField] ScrollerController m_ScrollerController;
        [SerializeField] Button m_GetTipsBtn;
        [SerializeField] Button m_FindAKeyBtn;//一键找回
        [SerializeField] GameObject m_Text_1;
        [SerializeField] GameObject m_Text_2;
        [SerializeField] Button m_NotVipFindAKeyBtn;//非Vip一键仙玉找回
        [SerializeField] Toggle m_FairyJadeToggle;
        [SerializeField] Toggle m_CopperCashToggle;
        [SerializeField] Image m_FairyJadeImage;
        [SerializeField] GameObject m_Container_NoRecords;
        ResourcesBackModel m_ResourcesBackModel;
        ResourcesBackModel resourcesBackModel { get { return m_ResourcesBackModel ?? (m_ResourcesBackModel = ModelCenter.Instance.GetModel<ResourcesBackModel>()); } }
        public static event Action IsAccordingRedPoint;
        List<ResourcesBackClass> _list = new List<ResourcesBackClass>();//用来控制进行排序
        private bool IsBool = true;
        private int OneKeyResourcesBackNum = 0;
        protected override void BindController()
        {
            ToggleSelected();
        }
        protected override void AddListeners()
        {
            m_GetTipsBtn.AddListener(OnClickGetTipsButton);
            m_FindAKeyBtn.AddListener(OnClickFindAKeyButton);
            m_FairyJadeToggle.onValueChanged.AddListener(FairyJadeToggle);
            m_CopperCashToggle.onValueChanged.AddListener(CopperCashToggle);
            m_NotVipFindAKeyBtn.AddListener(OnClickNoVipFindAKeyButton);
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            ResourcesBackModel.ResourcesBackUpdateEvent += OnResourcesBackUpdate;
            IsFindOneKey();
            Sequencing();
            if (_list.Count == 0)
            {
                m_Container_NoRecords.SetActive(true);
            }
            else
            {
                m_Container_NoRecords.SetActive(false);
            }
            OnCreateGridLineCell(m_ScrollerController);
        }
        protected override void OnPreClose()
        {
            m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
            ResourcesBackModel.ResourcesBackUpdateEvent -= OnResourcesBackUpdate;
            if (IsAccordingRedPoint != null)
            {
                IsAccordingRedPoint();
            }
        }
        protected override void OnAfterClose()
        {
        }
        private void OnResourcesBackUpdate()
        {
            Sequencing();
            OnCreateGridLineCell(m_ScrollerController);
            IsFindOneKey();
        }
        private void IsFindOneKey()
        {
            if (IsFind())
            {
                if (IsBool)
                {
                    m_FairyJadeImage.gameObject.SetActive(true);
                    m_Text_1.SetActive(true);
                    m_Text_2.SetActive(false);
                }
                else
                {
                    m_FairyJadeImage.gameObject.SetActive(false);
                    m_Text_1.SetActive(false);
                    m_Text_2.SetActive(true);
                }
                m_FindAKeyBtn.gameObject.SetActive(true);
            }
            else
            {
                m_FindAKeyBtn.gameObject.SetActive(false);
            }
            if (IsFairyJade())
            {
                m_NotVipFindAKeyBtn.gameObject.SetActive(true);
            }
            else
            {
                m_NotVipFindAKeyBtn.gameObject.SetActive(false);
            }
        }
        private void OnCreateGridLineCell(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            if (_list.Count == 0)
            {
                return;
            }
            int Line = Mathf.CeilToInt((float)_list.Count / 2);
            for (int i = 0; i < Line; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
            }
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
        {
            int gridlineIndex = cell.index;
            int childCode = 0;
            for (childCode = 0; childCode < cell.transform.childCount; childCode++)
            {
                ResourcesBackBoxBack resourcesBackBoxBack = cell.transform.GetChild(childCode).GetComponent<ResourcesBackBoxBack>();
                resourcesBackBoxBack.gameObject.SetActive(false);
                int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
                if (cellCount - 1 < resourcesBackModel.ResourcesBackDic.Count)
                {
                    resourcesBackBoxBack.gameObject.SetActive(true);
                    ResourcesBackClass resourcesBackClass = _list[cellCount - 1];
                    resourcesBackBoxBack.FairyJadeOrCopperCashFind(resourcesBackClass.ID, IsBool);
                }
            }
        }
        private void OnClickGetTipsButton()
        {
        }
        private void OnClickFindAKeyButton()//一键找回按钮
        {
            if (IsBool)
            {
                FindAKeyFairyJade();
            }
            else
            {
                FindAKeyCoins();
            }
        }
        private void OnClickNoVipFindAKeyButton()//一键仙玉(非Vip)
        {
            int NeedFairyJade = 0;
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                if (ResourcesBack.RecoverCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
                }
            }
            int CostJade = (int)UIHelper.GetMoneyCnt(1);
            string strLanguage = string.Empty;
            if (CostJade >= NeedFairyJade)
            {
                strLanguage = string.Format(Language.Get("NewResourceBack1"), NeedFairyJade);
            }
            else
            {
                strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
            }
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
            {
                if (isOk)
                {
                    if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
                    {
                        RecoverGain(2);
                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                    }
                    else
                    {
                        if (VersionConfig.Get().isBanShu)
                        {
                            SysNotifyMgr.Instance.ShowTip("GoldErr");
                            return;
                        }
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                }
            });
        }
        private void FindAKeyFairyJade()//一键找仙玉
        {
            int NeedFairyJade = 0;
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                if (ResourcesBack.RecoverCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
                }
                if (ResourcesBack.ExtraCnt > 0)
                {
                    NeedFairyJade += ResourcesBack.ExtraCnt * ResourcesBack.VipCostJade;
                }
            }
            int CostJade = (int)UIHelper.GetMoneyCnt(1);
            string strLanguage = string.Empty;
            if (CostJade >= NeedFairyJade)
            {
                strLanguage = string.Format(Language.Get("NewResourceBack4"), NeedFairyJade);
            }
            else
            {
                strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
            }
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
            {
                if (isOk)
                {
                    if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
                    {
                        RecoverGain(0);
                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                    }
                    else
                    {
                        if (VersionConfig.Get().isBanShu)
                        {
                            SysNotifyMgr.Instance.ShowTip("GoldErr");
                            return;
                        }
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                }
            });
        }
        private void FindAKeyCoins()//一键找铜钱
        {
            RecoverGain(1);//免费找回
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
        }
        List<byte> indexList = new List<byte>();
        List<byte> recoverCntList = new List<byte>();
        private void RecoverGain(int type)//0仙玉,1铜钱,2一键非Vip仙玉
        {
            indexList.Clear();
            recoverCntList.Clear();
            CA553_tagCMRecoverGain CA553 = new CA553_tagCMRecoverGain();
            CA553.Type = (byte)type;
            if (type == 0)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0 || ResourcesBack.ExtraCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)(ResourcesBack.RecoverCnt + ResourcesBack.ExtraCnt));
                    }
                }
                CA553.Type = 0;
            }
            else if (type == 1)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)ResourcesBack.RecoverCnt);
                    }
                }
                CA553.Type = 1;
            }
            else if (type == 2)
            {
                foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
                {
                    var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
                    if (ResourcesBack.RecoverCnt > 0)
                    {
                        indexList.Add((byte)key);
                        recoverCntList.Add((byte)(ResourcesBack.RecoverCnt));
                    }
                }
                CA553.Type = 0;
            }
            CA553.Cnt = (byte)indexList.ToArray().Length;
            CA553.IndexList = indexList.ToArray();
            CA553.RecoverCntList = recoverCntList.ToArray();
            GameNetSystem.Instance.SendInfo(CA553);
        }
        private void FairyJadeToggle(bool _bool)
        {
            if (_bool)
            {
                IsBool = true;
                Sequencing();
                IsFindOneKey();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void CopperCashToggle(bool _bool)
        {
            if (_bool)
            {
                IsBool = false;
                Sequencing();
                IsFindOneKey();
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void Sequencing()//关于排序
        {
            _list.Clear();
            if (resourcesBackModel.ResourcesBackDic.Count == 0)
            {
                return;
            }
            foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                _list.Add(resourcesBackModel.ResourcesBackDic[key]);
            }
            if (IsBool)
            {
                _list.Sort(CostJadeCompare);
            }
            else
            {
                _list.Sort(Compare);
            }
        }
        int CostJadeCompare(ResourcesBackClass x, ResourcesBackClass y)//仙玉数组排列
        {
            ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
            ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
            bool havex = (xPack.RecoverCnt > 0 || xPack.ExtraCnt > 0);
            bool havey = (yPack.RecoverCnt > 0 || yPack.ExtraCnt > 0);
            if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
            if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
            return 1;
        }
        int Compare(ResourcesBackClass x, ResourcesBackClass y)//铜钱数组排列
        {
            ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
            ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
            bool havex = (xPack.RecoverCnt > 0);
            bool havey = (yPack.RecoverCnt > 0);
            if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
            if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
            return 1;
        }
        private bool IsFind()//能否找回(包括Vip)
        {
            if (IsBool)
            {
                foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
                {
                    if (value.RecoverCnt > 0 || value.ExtraCnt > 0)
                    {
                        return true;
                    }
                }
            }
            else
            {
                foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
                {
                    if (value.RecoverCnt > 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        private bool IsFairyJade()//非Vip是否能找回判断
        {
            bool IsNumFairyJade = false;
            foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
            {
                if (value.RecoverCnt > 0)
                {
                    IsNumFairyJade = true;
                }
            }
            if (IsBool && IsNumFairyJade)
            {
                return true;
            }
            return false;
        }
        private void ToggleSelected()//Toggle选中
        {
            if (resourcesBackModel.ResourcesBackDic.Count <= 0)
            {
                return;
            }
            int Type1 = 0;
            int Type2 = 0;
            foreach (var key in resourcesBackModel.ResourcesBackDic.Keys)
            {
                Type1 += resourcesBackModel.ResourcesBackDic[key].RecoverCnt;
                Type2 += resourcesBackModel.ResourcesBackDic[key].ExtraCnt;
            }
            if (Type1 > 0)//选中免费
            {
                IsBool = false;
                m_FairyJadeToggle.isOn = false;
                m_CopperCashToggle.isOn = true;
            }
            else if (Type2 > 0)//选中绑玉
            {
                IsBool = true;
                m_FairyJadeToggle.isOn = true;
                m_CopperCashToggle.isOn = false;
            }
            else//选中免费
            {
                IsBool = false;
                m_FairyJadeToggle.isOn = false;
                m_CopperCashToggle.isOn = true;
            }
        }
    }
}
System/DailyQuest/ResourcesBackWin.cs.meta
System/DailyQuest/TimeLimitQuestWin.cs
New file
@@ -0,0 +1,49 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Sunday, May 05, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class TimeLimitQuestWin : Window
    {
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
    }
}
System/DailyQuest/TimeLimitQuestWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 509c5b0de212e64438b2fad07118fce7
timeCreated: 1557024926
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/WindowBase/OneLevelWin.cs
@@ -36,10 +36,9 @@
            m_SubWindowContainer = this.GetComponent<RectTransform>("Pivot/Container_SubWindow");
            var name = this.GetType().Name;
            var children = WindowConfig.GetChildWindows(name);
            foreach (var child in children)
            var infos = WindowConfig.GetWindowFunctionInfos(name);
            foreach (var info in infos)
            {
                var info = WindowConfig.GetWindowFunctionInfo(name, child);
                m_Group.AddFunction("FunctionButton_Pattern_1", info.order, info.functionId, Language.Get(info.titleKey), info.redPointId);
            }
UI/Common/WindowConfig.cs
@@ -111,23 +111,17 @@
        return string.Empty;
    }
    public static OrderTable GetWindowFunctionInfo(string parent, string child)
    public static List<OrderTable> GetWindowFunctionInfos(string parent)
    {
        foreach (var table in Get().windows)
        {
            if (table.parent == parent)
            {
                foreach (var info in table.orderTables)
                {
                    if (info.window == child)
                    {
                        return info;
                    }
                }
                return new List<OrderTable>(table.orderTables);
            }
        }
        return default(OrderTable);
        return null;
    }
    public static string GetTitleIconKey(string name)