TrinityCore
Loading...
Searching...
No Matches
MapInstanced.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 TRINITY_MAP_INSTANCED_H
19#define TRINITY_MAP_INSTANCED_H
20
21#include "DBCEnums.h"
22#include "InstanceSaveMgr.h"
23#include "Map.h"
24#include "UniqueTrackablePtr.h"
25
27{
28 friend class MapManager;
29 public:
30 typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Map>> InstancedMaps;
31
32 MapInstanced(uint32 id, time_t expiry);
34
35 // functions overwrite Map versions
36 void Update(uint32 diff) override;
37 void DelayedUpdate(uint32 diff) override;
38 //void RelocationNotify();
39 void UnloadAll() override;
40 EnterState CannotEnter(Player* /*player*/) override;
41
42 Map* CreateInstanceForPlayer(uint32 mapId, Player* player, uint32 loginInstanceId = 0);
43 Map* FindInstanceMap(uint32 instanceId) const
44 {
45 InstancedMaps::const_iterator i = m_InstancedMaps.find(instanceId);
46 return(i == m_InstancedMaps.end() ? nullptr : i->second.get());
47 }
48 bool DestroyInstance(InstancedMaps::iterator &itr);
49
51 {
52 ++GridMapReference[p.x_coord][p.y_coord];
54 }
55
57 {
58 --GridMapReference[p.x_coord][p.y_coord];
59 if (!GridMapReference[p.x_coord][p.y_coord])
61 }
62
63 InstancedMaps &GetInstancedMaps() { return m_InstancedMaps; }
64 virtual void InitVisibilityDistance() override;
65
66 private:
67 InstanceMap* CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty, TeamId InstanceTeam);
68 BattlegroundMap* CreateBattleground(uint32 InstanceId, Battleground* bg);
69
71
73};
74#endif
Difficulty
Definition DBCEnums.h:279
#define TC_GAME_API
Definition Define.h:114
uint16_t uint16
Definition Define.h:134
uint32_t uint32
Definition Define.h:133
CoordPair< MAX_NUMBER_OF_GRIDS > GridCoord
#define MAX_NUMBER_OF_GRIDS
Definition GridDefines.h:36
TeamId
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Map > > InstancedMaps
InstancedMaps m_InstancedMaps
Map * FindInstanceMap(uint32 instanceId) const
void RemoveGridMapReference(GridCoord const &p)
void AddGridMapReference(GridCoord const &p)
InstancedMaps & GetInstancedMaps()
Definition Map.h:281
virtual void DelayedUpdate(uint32 diff)
Definition Map.cpp:3523
virtual void UnloadAll()
Definition Map.cpp:1745
virtual EnterState CannotEnter(Player *)
Definition Map.h:408
void SetUnloadReferenceLock(GridCoord const &p, bool on)
Definition Map.h:669
virtual void Update(uint32)
Definition Map.cpp:762
virtual void InitVisibilityDistance()
Definition Map.cpp:302
uint32 x_coord
uint32 y_coord