#define _CRT_SECURE_NO_DEPRECATE #ifndef _CRT_SECURE_NO_WARNINGS // fuck the police^Wwarnings #define _CRT_SECURE_NO_WARNINGS #endif #ifndef MPQ_H #define MPQ_H #include #include #include #include #include #include "StormLib.h" #ifdef _WIN32 #include // mainly only HANDLE definition is required typedef __int64 int64; typedef __int32 int32; typedef __int16 int16; typedef __int8 int8; typedef unsigned __int64 uint64; typedef unsigned __int32 uint32; typedef unsigned __int16 uint16; typedef unsigned __int8 uint8; #else #include #ifndef uint64_t #ifdef __linux__ #include #endif #endif typedef int64_t int64; typedef int32_t int32; typedef int16_t int16; typedef int8_t int8; typedef uint64_t uint64; typedef uint32_t uint32; typedef uint16_t uint16; typedef uint8_t uint8; typedef void* HANDLE; #endif using namespace std; class MPQFile { //MPQHANDLE handle; bool eof; char* buffer; size_t pointer, size; // disable copying MPQFile(const MPQFile& f); void operator=(const MPQFile& f); public: MPQFile(HANDLE mpq, const char* filename); // filenames are not case sensitive ~MPQFile() { close(); } size_t read(void* dest, size_t bytes); size_t getSize() { return size; } size_t getPos() { return pointer; } char* getBuffer() { return buffer; } char* getPointer() { return buffer + pointer; } bool isEof() { return eof; } void seek(int offset); void seekRelative(int offset); void close(); }; inline void flipcc(char* fcc) { char t; t = fcc[0]; fcc[0] = fcc[3]; fcc[3] = t; t = fcc[1]; fcc[1] = fcc[2]; fcc[2] = t; } #endif