diff --git a/contrib/extractor/loadlib/adt.cpp b/contrib/extractor/loadlib/adt.cpp index 13039004989..2bbbb5505fa 100644 --- a/contrib/extractor/loadlib/adt.cpp +++ b/contrib/extractor/loadlib/adt.cpp @@ -53,7 +53,7 @@ bool ADT_file::prepareLoadedData() bool adt_MHDR::prepareLoadedData() { - if (fcc != uint32('MHDR')) + if (fcc != fcc_MHDR) return false; if (size != sizeof(adt_MHDR) - 8) @@ -72,7 +72,7 @@ bool adt_MHDR::prepareLoadedData() bool adt_MCIN::prepareLoadedData() { - if (fcc != uint32('MCIN')) + if (fcc != fcc_MCIN) return false; // Check cells data @@ -86,7 +86,7 @@ bool adt_MCIN::prepareLoadedData() bool adt_MH2O::prepareLoadedData() { - if (fcc != uint32('MH2O')) + if (fcc != fcc_MH2O) return false; // Check liquid data @@ -98,7 +98,7 @@ bool adt_MH2O::prepareLoadedData() bool adt_MCNK::prepareLoadedData() { - if (fcc != uint32('MCNK')) + if (fcc != fcc_MCNK) return false; // Check height map @@ -113,7 +113,7 @@ bool adt_MCNK::prepareLoadedData() bool adt_MCVT::prepareLoadedData() { - if (fcc != uint32('MCVT')) + if (fcc != fcc_MCVT) return false; if (size != sizeof(adt_MCVT) - 8) @@ -124,8 +124,5 @@ bool adt_MCVT::prepareLoadedData() bool adt_MCLQ::prepareLoadedData() { - if (fcc != uint32('MCLQ')) - return false; - - return true; + return fcc == fcc_MCLQ; } diff --git a/contrib/extractor/loadlib/adt.h b/contrib/extractor/loadlib/adt.h index 489b9653906..5f8a510c17e 100644 --- a/contrib/extractor/loadlib/adt.h +++ b/contrib/extractor/loadlib/adt.h @@ -18,21 +18,27 @@ enum LiquidType //************************************************************************************** // ADT file class //************************************************************************************** + #define ADT_CELLS_PER_GRID 16 #define ADT_CELL_SIZE 8 #define ADT_GRID_SIZE (ADT_CELLS_PER_GRID*ADT_CELL_SIZE) +#define fcc_MHDR 0x4d484452 // MHDR +#define fcc_MCIN 0x4d43494e // MCIN +#define fcc_MH2O 0x4d48324f // MH2O +#define fcc_MCNK 0x4d434e4b // MCNK +#define fcc_MCVT 0x4d435654 // MCVT +#define fcc_MCLQ 0x4d434c51 // MCLQ + // // Adt file height map chunk // class adt_MCVT { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; + public: float height_map[(ADT_CELL_SIZE + 1) * (ADT_CELL_SIZE + 1) + ADT_CELL_SIZE * ADT_CELL_SIZE]; @@ -44,12 +50,10 @@ class adt_MCVT // class adt_MCLQ { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; + public: float height1; float height2; @@ -75,12 +79,10 @@ class adt_MCLQ // class adt_MCNK { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; + public: uint32 flags; uint32 ix; @@ -136,12 +138,10 @@ class adt_MCNK // class adt_MCIN { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; + public: struct adt_CELLS { @@ -183,14 +183,11 @@ struct adt_liquid_header // class adt_MH2O { - public: - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; + public: struct adt_LIQUID { uint32 offsData1; @@ -256,14 +253,10 @@ class adt_MH2O // class adt_MHDR { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; uint32 size; - - uint32 pad; + uint32 flags; uint32 offsMCIN; // MCIN uint32 offsTex; // MTEX uint32 offsModels; // MMDX @@ -281,8 +274,8 @@ class adt_MHDR uint32 data5; public: bool prepareLoadedData(); - adt_MCIN* getMCIN() { return (adt_MCIN*)((uint8*)&pad + offsMCIN); } - adt_MH2O* getMH2O() { return offsMH2O ? (adt_MH2O*)((uint8*)&pad + offsMH2O) : 0; } + adt_MCIN* getMCIN() { return (adt_MCIN*)((uint8*)&flags + offsMCIN); } + adt_MH2O* getMH2O() { return offsMH2O ? (adt_MH2O*)((uint8*)&flags + offsMH2O) : 0; } }; class ADT_file : public FileLoader diff --git a/contrib/extractor/loadlib/loadlib.cpp b/contrib/extractor/loadlib/loadlib.cpp index 9461f820bf1..444884ba605 100644 --- a/contrib/extractor/loadlib/loadlib.cpp +++ b/contrib/extractor/loadlib/loadlib.cpp @@ -50,7 +50,7 @@ bool FileLoader::prepareLoadedData() { // Check version version = (file_MVER*) data; - if (version->fcc != uint32('MVER')) + if (version->fcc != fcc_MVER) return false; if (version->ver != FILE_FORMAT_VERSION) return false; diff --git a/contrib/extractor/loadlib/loadlib.h b/contrib/extractor/loadlib/loadlib.h index 399050184f5..7bbc983a156 100644 --- a/contrib/extractor/loadlib/loadlib.h +++ b/contrib/extractor/loadlib/loadlib.h @@ -29,24 +29,25 @@ typedef uint8_t uint8; #define FILE_FORMAT_VERSION 18 +#define fcc_MVER 0x4d564552 // MVER + // // File version chunk // + struct file_MVER { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + uint32 fcc; uint32 size; uint32 ver; }; class FileLoader { + private: uint8* data; uint32 data_size; + public: virtual bool prepareLoadedData(); uint8* GetData() {return data;} @@ -58,4 +59,5 @@ class FileLoader bool loadFile(char* filename, bool log = true); virtual void free(); }; + #endif diff --git a/contrib/extractor/loadlib/wdt.cpp b/contrib/extractor/loadlib/wdt.cpp index 7b9075e592d..2ca26ecb7fa 100644 --- a/contrib/extractor/loadlib/wdt.cpp +++ b/contrib/extractor/loadlib/wdt.cpp @@ -4,23 +4,17 @@ bool wdt_MWMO::prepareLoadedData() { - if (fcc != uint32('MWMO')) - return false; - return true; + return fcc == fcc_MWMO; } bool wdt_MPHD::prepareLoadedData() { - if (fcc != uint32('MPHD')) - return false; - return true; + return fcc == fcc_MPHD; } bool wdt_MAIN::prepareLoadedData() { - if (fcc != uint32('MAIN')) - return false; - return true; + return fcc == fcc_MAIN; } WDT_file::WDT_file() diff --git a/contrib/extractor/loadlib/wdt.h b/contrib/extractor/loadlib/wdt.h index bd025cbe968..c10a85d2324 100644 --- a/contrib/extractor/loadlib/wdt.h +++ b/contrib/extractor/loadlib/wdt.h @@ -5,15 +5,18 @@ //************************************************************************************** // WDT file class and structures //************************************************************************************** + #define WDT_MAP_SIZE 64 +#define fcc_MWMO 0x4d574d4f // MWMO +#define fcc_MPHD 0x4d504844 // MPHD +#define fcc_MAIN 0x4d41494e // MAIN + class wdt_MWMO { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; + public: uint32 size; bool prepareLoadedData(); @@ -21,14 +24,11 @@ class wdt_MWMO class wdt_MPHD { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; + public: uint32 size; - uint32 data1; uint32 data2; uint32 data3; @@ -42,14 +42,11 @@ class wdt_MPHD class wdt_MAIN { - union - { - uint32 fcc; - char fcc_txt[4]; - }; + private: + uint32 fcc; + public: uint32 size; - struct adtData { uint32 exist; @@ -62,7 +59,7 @@ class wdt_MAIN class WDT_file : public FileLoader { public: - bool prepareLoadedData(); + bool prepareLoadedData(); WDT_file(); ~WDT_file(); @@ -73,4 +70,4 @@ class WDT_file : public FileLoader wdt_MWMO* wmo; }; -#endif \ No newline at end of file +#endif