File tree Expand file tree Collapse file tree 2 files changed +25
-13
lines changed
Expand file tree Collapse file tree 2 files changed +25
-13
lines changed Original file line number Diff line number Diff line change 55*/
66
77#include " ElunaMgr.h"
8+ #include " LuaEngine.h"
89
910ElunaMgr::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
5657Eluna* 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}
Original file line number Diff line number Diff line change 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+
1515struct 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
5052private:
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 ()
You can’t perform that action at this time.
0 commit comments