TrinityCore
ScenarioMgr.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 ScenarioMgr_h__
19#define ScenarioMgr_h__
20
21#include "Common.h"
22#include "Hash.h"
23#include "SharedDefines.h"
24#include <map>
25#include <unordered_map>
26#include <vector>
27
28class InstanceMap;
30struct ScenarioEntry;
32
34{
36 std::map<uint8, ScenarioStepEntry const*> Steps;
37};
38
39/*
40 Scenario data should be loaded on demand.
41 The server will get data from the database which scenario ids is linked with which map id/difficulty/player team.
42 The first time a scenario is loaded, the map loads and stores the scenario data for future scenario instance launches.
43*/
44
46{
51};
52
53typedef std::unordered_map<std::pair<uint32, uint8>, ScenarioDBData> ScenarioDBDataContainer;
54typedef std::map<uint32, ScenarioData> ScenarioDataContainer;
55
57{
62};
63
65{
69
70 ScenarioPOIPoint() : X(0), Y(0), Z(0) { }
71 ScenarioPOIPoint(int32 x, int32 y, int32 z) : X(x), Y(y), Z(z) { }
72};
73
75{
84 std::vector<ScenarioPOIPoint> Points;
85
87
88 ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID,
89 int32 playerConditionID, int32 navigationPlayerConditionID, std::vector<ScenarioPOIPoint> points) :
90 BlobIndex(blobIndex), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
91 PlayerConditionID(playerConditionID), NavigationPlayerConditionID(navigationPlayerConditionID), Points(std::move(points)) { }
92
93 ScenarioPOI(ScenarioPOI&& scenarioPOI) = default;
94};
95
96typedef std::vector<ScenarioPOI> ScenarioPOIVector;
97typedef std::unordered_map<uint32, ScenarioPOIVector> ScenarioPOIContainer;
98
100{
101private:
104
105public:
106 static ScenarioMgr* Instance();
107
108 InstanceScenario* CreateInstanceScenario(InstanceMap* map, TeamId team) const;
109
110 void LoadDBData();
111 void LoadDB2Data();
112 void LoadScenarioPOI();
113
114 ScenarioPOIVector const* GetScenarioPOIs(int32 criteriaTreeID) const;
115
116private:
120
121 ScenarioMgr(ScenarioMgr const&) = delete;
123};
124
125#define sScenarioMgr ScenarioMgr::Instance()
126
127#endif // ScenarioMgr_h__
#define TC_GAME_API
Definition: Define.h:123
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
uint16 flags
Definition: DisableMgr.cpp:49
std::map< uint32, ScenarioData > ScenarioDataContainer
Definition: ScenarioMgr.h:54
std::unordered_map< std::pair< uint32, uint8 >, ScenarioDBData > ScenarioDBDataContainer
Definition: ScenarioMgr.h:53
std::vector< ScenarioPOI > ScenarioPOIVector
Definition: ScenarioMgr.h:96
std::unordered_map< uint32, ScenarioPOIVector > ScenarioPOIContainer
Definition: ScenarioMgr.h:97
ScenarioType
Definition: ScenarioMgr.h:57
@ SCENARIO_TYPE_SOLO
Definition: ScenarioMgr.h:60
@ SCENARIO_TYPE_CHALLENGE_MODE
Definition: ScenarioMgr.h:59
@ SCENARIO_TYPE_SCENARIO
Definition: ScenarioMgr.h:58
@ SCENARIO_TYPE_DUNGEON
Definition: ScenarioMgr.h:61
TeamId
ScenarioMgr & operator=(ScenarioMgr const &)=delete
ScenarioDataContainer _scenarioData
Definition: ScenarioMgr.h:117
ScenarioDBDataContainer _scenarioDBData
Definition: ScenarioMgr.h:119
ScenarioPOIContainer _scenarioPOIStore
Definition: ScenarioMgr.h:118
ScenarioMgr(ScenarioMgr const &)=delete
STL namespace.
uint8 DifficultyID
Definition: ScenarioMgr.h:48
uint32 Scenario_H
Definition: ScenarioMgr.h:50
uint32 Scenario_A
Definition: ScenarioMgr.h:49
std::map< uint8, ScenarioStepEntry const * > Steps
Definition: ScenarioMgr.h:36
ScenarioEntry const * Entry
Definition: ScenarioMgr.h:35
ScenarioPOIPoint(int32 x, int32 y, int32 z)
Definition: ScenarioMgr.h:71
int32 NavigationPlayerConditionID
Definition: ScenarioMgr.h:83
std::vector< ScenarioPOIPoint > Points
Definition: ScenarioMgr.h:84
int32 Flags
Definition: ScenarioMgr.h:80
int32 Priority
Definition: ScenarioMgr.h:79
int32 PlayerConditionID
Definition: ScenarioMgr.h:82
ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, int32 playerConditionID, int32 navigationPlayerConditionID, std::vector< ScenarioPOIPoint > points)
Definition: ScenarioMgr.h:88
ScenarioPOI(ScenarioPOI &&scenarioPOI)=default
int32 UiMapID
Definition: ScenarioMgr.h:78
int32 WorldEffectID
Definition: ScenarioMgr.h:81
int32 BlobIndex
Definition: ScenarioMgr.h:76
int32 MapID
Definition: ScenarioMgr.h:77