Filter:   InfoImg
download patchhandler.cc
Language: C++
LOC: 45
Project Info
Ultima Online Project(uop)
Server: SourceForge
Type: cvs
SourceForge\u\uop\uop\uop\
   acinclude.m4
   aclocal.m4
   action.cc
   action.h
   animation.cc
   animation.h
   artexport.cc
   artfactory.cc
   artfactory.h
   audio.cc
   audio.h
   btree.cc
   btree.h
   cache.h
   cliloc.cc
   cliloc.h
   config.h.in
   configure.in
   cvs2cl.pl
   entity.cc
   entity.h
   gumps.cc
   gumps.h
   interface.cc
   interface.h
   interfacegumps.cc
   interfacegumps.h
   interfacehandler.cc
   interfacehandler.h
   intrface.def
   Makefile.am
   Makefile.in
   message.cc
   message.h
   musicmap.def
   network.cc
   network.h
   patchhandler.cc
   patchhandler.h
   readable.pl
   serverhandler.cc
   serverhandler.h
   sprite.cc
   sprite.h
   stamp-h.in
   texthandler.cc
   texthandler.h
   tiledata.cc
   tiledata.h
   unreadable.pl
   uop.cc
   uop.cfg
   uop.dox
   uop.h
   uopconfig.cc
   uopconfig.h
   uosprite.h
   uostub.pl
   world.cc
   world.h

#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();
}