Skip to content

Commit 1ecf28a

Browse files
committed
More EventMgr work
1 parent 518a76a commit 1ecf28a

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

ElunaMgr.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66

77
#include "ElunaMgr.h"
8+
#include "LuaEngine.h"
89

910
ElunaMgr::ElunaMgr()
1011
{
@@ -29,7 +30,7 @@ void ElunaMgr::Create(Map* map, ElunaInfo const& info)
2930
_elunaMap.emplace(info.key, std::make_unique<Eluna>(map));
3031
}
3132

32-
Eluna* ElunaMgr::Get(uint64_t key) const
33+
Eluna* ElunaMgr::Get(uint64 key) const
3334
{
3435
auto it = _elunaMap.find(key);
3536
if (it != _elunaMap.end())
@@ -43,7 +44,7 @@ Eluna* ElunaMgr::Get(ElunaInfo const& info) const
4344
return Get(info.key);
4445
}
4546

46-
void ElunaMgr::Destroy(uint64_t key)
47+
void ElunaMgr::Destroy(uint64 key)
4748
{
4849
_elunaMap.erase(key);
4950
}
@@ -55,5 +56,14 @@ void ElunaMgr::Destroy(ElunaInfo const& info)
5556

5657
Eluna* ElunaInfo::GetEluna() const
5758
{
58-
return sElunaMgr->Get(key);
59+
if (sElunaMgr)
60+
return sElunaMgr->Get(key);
61+
62+
return nullptr;
63+
}
64+
65+
ElunaInfo::~ElunaInfo()
66+
{
67+
if (sElunaMgr)
68+
sElunaMgr->Destroy(key);
5969
}

ElunaMgr.h

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,25 @@
77
#ifndef _ELUNAMGR_H
88
#define _ELUNAMGR_H
99

10-
#include "LuaEngine.h"
11-
1210
#include <unordered_map>
1311
#include <memory>
1412

13+
class Eluna;
14+
1515
struct ElunaInfo
1616
{
17-
uint32_t mapId;
18-
uint32_t instanceId;
19-
uint64_t key;
17+
uint32 mapId;
18+
uint32 instanceId;
19+
uint64 key;
2020

21-
ElunaInfo(uint32_t map, uint32_t instance)
21+
ElunaInfo(uint32 map, uint32 instance)
2222
: mapId(map), instanceId(instance)
2323
{
24-
key = (static_cast<uint64_t>(mapId) << 32) | instanceId;
24+
key = (static_cast<uint64>(mapId) << 32) | instanceId;
2525
}
2626

27+
~ElunaInfo();
28+
2729
// Getter to fetch Eluna object
2830
Eluna* GetEluna() const;
2931
};
@@ -41,14 +43,14 @@ class ElunaMgr
4143

4244
void Create(Map* map, ElunaInfo const& info);
4345

44-
Eluna* Get(uint64_t key) const;
46+
Eluna* Get(uint64 key) const;
4547
Eluna* Get(ElunaInfo const& info) const;
4648

47-
void Destroy(uint64_t key);
49+
void Destroy(uint64 key);
4850
void Destroy(ElunaInfo const& info);
4951

5052
private:
51-
std::unordered_map<uint64_t, std::unique_ptr<Eluna>> _elunaMap;
53+
std::unordered_map<uint64, std::unique_ptr<Eluna>> _elunaMap;
5254
};
5355

5456
#define sElunaMgr ElunaMgr::instance()

0 commit comments

Comments
 (0)