TrinityCore
Loading...
Searching...
No Matches
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;
32enum Difficulty : int16;
33
35{
37 std::map<uint8, ScenarioStepEntry const*> Steps;
38};
39
40/*
41 Scenario data should be loaded on demand.
42 The server will get data from the database which scenario ids is linked with which map id/difficulty/player team.
43 The first time a scenario is loaded, the map loads and stores the scenario data for future scenario instance launches.
44*/
45
53
54typedef std::unordered_map<std::pair<uint32, uint8>, ScenarioDBData> ScenarioDBDataContainer;
55typedef std::map<uint32, ScenarioData> ScenarioDataContainer;
56
64
66{
70
71 ScenarioPOIPoint() : X(0), Y(0), Z(0) { }
72 ScenarioPOIPoint(int32 x, int32 y, int32 z) : X(x), Y(y), Z(z) { }
73};
74
76{
85 std::vector<ScenarioPOIPoint> Points;
86
88
89 ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID,
90 int32 playerConditionID, int32 navigationPlayerConditionID, std::vector<ScenarioPOIPoint> points) :
91 BlobIndex(blobIndex), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
92 PlayerConditionID(playerConditionID), NavigationPlayerConditionID(navigationPlayerConditionID), Points(std::move(points)) { }
93
94 ScenarioPOI(ScenarioPOI&& scenarioPOI) = default;
95};
96
97typedef std::vector<ScenarioPOI> ScenarioPOIVector;
98typedef std::unordered_map<uint32, ScenarioPOIVector> ScenarioPOIContainer;
99
101{
102private:
105
106public:
107 ScenarioMgr(ScenarioMgr const&) = delete;
111
112 static ScenarioMgr* Instance();
113
114 InstanceScenario* CreateInstanceScenarioForTeam(InstanceMap* map, TeamId team) const;
115 InstanceScenario* CreateInstanceScenario(InstanceMap* map, uint32 scenarioID) const;
116
117 void LoadDBData();
118 void LoadDB2Data();
119 void LoadScenarioPOI();
120
121 ScenarioPOIVector const* GetScenarioPOIs(int32 criteriaTreeID) const;
122
123private:
127};
128
129#define sScenarioMgr ScenarioMgr::Instance()
130
131#endif // ScenarioMgr_h__
Difficulty
Definition DBCEnums.h:932
#define TC_GAME_API
Definition Define.h:129
int16_t int16
Definition Define.h:151
int32_t int32
Definition Define.h:150
uint32_t uint32
Definition Define.h:154
uint16 flags
std::map< uint32, ScenarioData > ScenarioDataContainer
Definition ScenarioMgr.h:55
std::unordered_map< std::pair< uint32, uint8 >, ScenarioDBData > ScenarioDBDataContainer
Definition ScenarioMgr.h:54
std::vector< ScenarioPOI > ScenarioPOIVector
Definition ScenarioMgr.h:97
std::unordered_map< uint32, ScenarioPOIVector > ScenarioPOIContainer
Definition ScenarioMgr.h:98
ScenarioType
Definition ScenarioMgr.h:58
@ SCENARIO_TYPE_SOLO
Definition ScenarioMgr.h:61
@ SCENARIO_TYPE_CHALLENGE_MODE
Definition ScenarioMgr.h:60
@ SCENARIO_TYPE_SCENARIO
Definition ScenarioMgr.h:59
@ SCENARIO_TYPE_DUNGEON
Definition ScenarioMgr.h:62
ScenarioMgr & operator=(ScenarioMgr const &)=delete
ScenarioDataContainer _scenarioData
ScenarioDBDataContainer _scenarioDBData
ScenarioPOIContainer _scenarioPOIStore
ScenarioMgr(ScenarioMgr const &)=delete
ScenarioMgr & operator=(ScenarioMgr &&)=delete
ScenarioMgr(ScenarioMgr &&)=delete
STL namespace.
Difficulty DifficultyID
Definition ScenarioMgr.h:49
uint32 Scenario_H
Definition ScenarioMgr.h:51
uint32 Scenario_A
Definition ScenarioMgr.h:50
std::map< uint8, ScenarioStepEntry const * > Steps
Definition ScenarioMgr.h:37
ScenarioEntry const * Entry
Definition ScenarioMgr.h:36
ScenarioPOIPoint(int32 x, int32 y, int32 z)
Definition ScenarioMgr.h:72
int32 NavigationPlayerConditionID
Definition ScenarioMgr.h:84
std::vector< ScenarioPOIPoint > Points
Definition ScenarioMgr.h:85
int32 Priority
Definition ScenarioMgr.h:80
int32 PlayerConditionID
Definition ScenarioMgr.h:83
ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, int32 playerConditionID, int32 navigationPlayerConditionID, std::vector< ScenarioPOIPoint > points)
Definition ScenarioMgr.h:89
ScenarioPOI(ScenarioPOI &&scenarioPOI)=default
int32 UiMapID
Definition ScenarioMgr.h:79
int32 WorldEffectID
Definition ScenarioMgr.h:82
int32 BlobIndex
Definition ScenarioMgr.h:77