128 lines
3.8 KiB
C++
128 lines
3.8 KiB
C++
#pragma once
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
#include "MapTypes.h"
|
|
#include <TriggerInfoManager.h>
|
|
|
|
class GameZone;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
class WiseMapInfo
|
|
{
|
|
public: WiseMapInfo(EngineInstances& rINSTANCE) : m_rINSTANCE(rINSTANCE) { ; }
|
|
~WiseMapInfo() { _Clear(); }
|
|
|
|
public: TERRAIN_ID_T Create(CWzArchive& archive, MAPCODE mcCODE);
|
|
static BOOL ConstructInstance(MAPCODE mcCODE, GameZone*& IN OUT rpGameZone);
|
|
static BOOL DestructInstance(GameZone*& IN OUT rpGameZone);
|
|
|
|
private: inline MapFieldInfo* FindMapFieldInfo(FIELDCODE fcCODE);
|
|
inline MapWmoInfo* FindMapWmoInfo(FIELDCODE fcCODE);
|
|
inline sSharedFieldInfo* FindSharedMapInfo(FIELDCODE fcFIELD, FIELDCODE fcWMO);
|
|
inline void AddMapFieldInfo(FIELDCODE fcCODE, MapFieldInfo* pINFO);
|
|
inline void AddMapWmoInfo(FIELDCODE fcCODE, MapWmoInfo* pINFO);
|
|
void AddSharedMapInfo(FIELDCODE fcFIELD, MapFieldInfo* pFIELD, FIELDCODE fcWMO, MapWmoInfo* pWMO);
|
|
|
|
BOOL _CheckVersion_MAPnWMO(DWORD verMAP, DWORD verWMO);
|
|
void _Clear();
|
|
void _Destroy();
|
|
|
|
private: EngineInstances& m_rINSTANCE;
|
|
MAP_CONTAINER_HASH m_MAP_CONTAINER_HASH;
|
|
SHARED_FIELD_INFO_HASH m_SHARED_FIELD_HASH;
|
|
MAP_FIELD_INFO_HASH m_MAP_FIELD_HASH;
|
|
MAP_WMO_INFO_HASH m_MAP_WMO_HASH;
|
|
};
|
|
|
|
MapFieldInfo* WiseMapInfo::FindMapFieldInfo(FIELDCODE fcCODE)
|
|
{
|
|
MapFieldInfo* pINFO = NULL;
|
|
|
|
MAP_FIELD_INFO_HASH_IT itFIND = m_MAP_FIELD_HASH.find(fcCODE);
|
|
if(itFIND != m_MAP_FIELD_HASH.end())
|
|
pINFO = itFIND->second;
|
|
|
|
return pINFO;
|
|
}
|
|
|
|
MapWmoInfo* WiseMapInfo::FindMapWmoInfo(FIELDCODE fcCODE)
|
|
{
|
|
MapWmoInfo* pINFO = NULL;
|
|
|
|
MAP_WMO_INFO_HASH_IT itFIND = m_MAP_WMO_HASH.find(fcCODE);
|
|
if(itFIND != m_MAP_WMO_HASH.end())
|
|
pINFO = itFIND->second;
|
|
|
|
return pINFO;
|
|
}
|
|
|
|
sSharedFieldInfo* WiseMapInfo::FindSharedMapInfo(FIELDCODE fcFIELD, FIELDCODE fcWMO)
|
|
{
|
|
sSharedFieldInfo* pINFO = NULL;
|
|
|
|
uFIELD_ID uID;
|
|
uID.FIELD = fcFIELD;
|
|
uID.WMO = fcWMO;
|
|
|
|
SHARED_FIELD_INFO_HASH_IT itFIND = m_SHARED_FIELD_HASH.find(uID.ID);
|
|
if(itFIND != m_SHARED_FIELD_HASH.end())
|
|
{
|
|
sSharedFieldInfo& rINFO = (itFIND->second);
|
|
return &rINFO;
|
|
}
|
|
|
|
return pINFO;
|
|
}
|
|
|
|
void WiseMapInfo::AddMapFieldInfo(FIELDCODE fcCODE, MapFieldInfo* pINFO)
|
|
{
|
|
m_MAP_FIELD_HASH.insert(make_pair(fcCODE, pINFO));
|
|
}
|
|
|
|
void WiseMapInfo::AddMapWmoInfo(FIELDCODE fcCODE, MapWmoInfo* pINFO)
|
|
{
|
|
m_MAP_WMO_HASH.insert(make_pair(fcCODE, pINFO));
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
////
|
|
//class WiseMapInfo
|
|
//{
|
|
//public: WiseMapInfo(EngineInstances& rINSTANCE) : m_rINSTANCE(rINSTANCE), m_pWorldBase(NULL), m_wVersion(0) { m_FIELD_ID.ID = 0; }
|
|
// ~WiseMapInfo() { _Clear(); }
|
|
//
|
|
//public: BOOL Create(MAPCODE mcCODE);
|
|
// BOOL Create(const CHAR* pszFieldPath, FIELDCODE fcFIELD, FIELDCODE fcWMO, BOOL bUsePathEngine);
|
|
// inline
|
|
// CWorldBase& EIWORLDBASE() { return *m_pWorldBase; }
|
|
// inline
|
|
// FIELDCODE CODEofFIELD() { return m_FIELD_ID.FIELD; }
|
|
// inline
|
|
// FIELDCODE CODEofWMO() { return m_FIELD_ID.WMO; }
|
|
// inline
|
|
// DWORD GUIDofFIELD() { return m_FIELD_ID.ID; }
|
|
// inline
|
|
// TriggerInfoManager& ManagerOfTriggerInfo() { return m_TriggerInfoManager; }
|
|
//
|
|
//private: BOOL _Load(const CHAR* pszFieldPath);
|
|
// BOOL _Load_WMO(CWzArchive& archive);
|
|
// BOOL _Load_WMO_MAPOBJECT(CWzArchive& archive);
|
|
// BOOL _Load_WMO_TRIGGER(CWzArchive& archive);
|
|
// BOOL _CheckVersion_MAPnWMO(DWORD verMAP, DWORD verWMO);
|
|
// void _Clear();
|
|
// void _Destroy();
|
|
//
|
|
//private: EngineInstances& m_rINSTANCE;
|
|
// CWorldBase* m_pWorldBase;
|
|
// uFIELD_ID m_FIELD_ID;
|
|
// WORD m_wVersion; // Field Version
|
|
// MAPOBJECT_INFO_HASH m_MapObjHash;
|
|
//
|
|
//#ifdef __NA_000360_20070323_TRIGGER_LIBRARY
|
|
// TriggerInfoManager m_TriggerInfoManager;
|
|
//#endif //
|
|
//};
|