2018-03-29 17:01:57 -04:00
|
|
|
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
#include <StdAfx.h>
|
2018-03-29 17:01:57 -04:00
|
|
|
#include "Globals.h"
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
#include "TurbineData.h"
|
|
|
|
|
#include "TurbineObject.h"
|
|
|
|
|
|
|
|
|
|
TurbineData::TurbineData()
|
|
|
|
|
{
|
|
|
|
|
m_dwVersion = 0;
|
|
|
|
|
m_mFileInfo.clear();
|
2019-07-07 20:56:15 +00:00
|
|
|
//m_strPath = csprintf("%s\\Data\\", g_pGlobals->GetGameDirectory());
|
2018-03-29 17:01:57 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TurbineData::~TurbineData()
|
|
|
|
|
{
|
|
|
|
|
CloseFile();
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
void TurbineData::FileFoundCallback(void *This, uint32_t dwFileID, BTEntry *pEntry)
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
|
|
|
|
((TurbineData *)This)->FileFoundCallbackInternal(dwFileID, pEntry);
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
void TurbineData::FileFoundCallbackInternal(uint32_t dwFileID, BTEntry *pEntry)
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
|
|
|
|
FILEINFO info;
|
|
|
|
|
info.dwPosition = pEntry->Offset_;
|
|
|
|
|
info.dwLength = pEntry->size_;
|
|
|
|
|
m_mFileInfo[dwFileID] = info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TurbineData::LoadFile(const char* szFile)
|
|
|
|
|
{
|
2018-04-22 11:05:24 -07:00
|
|
|
WINLOG(Temp, Normal, "Loading %s.. ", szFile);
|
2018-04-27 21:03:39 -07:00
|
|
|
SERVER_INFO << "Loading" << szFile;
|
2018-03-29 17:01:57 -04:00
|
|
|
|
|
|
|
|
m_strFile = szFile;
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
//std::string fullpath = m_strPath + "\\" + szFile;
|
|
|
|
|
std::string fullpath = g_pGlobals->GetGameData("Data", szFile);
|
2018-03-29 17:01:57 -04:00
|
|
|
m_pDATDisk = new DATDisk(fullpath.c_str());
|
|
|
|
|
|
|
|
|
|
if (!m_pDATDisk->Open())
|
|
|
|
|
{
|
2018-04-27 21:03:39 -07:00
|
|
|
SERVER_ERROR << "Error loading file" << fullpath.c_str();
|
2018-03-29 17:01:57 -04:00
|
|
|
SafeDelete(m_pDATDisk);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#ifndef _DEBUG
|
2018-04-25 20:57:54 -05:00
|
|
|
WINLOG(Temp, Normal, "mapping.. ");
|
2018-04-27 21:03:39 -07:00
|
|
|
SERVER_INFO << "mapping.. ";
|
2019-07-07 20:56:15 +00:00
|
|
|
m_pDATDisk->FindFileIDsWithinRange(0, (uint32_t)-1, FileFoundCallback, NULL, this);
|
2018-03-29 17:01:57 -04:00
|
|
|
#endif
|
|
|
|
|
|
2018-04-22 11:05:24 -07:00
|
|
|
WINLOG(Temp, Normal, "done!\n");
|
2018-04-27 21:03:39 -07:00
|
|
|
SERVER_INFO << szFile << "done! ";
|
2018-03-29 17:01:57 -04:00
|
|
|
#ifdef PRE_TOD_DATA_FILES
|
|
|
|
|
#else
|
2018-04-27 21:03:39 -07:00
|
|
|
SERVER_INFO << szFile << ": version" << m_pDATDisk->GetHeader()->VersionMinor << "," << m_mFileInfo.size() << "entries.";
|
2018-03-29 17:01:57 -04:00
|
|
|
#endif
|
2019-04-13 18:18:28 +00:00
|
|
|
m_iterFile = std::unique_ptr<TurbineFile>(GetFile(0xFFFF0001));
|
2018-03-29 17:01:57 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TurbineData::CloseFile()
|
|
|
|
|
{
|
|
|
|
|
SafeDelete(m_pDATDisk);
|
|
|
|
|
|
|
|
|
|
m_mFileInfo.clear();
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
BOOL TurbineData::FileExists(uint32_t dwID)
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
|
|
|
|
FILEMAP::iterator i = m_mFileInfo.find(dwID);
|
|
|
|
|
|
|
|
|
|
return (i != m_mFileInfo.end()) ? TRUE : FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-13 18:18:28 +00:00
|
|
|
int TurbineData::CompareIteration(BYTE *data)
|
|
|
|
|
{
|
|
|
|
|
return memcmp(data, m_iterFile->GetData(), m_iterFile->GetLength());
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
TURBINEFILE *TurbineData::GetFile(uint32_t dwID)
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
|
|
|
|
DATEntry entry;
|
|
|
|
|
if (m_pDATDisk && m_pDATDisk->GetData(dwID, &entry))
|
|
|
|
|
{
|
|
|
|
|
return new TurbineFile(dwID, entry.Data, entry.Length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
uint32_t TurbineData::GetFileCount()
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
2019-07-07 20:56:15 +00:00
|
|
|
return (uint32_t)m_mFileInfo.size();
|
2018-03-29 17:01:57 -04:00
|
|
|
}
|
|
|
|
|
|
2019-07-07 20:56:15 +00:00
|
|
|
uint32_t TurbineData::GetVersion()
|
2018-03-29 17:01:57 -04:00
|
|
|
{
|
|
|
|
|
return m_dwVersion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FILEMAP *TurbineData::GetFiles()
|
|
|
|
|
{
|
|
|
|
|
return &m_mFileInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|