| System/FairyAu/FairyApplyWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 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/WorldMap/LocalMapWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WorldMap/MapLineBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WorldMap/MapModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/FairyAu/FairyApplyWin.cs
@@ -23,6 +23,8 @@ return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyModel>()); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy) @@ -211,6 +213,11 @@ private void OnExitBtn() { if (fairyGrabBossModel.InActivityTime) { SysNotifyMgr.Instance.ShowTip("FairyGrabBossExitError"); return; } PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null) { 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,29 @@ 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; GAMgr.Instance.OnFightNpcRequest += OnFightNpcUpdate; GAMgr.Instance.OnFightNpcRelease += OnFightNpcUpdate; } public void OnBeforePlayerDataInitialize() @@ -87,29 +108,129 @@ public override void UnInit() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish; DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState; GA_Hero.OnEnterOrExitArea -= OnEnterOrExitArea; GAMgr.Instance.OnFightNpcRequest -= OnFightNpcUpdate; GAMgr.Instance.OnFightNpcRelease -= OnFightNpcUpdate; } private void OnRefreshFairyInfo() { RecheckGrabBoss(); } private void OnEnterOrExitArea(MapArea.E_Type type, bool arg1) { if (type == MapArea.E_Type.Boss) { RecheckGrabBoss(); } } private void OnStageLoadFinish() { if (!(StageManager.Instance.CurrentStage is DungeonStage)) { grabBossHintOpen = false; fairyGrabBossDict.Clear(); } else { RecheckGrabBoss(); } } private void OnFightNpcUpdate(uint npcId) { if (bosses.Contains((int)npcId)) { RecheckGrabBoss(); } } 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 grabBossLine = GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId) ? GeneralConfig.Instance.fairyGrabBossMapLines[mapId] : 1; if (PlayerDatas.Instance.baseData.FBID != grabBossLine - 1) { 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 +297,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); } @@ -220,14 +346,23 @@ return false; } private void SecondEvent() /// <summary> /// 只给地图界面用,谨慎使用 /// </summary> /// <param name="lineId"></param> /// <returns></returns> public bool TryGetFairyGrabBossLine(out int lineId) { if (!serverInited) lineId = 0; var mapId = PlayerDatas.Instance.baseData.MapID; var mapLinesDict = GeneralConfig.Instance.fairyGrabBossMapLines; if (mapLinesDict != null && mapLinesDict.ContainsKey(mapId)) { return; lineId = mapLinesDict[mapId]; return true; } return false; } 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; System/WorldMap/LocalMapWin.cs
@@ -25,6 +25,7 @@ int mapId = 0; MapModel model { get { return ModelCenter.Instance.GetModel<MapModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } protected override void BindController() { @@ -97,7 +98,16 @@ } else { m_CurrentLine.text = Language.Get("line", PlayerDatas.Instance.baseData.FBID + 1); var grabBossLine = 0; fairyGrabBossModel.TryGetFairyGrabBossLine(out grabBossLine); if (grabBossLine != 0 && PlayerDatas.Instance.baseData.FBID + 1 == grabBossLine) { m_CurrentLine.text = Language.Get("FairyGrabBossLine"); } else { m_CurrentLine.text = Language.Get("line", PlayerDatas.Instance.baseData.FBID + 1); } } } System/WorldMap/MapLineBehaviour.cs
@@ -15,6 +15,7 @@ [SerializeField] Text m_Title; MapModel model { get { return ModelCenter.Instance.GetModel<MapModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } MapLine line; @@ -23,7 +24,16 @@ base.Display(_data); line = (MapLine)_data; m_Title.text = Language.Get("line", line.lineIndex); var grabBossLine = 0; if (fairyGrabBossModel.TryGetFairyGrabBossLine(out grabBossLine) && line.lineIndex == grabBossLine) { m_Title.text = Language.Get("FairyGrabBossLine"); } else { m_Title.text = Language.Get("line", line.lineIndex); } } public override void Dispose() System/WorldMap/MapModel.cs
@@ -53,6 +53,7 @@ int mapUnLockIndex = 0; PlayerTaskDatas taskModel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } public event Action<int> selectLocalMapEventPointEvent; public event Action<int> mapLinesUpdateEvent; @@ -186,6 +187,8 @@ { if (mapLines.ContainsKey(_mapId)) { //List<MapLine> _mapLines = new List<MapLine>(mapLines[_mapId]); //CheckSpecialLines(_mapLines); return mapLines[_mapId]; } else @@ -194,6 +197,22 @@ } } void CheckSpecialLines(List<MapLine> list) { var lineId = 0; if (fairyGrabBossModel.TryGetFairyGrabBossLine(out lineId) && !fairyGrabBossModel.InActivityTime) { var index = list.FindIndex((x) => { return x.lineIndex == lineId; }); if (index != -1) { list.RemoveAt(index); } } } public void UpdateMapLines(HA006_tagGCPyServerMapState _serverInfo) { for (int i = 0; i < _serverInfo.MapCount; i++)