| System/FairyAu/FairyGrabBossBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossHintWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowBase/WindowCenter.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/FairyAu/FairyGrabBossBehaviour.cs
@@ -10,6 +10,7 @@ public class FairyGrabBossBehaviour : ScrollItem { [SerializeField] AutoSelectCyclicScroll m_Scroll; [SerializeField] SmoothMask m_SmoothMask; [SerializeField] RectTransform m_CenterSign; [SerializeField] RectTransform m_ContainerSelect; [SerializeField] RectTransform m_ContainerKilling; @@ -91,7 +92,7 @@ { FairyGrabBossModel.BossProgressInfo bossProgress; bool killed = false; bool opened = model.IsOpen; bool opened = model.InActivityTime; if (model.TryGetBossProgress(bossId, out bossProgress)) { var progress = (float)bossProgress.currentHp / bossProgress.totalHp; @@ -100,8 +101,11 @@ } m_ContainerKilled.gameObject.SetActive(killed && opened); m_ContainerKilling.gameObject.SetActive(!killed && opened); m_BossPortrait.material = opened ? m_SmoothMask.imageMaterials[0] : m_SmoothMask.imageMaterials[1]; } protected virtual void LateUpdate() { if (m_Scroll.autoSelectable && model.selectBoss != bossId && bossId > 0) System/FairyAu/FairyGrabBossHintWin.cs
@@ -59,7 +59,7 @@ if (bossId != 0) { model.QueryGrabBossHurt(bossId, 0, objId); model.QueryGrabBossProgress(); model.QueryGrabBossProgress(true); GlobalTimeEvent.Instance.secondEvent += SecondEvent; model.bossProgressUpdate += BossProgressUpdate; model.bossHurtUpdate += BossHurtUpdate; System/FairyAu/FairyGrabBossModel.cs
@@ -20,6 +20,20 @@ == DailyQuestModel.DailyQuestState.Normal; } } public bool InActivityTime { get { DailyQuestOpenTime dailyQuestOpenTime; if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime)) { return dailyQuestOpenTime.InOpenTime() && dailyQuestOpenTime.IsValidServerOpenTime(); } return false; } } int m_SelectBoss = 0; public int selectBoss { @@ -57,22 +71,27 @@ return 0; } } public bool grabBossHintOpen { get; private set; } private bool serverInited = false; private DateTime lastQueryProgressTime = DateTime.Now; public event Action stateUpdate; public event Action<int> bossSelectedEvent; public event Action<int, int> bossHurtUpdate; public event Action<int> bossProgressUpdate; public event Action bossGrabHintEvent; DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } public override void Init() { ParseConfig(); GlobalTimeEvent.Instance.secondEvent += SecondEvent; StageManager.Instance.onStageLoadFinish += OnStageLoadFinish; DailyQuestActionTimer.Instance.RefreshDailyQuestState += RefreshDailyQuestState; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; GA_Hero.OnEnterOrExitArea += OnEnterOrExitArea; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; } public void OnBeforePlayerDataInitialize() @@ -87,9 +106,19 @@ public override void UnInit() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish; DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState; GA_Hero.OnEnterOrExitArea -= OnEnterOrExitArea; } private void OnRefreshFairyInfo() { RecheckGrabBoss(); } private void OnEnterOrExitArea(MapArea.E_Type arg0, bool arg1) { RecheckGrabBoss(); } private void OnStageLoadFinish() @@ -102,14 +131,86 @@ public void RecheckGrabBoss() { if (!InActivityTime) { CloseGrabBossHint(); return; } if (!MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss)) { CloseGrabBossHint(); return; } var mapId = PlayerDatas.Instance.baseData.MapID; var lineId = PlayerDatas.Instance.baseData.FBID; if (!GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId) || lineId != GeneralConfig.Instance.fairyGrabBossMapLines[mapId]) { CloseGrabBossHint(); return; } if (!PlayerDatas.Instance.fairyData.HasFairy) { CloseGrabBossHint(); return; } int bossId = 0; var list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightBoss); if (list != null) { for (int i = 0; i < list.Count; i++) { GA_NpcFightBoss bossActor = list[i] as GA_NpcFightBoss; if (bossActor != null && bosses.Contains(bossActor.NpcConfig.NPCID)) { bossId = bossActor.NpcConfig.NPCID; break; } } } if (bossId == 0) { CloseGrabBossHint(); return; } grabBossHintOpen = true; if (!WindowCenter.Instance.CheckOpen<FairyGrabBossHintWin>()) { WindowCenter.Instance.Open<FairyGrabBossHintWin>(); } if (bossGrabHintEvent != null) { bossGrabHintEvent(); } } void CloseGrabBossHint() { grabBossHintOpen = false; if (WindowCenter.Instance.CheckOpen<FairyGrabBossHintWin>()) { WindowCenter.Instance.CloseImmediately<FairyGrabBossHintWin>(); } if (bossGrabHintEvent != null) { bossGrabHintEvent(); } } private void RefreshDailyQuestState() { RecheckGrabBoss(); if (stateUpdate != null) { stateUpdate(); } } private void OnFuncStateChangeEvent(int _id) { if (_id == 139) { RecheckGrabBoss(); } } @@ -176,8 +277,13 @@ } } public void QueryGrabBossProgress() public void QueryGrabBossProgress(bool force = false) { if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10) { return; } lastQueryProgressTime = DateTime.Now; CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt(); GameNetSystem.Instance.SendInfo(pak); } @@ -219,15 +325,6 @@ } return false; } private void SecondEvent() { if (!serverInited) { return; } } public class FairyGrabBossInfo { System/FairyAu/FairyGrabBossWin.cs
@@ -19,12 +19,17 @@ [SerializeField] ItemCell[] m_DropItems; [SerializeField] Button m_KillRecord; [SerializeField] Button m_Goto; [SerializeField] RectTransform m_ContainerUnOpen; [SerializeField] RectTransform m_ContainerOpen; [SerializeField] Text m_SurplusTime; FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } float m_Timer = 0f; const float Interval = 10f; #region Built-in protected override void BindController() @@ -42,10 +47,12 @@ DisplaySurplusTime(); DisplayBossInfo(); DisplayHighestFairy(); model.QueryGrabBossProgress(true); GlobalTimeEvent.Instance.secondEvent += SecondEvent; model.bossSelectedEvent += BossSelectedEvent; model.bossProgressUpdate += BossProgressUpdate; model.stateUpdate += StateUpdate; m_Timer = 0; } protected override void OnActived() @@ -68,6 +75,17 @@ protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); m_Timer += Time.deltaTime; if (m_Timer >= Interval) { m_Timer = 0; model.QueryGrabBossProgress(); } } #endregion @@ -130,11 +148,20 @@ var seconds = model.surplusSeconds; if (seconds > 0) { if (!m_ContainerOpen.gameObject.activeSelf || m_ContainerUnOpen.gameObject.activeSelf) { m_ContainerOpen.gameObject.SetActive(true); m_ContainerUnOpen.gameObject.SetActive(false); } m_SurplusTime.text = TimeUtility.SecondsToDHMSCHS(seconds); } else { m_SurplusTime.text = Language.Get("ActivityEnd"); if (!m_ContainerUnOpen.gameObject.activeSelf || m_ContainerOpen.gameObject.activeSelf) { m_ContainerUnOpen.gameObject.SetActive(true); m_ContainerOpen.gameObject.SetActive(false); } } } System/WindowBase/WindowCenter.cs
@@ -14,7 +14,7 @@ List<string> closeAllIgnoreWindows = new List<string>() { "MessageWin", "NewBieWin", "NewItemGetWin", "AttributePromoteShowWin" ,"DungeonBeginCoolDownWin","DungeonFightWin","StatusTipWin" ,"ScrollTipWin","MarqueeWin","ExperienceOpenWin","TrumpetWin","BattlePrepareCoolDownWin","DungeonGradeWin","BattleHintWin", "TreasureDungeonMissionHintWin", "TreasureDungeonMissionHintWin","FairyGrabBossHintWin", }; UIRoot m_UIRoot;