| System/FairyAu/FairyGrabBossHintWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Message/RichMoveEvent.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/FairyAu/FairyGrabBossHintWin.cs
@@ -28,6 +28,9 @@ int bossId = 0; uint objId = 0; ulong currentHp = 0; ulong totalHp = 0; FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } #region Built-in protected override void BindController() @@ -52,6 +55,8 @@ { bossId = bossActor.NpcConfig.NPCID; objId = bossActor.ServerInstID; currentHp = bossActor.ActorInfo.RealHp; totalHp = bossActor.ActorInfo.RealMaxHp; break; } } @@ -59,10 +64,9 @@ if (bossId != 0) { model.QueryGrabBossHurt(bossId, 0, objId); model.QueryGrabBossProgress(true); GlobalTimeEvent.Instance.secondEvent += SecondEvent; model.bossProgressUpdate += BossProgressUpdate; model.bossHurtUpdate += BossHurtUpdate; GA_NpcFightBoss.s_HpRefresh += HpRefresh; DisplayAreaInfo(); DisplayTimer(); DisplayProgress(); @@ -82,8 +86,8 @@ protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; model.bossProgressUpdate -= BossProgressUpdate; model.bossHurtUpdate -= BossHurtUpdate; GA_NpcFightBoss.s_HpRefresh -= HpRefresh; } protected override void OnAfterClose() @@ -98,7 +102,6 @@ { m_Timer = 0f; model.QueryGrabBossHurt(bossId, 0, objId); model.QueryGrabBossProgress(); } } #endregion @@ -117,14 +120,9 @@ void DisplayProgress() { FairyGrabBossModel.BossProgressInfo bossProgress; bool killed = false; if (model.TryGetBossProgress(bossId, out bossProgress)) { var progress = 1 - (float)bossProgress.currentHp / bossProgress.totalHp; m_Progress.text = StringUtility.Contact((int)(progress * 100), "%"); killed = progress >= 1; } var progress = 1 - (float)currentHp / totalHp; m_Progress.text = StringUtility.Contact((int)(progress * 100), "%"); bool killed = progress >= 1; m_ContainerKilling.gameObject.SetActive(!killed); m_ContainerKilled.gameObject.SetActive(killed); } @@ -132,17 +130,15 @@ void DisplayRanks() { FairyGrabBossModel.FairyGrabBossInfo fairyGrabBossInfo; FairyGrabBossModel.BossProgressInfo bossProgress; var index = 0; if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo) && model.TryGetBossProgress(bossId, out bossProgress)) if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo)) { for (int i = 0; i < m_RankBehaviours.Length; i++) { if (i < fairyGrabBossInfo.hurtInfos.Count) { var hurtInfo = fairyGrabBossInfo.hurtInfos[i]; var percent = (int)(((float)hurtInfo.totalHurt / bossProgress.totalHp) * 100); var percent = (int)(((float)hurtInfo.totalHurt / totalHp) * 100); m_RankBehaviours[i].Display(hurtInfo.HurtName, percent); index++; } @@ -167,15 +163,6 @@ } } private void BossProgressUpdate(int _id) { if (_id == bossId) { DisplayProgress(); DisplayRanks(); } } private void BossHurtUpdate(int id, int type) { if (id == bossId && type == 0) @@ -184,6 +171,16 @@ } } private void HpRefresh(uint arg0, int npcId, ulong hp, ulong _totalHp) { if (npcId == bossId) { currentHp = hp; totalHp = _totalHp; DisplayProgress(); } } private void SecondEvent() { DisplayTimer(); System/FairyAu/FairyGrabBossModel.cs
@@ -77,7 +77,7 @@ public int callMemberSeconds { get; private set; } private bool serverInited = false; private DateTime lastQueryProgressTime = DateTime.Now; //private DateTime lastQueryProgressTime = DateTime.Now; public event Action stateUpdate; public event Action<int> bossSelectedEvent; @@ -86,6 +86,9 @@ public event Action bossGrabHintEvent; DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } public override void Init() { @@ -318,13 +321,13 @@ } } public void QueryGrabBossProgress(bool force = false) public void QueryGrabBossProgress() { if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10) { return; } lastQueryProgressTime = DateTime.Now; //if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10) //{ // return; //} //lastQueryProgressTime = DateTime.Now; CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt(); GameNetSystem.Instance.SendInfo(pak); } @@ -385,6 +388,114 @@ return false; } public bool TestEnterDungeon(int bossId, out int _error) { if (!InActivityTime) { _error = 3; return false; } if (!PlayerDatas.Instance.fairyData.HasFairy) { _error = 1; return false; } if (!FuncOpen.Instance.IsFuncOpen(139)) { _error = 2; return false; } var config = Config.Instance.Get<BossInfoConfig>(bossId); if (config != null) { if (!mapModel.IsMapUnLocked(config.MapID)) { _error = 6; return false; } } var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = Config.Instance.Get<MapConfig>(mapId); if (mapConfig.MapFBType != (int)MapType.OpenCountry) { _error = 5; return false; } var dataMapId = dungeonModel.GetDungeonDataIdByMapId(mapId); if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID) { _error = 4; return false; } _error = 0; return true; } public void DisplayErrorTip(int error) { switch (error) { case 1: SysNotifyMgr.Instance.ShowTip("FairyGrabBossNoFairy"); break; case 3: SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen"); break; case 2: FuncOpen.Instance.ProcessorFuncErrorTip(139); break; case 4: var dataMapId = dungeonModel.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId); var tip = string.Empty; if (dataMapId == BossHomeModel.BOSSHOME_MAPID) { var vipLevel = PlayerDatas.Instance.baseData.VIPLv; var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1); if (vipLevel < vipNeed) { var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1); var dungeonId = dungeonModel.DungeonMap(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed); } else { tip = Language.Get(config.ExitDescription); } } else { tip = Language.Get(config.ExitDescription); } ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), tip, (bool _ok) => { if (_ok) { WindowCenter.Instance.Close<LootPreciousFrameWin>(); MapTransferUtility.Instance.MoveToNPC(selectBoss); } } ); break; case 5: SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo"); break; case 6: SysNotifyMgr.Instance.ShowTip("Map_Delivery"); break; } } public class FairyGrabBossInfo { public int npcId { get; private set; } System/FairyAu/FairyGrabBossWin.cs
@@ -48,7 +48,7 @@ DisplaySurplusTime(); DisplayBossInfo(); DisplayHighestFairy(); model.QueryGrabBossProgress(true); model.QueryGrabBossProgress(); GlobalTimeEvent.Instance.secondEvent += SecondEvent; model.bossSelectedEvent += BossSelectedEvent; model.bossProgressUpdate += BossProgressUpdate; @@ -171,7 +171,7 @@ private void Goto() { var error = 0; if (TestEnterDungeon(out error)) if (model.TestEnterDungeon(model.selectBoss, out error)) { WindowJumpMgr.Instance.ClearJumpData(); WindowCenter.Instance.Close<LootPreciousFrameWin>(); @@ -179,98 +179,8 @@ } else { switch (error) { case 1: SysNotifyMgr.Instance.ShowTip("FairyGrabBossNoFairy"); break; case 3: SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen"); break; case 2: FuncOpen.Instance.ProcessorFuncErrorTip(139); break; case 4: var dataMapId = dungeonModel.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId); var tip = string.Empty; if (dataMapId == BossHomeModel.BOSSHOME_MAPID) { var vipLevel = PlayerDatas.Instance.baseData.VIPLv; var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1); if (vipLevel < vipNeed) { var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1); var dungeonId = dungeonModel.DungeonMap(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed); } else { tip = Language.Get(config.ExitDescription); } } else { tip = Language.Get(config.ExitDescription); } ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), tip, (bool _ok) => { if (_ok) { WindowCenter.Instance.Close<LootPreciousFrameWin>(); MapTransferUtility.Instance.MoveToNPC(model.selectBoss); } } ); break; case 5: SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo"); break; } model.DisplayErrorTip(error); } } private bool TestEnterDungeon(out int _error) { if (!model.InActivityTime) { _error = 3; return false; } if (!PlayerDatas.Instance.fairyData.HasFairy) { _error = 1; return false; } if (!FuncOpen.Instance.IsFuncOpen(139)) { _error = 2; return false; } var mapId = PlayerDatas.Instance.baseData.MapID; var dataMapId = dungeonModel.GetDungeonDataIdByMapId(mapId); if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID) { _error = 4; return false; } var mapConfig = Config.Instance.Get<MapConfig>(mapId); if (mapConfig.MapFBType != (int)MapType.OpenCountry) { _error = 5; return false; } _error = 0; return true; } private void KillRecord() System/Message/RichMoveEvent.cs
@@ -46,7 +46,7 @@ { int id = int.Parse(href.mSplits["movenpc"]); var error = 0; if (MoveNpcLimit(id, out error)) if (!TestMoveNpc(id, out error)) { ProcessMoveNpcError(error); return false; @@ -224,26 +224,20 @@ _hero.MoveToPosition(pos); } private bool MoveNpcLimit(int npcId, out int error) private bool TestMoveNpc(int npcId, out int error) { error = 0; var _fairyGrabBossModel = ModelCenter.Instance.GetModel<FairyGrabBossModel>(); if (_fairyGrabBossModel.bosses.Contains(npcId) && !_fairyGrabBossModel.InActivityTime) if (_fairyGrabBossModel.bosses.Contains(npcId)) { error = 1; return true; return _fairyGrabBossModel.TestEnterDungeon(npcId, out error); } return false; return true; } void ProcessMoveNpcError(int error) { switch (error) { case 1: SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen"); break; } var _fairyGrabBossModel = ModelCenter.Instance.GetModel<FairyGrabBossModel>(); _fairyGrabBossModel.DisplayErrorTip(error); } }