| System/DailyQuest/DailyQuestBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DailyQuestGroup.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DailyQuestModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DailyQuestWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DayQuestDetailsWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DayQuestDetailsWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/ResourcesBackModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/ResourcesBackWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/ResourcesBackWin.cs.meta | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/TimeLimitQuestWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/TimeLimitQuestWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowBase/OneLevelWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| UI/Common/WindowConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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)