From 82931aabaaa3e479bc04e11630a77cd9c9dd5fe3 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 26 十月 2018 20:05:36 +0800
Subject: [PATCH] Merge branch 'master' into leonard
---
System/FairyAu/FairyGrabBossModel.cs | 80 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/System/FairyAu/FairyGrabBossModel.cs b/System/FairyAu/FairyGrabBossModel.cs
index 8bf9705..dd8aea6 100644
--- a/System/FairyAu/FairyGrabBossModel.cs
+++ b/System/FairyAu/FairyGrabBossModel.cs
@@ -80,6 +80,8 @@
public int noticeShowPet { get; private set; }
public int noticeShowHorse { get; private set; }
+ public int cacheGotoBossId { get; private set; }
+
private bool serverInited = false;
//private DateTime lastQueryProgressTime = DateTime.Now;
@@ -89,11 +91,13 @@
public event Action<int> bossProgressUpdate;
public event Action bossAllProgressUpdate;
public event Action bossGrabHintEvent;
+ public event Action gotoBossStateUpdate;
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>(); } }
+ PlayerDeadModel deadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } }
public override void Init()
{
@@ -109,6 +113,8 @@
GlobalTimeEvent.Instance.secondEvent += SecondEvent;
TimeMgr.Instance.OnMinuteEvent += MinuteEvent;
TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
+ deadModel.AllPlayerDieEvent += PlayerDieEvent;
+ deadModel.AllPlayerRebornEvent += AllPlayerRebornEvent;
OpenServerActivityCenter.Instance.Register(13, this);
}
@@ -138,6 +144,54 @@
GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
TimeMgr.Instance.OnMinuteEvent -= MinuteEvent;
TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
+ deadModel.AllPlayerDieEvent -= PlayerDieEvent;
+ deadModel.AllPlayerRebornEvent -= AllPlayerRebornEvent;
+ }
+
+ private void AllPlayerRebornEvent(H0419_tagPlayerReborn package)
+ {
+ if (package.PlayerID == PlayerDatas.Instance.PlayerId)
+ {
+ if (cacheGotoBossId != 0)
+ {
+ if (package.Type != 0)
+ {
+ cacheGotoBossId = 0;
+ }
+ if (gotoBossStateUpdate != null)
+ {
+ gotoBossStateUpdate();
+ }
+ }
+ }
+ }
+
+ private void PlayerDieEvent(uint playerId)
+ {
+ if (PlayerDatas.Instance.PlayerId != playerId)
+ {
+ return;
+ }
+ if (PlayerDatas.Instance.fairyData.HasFairy && FuncOpen.Instance.IsFuncOpen(139))
+ {
+ RecheckGrabBoss();
+ if (WindowCenter.Instance.IsOpen<FairyGrabBossHintWin>())
+ {
+ 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))
+ {
+ cacheGotoBossId = bossActor.NpcConfig.NPCID;
+ break;
+ }
+ }
+ }
+ }
+ }
}
private void OnServerOpenDayRefresh()
@@ -186,6 +240,7 @@
private void OnStageLoadFinish()
{
+ cacheGotoBossId = 0;
if (!(StageManager.Instance.CurrentStage is DungeonStage))
{
grabBossHintOpen = false;
@@ -257,6 +312,7 @@
return;
}
grabBossHintOpen = true;
+ cacheGotoBossId = 0;
if (!WindowCenter.Instance.IsOpen<FairyGrabBossHintWin>())
{
WindowCenter.Instance.Open<FairyGrabBossHintWin>();
@@ -264,6 +320,10 @@
if (bossGrabHintEvent != null)
{
bossGrabHintEvent();
+ }
+ if (gotoBossStateUpdate != null)
+ {
+ gotoBossStateUpdate();
}
}
@@ -291,6 +351,14 @@
if (fairyGrabBossHelpUpdate != null)
{
fairyGrabBossHelpUpdate();
+ }
+ }
+ if (cacheGotoBossId != 0)
+ {
+ cacheGotoBossId = 0;
+ if (gotoBossStateUpdate != null)
+ {
+ gotoBossStateUpdate();
}
}
}
@@ -461,6 +529,18 @@
return false;
}
+ public bool IsBossKilled(int bossId)
+ {
+ BossProgressInfo bossProgress;
+ bool killed = false;
+ if (TryGetBossProgress(bossId, out bossProgress))
+ {
+ var progress = 1 - (float)bossProgress.currentHp / bossProgress.totalHp;
+ killed = progress >= 1;
+ }
+ return killed;
+ }
+
public bool TestEnterDungeon(int bossId, out int _error)
{
if (!InActivityTime)
--
Gitblit v1.8.0