123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
#include "uop.h" #include <SDL/SDL_endian.h> #include "patchhandler.h" #include "uopconfig.h" #include "gumps.h" extern UOPConfig *config; extern Gumps *gumps; PatchHandler::PatchHandler() { } PatchHandler::~PatchHandler() { } void PatchHandler::load() { string patchfname=config->encapDatLoc("verdata.mul"); patchfile.open(patchfname.c_str(),ios::in|ios::binary); if (!patchfile.is_open()) return; Uint8 buffer[20]; patchfile.read((char*)buffer,4); Uint32 len=SDL_SwapLE32(*(Uint32 *)buffer); while (len--) { patchfile.read((char*)buffer,20); Uint32 id=SDL_SwapLE32(*(Uint32 *)buffer); Uint32 i=SDL_SwapLE32(*(Uint32 *)(buffer+4)); switch (id) { case 0x0c: //gump { GumpIndex gump; gump.offset=SDL_SwapLE32(*(Uint32 *)(buffer+8)); gump.size=SDL_SwapLE32(*(Uint32 *)(buffer+12)); gump.height=SDL_SwapLE16(*(Uint16 *)(buffer+16)); gump.width=SDL_SwapLE16(*(Uint16 *)(buffer+18)); gumps->setIndex(i,gump); } break; default: break; } } patchfile.close(); }