aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfunjoker <torti-esser@web.de>2017-05-06 13:28:03 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-05-06 13:28:03 +0200
commit0c3c5dd0e11cfa2016d8b4e0f721fa62a3b20c2e (patch)
tree59617d267d02020878743155074e90e25419fcd3 /src
parent2abfaecf0c895f2f1cef7024f99ed52f7d74c852 (diff)
Core/Player: Fix Scene blackscreen (#19473)
* Move Flags from DBCEnums.h to SceneMgr.h (nothing to do with any DB2) * Send SMSG_CANCEL_SCENE if scene ends (canceled or completed)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DBCEnums.h9
-rw-r--r--src/server/game/Entities/Player/SceneMgr.cpp6
-rw-r--r--src/server/game/Entities/Player/SceneMgr.h11
3 files changed, 16 insertions, 10 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 29bedcfc0a0..3d74d87afff 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -958,13 +958,4 @@ enum CurrencyTypes
CURRENCY_TYPE_ARTIFACT_KNOWLEDGE = 1171,
};
-enum SceneFlags
-{
- SCENEFLAG_UNK1 = 0x01,
- SCENEFLAG_UNK2 = 0x02,
- SCENEFLAG_NOT_CANCELABLE = 0x04,
- SCENEFLAG_UNK8 = 0x08,
- SCENEFLAG_UNK16 = 0x10, // 16, most common value
-};
-
#endif
diff --git a/src/server/game/Entities/Player/SceneMgr.cpp b/src/server/game/Entities/Player/SceneMgr.cpp
index d92f531cdea..8ecdcf0348e 100644
--- a/src/server/game/Entities/Player/SceneMgr.cpp
+++ b/src/server/game/Entities/Player/SceneMgr.cpp
@@ -121,6 +121,9 @@ void SceneMgr::OnSceneCancel(uint32 sceneInstanceID)
RemoveAurasDueToSceneId(sceneTemplate->SceneId);
sScriptMgr->OnSceneCancel(GetPlayer(), sceneInstanceID, sceneTemplate);
+
+ if (sceneTemplate->PlaybackFlags & SCENEFLAG_CANCEL_AT_END)
+ CancelScene(sceneInstanceID, false);
}
void SceneMgr::OnSceneComplete(uint32 sceneInstanceID)
@@ -140,6 +143,9 @@ void SceneMgr::OnSceneComplete(uint32 sceneInstanceID)
RemoveAurasDueToSceneId(sceneTemplate->SceneId);
sScriptMgr->OnSceneComplete(GetPlayer(), sceneInstanceID, sceneTemplate);
+
+ if (sceneTemplate->PlaybackFlags & SCENEFLAG_CANCEL_AT_END)
+ CancelScene(sceneInstanceID, false);
}
bool SceneMgr::HasScene(uint32 sceneInstanceID, uint32 sceneScriptPackageId /*= 0*/) const
diff --git a/src/server/game/Entities/Player/SceneMgr.h b/src/server/game/Entities/Player/SceneMgr.h
index a87ea603bdd..0a7c13322cd 100644
--- a/src/server/game/Entities/Player/SceneMgr.h
+++ b/src/server/game/Entities/Player/SceneMgr.h
@@ -19,7 +19,16 @@
#define SceneMgr_h__
#include "Common.h"
-#include "DBCEnums.h"
+
+enum SceneFlags
+{
+ SCENEFLAG_UNK1 = 0x01,
+ SCENEFLAG_CANCEL_AT_END = 0x02,
+ SCENEFLAG_NOT_CANCELABLE = 0x04,
+ SCENEFLAG_UNK8 = 0x08,
+ SCENEFLAG_UNK16 = 0x10, // 16, most common value
+ SCENEFLAG_UNK32 = 0x20,
+};
class Player;
struct Position;