TrinityCore
Loading...
Searching...
No Matches
SceneMgr.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef SceneMgr_h__
19#define SceneMgr_h__
20
21#include "Common.h"
22#include "Optional.h"
23#include "SceneDefines.h"
24#include <map>
25#include <memory>
26#include <vector>
27
28class Player;
29class WorldPacket;
30struct Position;
31struct SceneTemplate;
32
33using SceneTemplateByInstance = std::map<uint32, std::unique_ptr<SceneTemplate>>;
34
36{
37public:
38 SceneMgr(Player* player);
40
41 SceneMgr(SceneMgr const&) = delete;
42 SceneMgr(SceneMgr&&) = delete;
43
44 Player* GetPlayer() const { return _player; }
45
46 uint32 PlayScene(uint32 sceneId, Position const* position = nullptr);
47 uint32 PlaySceneByTemplate(SceneTemplate const* sceneTemplate, Position const* position = nullptr);
48 uint32 PlaySceneByPackageId(uint32 sceneScriptPackageId, EnumFlag<SceneFlag> playbackflags, Position const* position = nullptr);
49 void CancelScene(uint32 sceneInstanceID, bool removeFromMap = true);
50
51 void OnSceneTrigger(uint32 sceneInstanceID, std::string const& triggerName);
52 void OnSceneCancel(uint32 sceneInstanceID);
53 void OnSceneComplete(uint32 sceneInstanceID);
54
55 void RecreateScene(uint32 sceneScriptPackageId, EnumFlag<SceneFlag> playbackflags, Position const* position = nullptr)
56 {
57 CancelSceneByPackageId(sceneScriptPackageId);
58 PlaySceneByPackageId(sceneScriptPackageId, playbackflags, position);
59 }
60
61 bool HasScene(uint32 sceneInstanceID, uint32 sceneScriptPackageId = 0) const;
62
63 void AddInstanceIdToSceneMap(uint32 sceneInstanceID, SceneTemplate const* sceneTemplate);
64 void CancelSceneBySceneId(uint32 sceneId);
65 void CancelSceneByPackageId(uint32 sceneScriptPackageId);
66 void RemoveSceneInstanceId(uint32 sceneInstanceID);
67 void RemoveAurasDueToSceneId(uint32 sceneId);
68
69 SceneTemplate const* GetSceneTemplateFromInstanceId(uint32 sceneInstanceID) const;
70 uint32 GetActiveSceneCount(uint32 sceneScriptPackageId = 0) const;
71 SceneTemplateByInstance const& GetSceneTemplateByInstanceMap() const { return _scenesByInstance; }
72 Optional<uint32> GetInstanceIdBySceneId(uint32 sceneId) const;
73
74 uint32 GetNewStandaloneSceneInstanceID() { return ++_standaloneSceneInstanceID; }
75
76 void TriggerDelayedScenes();
77
78 void ToggleDebugSceneMode() { _isDebuggingScenes = !_isDebuggingScenes; }
79 bool IsInDebugSceneMode() const { return _isDebuggingScenes; }
80
81private:
85 std::vector<WorldPacket> _delayedScenes;
87};
88
89#endif // SceneMgr_h__
#define TC_GAME_API
Definition Define.h:129
uint32_t uint32
Definition Define.h:154
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
std::map< uint32, std::unique_ptr< SceneTemplate > > SceneTemplateByInstance
Definition SceneMgr.h:33
void ToggleDebugSceneMode()
Definition SceneMgr.h:78
SceneMgr(SceneMgr &&)=delete
Player * _player
Definition SceneMgr.h:82
uint32 GetNewStandaloneSceneInstanceID()
Definition SceneMgr.h:74
std::vector< WorldPacket > _delayedScenes
Definition SceneMgr.h:85
uint32 _standaloneSceneInstanceID
Definition SceneMgr.h:84
SceneMgr(SceneMgr const &)=delete
SceneTemplateByInstance const & GetSceneTemplateByInstanceMap() const
Definition SceneMgr.h:71
void RecreateScene(uint32 sceneScriptPackageId, EnumFlag< SceneFlag > playbackflags, Position const *position=nullptr)
Definition SceneMgr.h:55
bool IsInDebugSceneMode() const
Definition SceneMgr.h:79
SceneTemplateByInstance _scenesByInstance
Definition SceneMgr.h:83
Player * GetPlayer() const
Definition SceneMgr.h:44
bool _isDebuggingScenes
Definition SceneMgr.h:86