You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.8 KiB
81 lines
1.8 KiB
#pragma once |
|
#ifndef _MAPLIB_HEADER_ |
|
#define _MAPLIB_HEADER_ |
|
|
|
#ifndef CONST |
|
#define CONST const |
|
#endif |
|
typedef unsigned int UINT; |
|
|
|
#if (defined( __WIN32__ ) || defined( _WIN32 )) && !defined(MAPLIB_STATIC) |
|
# ifdef MAPLIB_EXPORTS |
|
# define MAPLIBEXPORT __declspec(dllexport) |
|
# else |
|
# define MAPLIBEXPORT __declspec(dllimport) |
|
# pragma comment(lib, "FFxiMapLib.lib") |
|
# endif |
|
# define MAPLIBPRIVATE |
|
#else |
|
# define MAPLIBEXPORT |
|
# define MAPLIBPRIVATE |
|
#endif |
|
|
|
|
|
|
|
namespace FFxiMapLib |
|
{ |
|
class ICallbackClass |
|
{ |
|
public: |
|
virtual bool HandleNewObject(char* ID, UINT NumIndexes, UINT NumVerteses, CONST void* pIndexData, CONST void* pVertexData) = 0; |
|
virtual bool HandleNewTexture(char* ID, char* pdata) = 0; |
|
virtual void HandleProgress(const char* pStage, UINT Progress, UINT Total) = 0; |
|
}; |
|
|
|
#pragma pack(push,1) |
|
typedef struct |
|
{ |
|
char id[16]; |
|
float fTransX,fTransY,fTransZ; |
|
float fRotX,fRotY,fRotZ; |
|
float fScaleX,fScaleY,fScaleZ; |
|
float fa,fb,fc,fd; |
|
long fe,ff,fg,fh,fi,fj,fk,fl; |
|
} OBJINFO; |
|
#pragma pack(pop) |
|
|
|
class MAPLIBEXPORT MapLib |
|
{ |
|
private: |
|
ICallbackClass* m_CallBack; |
|
UINT m_MapID; |
|
|
|
char m_ffxiDir[1024]; |
|
|
|
char* m_pDatData; |
|
UINT m_datSize; |
|
|
|
OBJINFO* m_ObjectMap; |
|
UINT m_ObjectMapCount; |
|
|
|
private: |
|
bool ParseDat(); |
|
bool ParseObject(char* pObject); |
|
UINT GetFtableID(UINT Table, UINT ID); |
|
public: |
|
MapLib(); |
|
virtual ~MapLib(); |
|
|
|
bool SetGamePath(const char* Path); |
|
bool LoadMap(UINT ZoneID); |
|
bool LoadMap(const char* DatPath); |
|
void FreeMap(); |
|
|
|
OBJINFO* GetObjectMap(UINT Index); |
|
UINT GetObjectMapCount(); |
|
|
|
void AddCallback(ICallbackClass* T); |
|
|
|
}; |
|
}; |
|
#endif
|
|
|