Filter:   InfoImg
download serverhandler.h
Language: C++
LOC: 246
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

// vim:ts=2 sw=2
#ifndef __SERVERHANDLER_H__
#define __SERVERHANDLER_H__

#include <string>
#include <SDL/SDL_types.h>

enum PacketType {
	PACKET_LOGIN,
	PACKET_LOGOUT,
	PACKET_REQ_MOVE,
	PACKET_SPEECH,
	PACKET_GODMODE_TOGGLE,
	PACKET_ATTACK,
	PACKET_REQ_OBJUSE,
	PACKET_REQ_GETOBJ,
	PACKET_REQ_DROPOBJ,
	PACKET_REQ_LOOK,
	PACKET_EDIT,
	PACKET_EDITAREA,
	PACKET_TILEDATA,
	PACKET_NPCDATA,
	PACKET_TEMPLATEDATA,
	PACKET_PAPERDOLL,
	PACKET_HUEDATA,
	PACKET_MOBILESTAT,
	PACKET_GODCOMMAND,
	PACKET_REQ_OBJEQUIP,
	PACKET_ELEVCHANGE,
	PACKET_FOLLOW,
	PACKET_REQUEST_SCRIPT_NAMES,
	PACKET_SCRIPT_TREE_CMD,
	PACKET_SCRIPT_ATTACH,
	PACKET_NPCCONVO_DATA,
	PACKET_MOVE,
	PACKET_LOGIN_CONFIRM,
	PACKET_TEXT,
	PACKET_DESTROY_OBJECT,
	PACKET_ANIMATE,
	PACKET_EXPLODE,
	PACKET_ZMOVE,
	PACKET_BLOCKED_MOVE,
	PACKET_OK_MOVE,
	PACKET_OBJMOVE,
	PACKET_OPEN_GUMP,
	PACKET_OBJ_TO_OBJ,
	PACKET_OLD_CLIENT,
	PACKET_GETOBJ_FAILED,
	PACKET_DROPOBJ_FAILED,
	PACKET_DROPOBJ_OK,
	PACKET_BLOOD,
	PACKET_GODMODE,
	PACKET_DEATH,
	PACKET_HEALTH,
	PACKET_EQUIP_ITEM,
	PACKET_SWING,
	PACKET_ATTACK_OK,
	PACKET_ATTACK_END,
	PACKET_HACK_MOVER,
	PACKET_GROUP,
	PACKET_CLIENTQUERY,
	PACKET_RESOURCETYPE,
	PACKET_RESOURCETILEDATA,
	PACKET_MOVEOBJECT,
	PACKET_FOLLOWMOVE,
	PACKET_GROUPS,
	PACKET_SKILLS,
	PACKET_OFFERACCEPT,
	PACKET_MULTI_OBJ_TO_OBJ,
	PACKET_SHIP,
	PACKET_VERSIONS,
	PACKET_UPD_OBJCHUNK,
	PACKET_UPD_TERRCHUNK,
	PACKET_UPD_TILEDATA,
	PACKET_UPD_ART,
	PACKET_UPD_ANIM,
	PACKET_UPD_HUES,
	PACKET_VER_OK,
	PACKET_NEW_ART,
	PACKET_NEW_TERR,
	PACKET_NEW_ANIM,
	PACKET_NEW_HUES,
	PACKET_DESTROY_ART,
	PACKET_CHECK_VER,
	PACKET_SCRIPT_NAMES,
	PACKET_SCRIPT_FILE,
	PACKET_LIGHTCHANGE,
	PACKET_SUNLIGHT,
	PACKET_BOARDHEADER,
	PACKET_BOARDMSG,
	PACKET_POSTMSG,
	PACKET_LOGIN_REJECT,
	PACKET_SOUND,
	PACKET_LOGIN_COMPLETE,
	PACKET_MAP_COMMAND,
	PACKET_UPD_REGIONS,
	PACKET_NEW_REGION,
	PACKET_NEW_CONTEXTFX,
	PACKET_UPD_CONTEXTFX,
	PACKET_GAMETIME,
	PACKET_RESTARTVER,
	PACKET_PRELOGIN,
	PACKET_SERVERLIST,
	PACKET_SERVERADD,
	PACKET_SERVERREMOVE,
	PACKET_DESTROY_STATIC,
	PACKET_MOVESTATIC,
	PACKET_AREA_LOAD,
	PACKET_AREA_LOAD_REQ,
	PACKET_WEATHERCHANGE,
	PACKET_BOOKPAGE,
	PACKET_SIMPED,
	PACKET_SCRIPT_LS_ATTACH,
	PACKET_FRIENDS,
	PACKET_FRIENDNOTIFY,
	PACKET_KEY_USE,
	PACKET_TARGET,
	PACKET_MUSIC,
	PACKET_ANIM,
	PACKET_TRADE,
	PACKET_EFFECT,
	PACKET_BBOARD,
	PACKET_COMBAT,
	PACKET_PING,
	PACKET_SHOP_DATA,
	PACKET_RENAME_MOB,
	PACKET_SERVERCHANGE,
	PACKET_NAKED_MOB,
	PACKET_EQUIPPED_MOB,
	PACKET_RESOURCE_QUERY,
	PACKET_RESOURCE_DATA,
	PACKET_SEQUENCE,
	PACKET_OBJPICKER,
	PACKET_PICKEDOBJ,
	PACKET_GODVIEW_QUERY,
	PACKET_GODVIEW_DATA,
	PACKET_ACCT_LOGIN_REQ,
	PACKET_ACCT_LOGIN_OK,
	PACKET_ACCT_LOGIN_FAIL,
	PACKET_ACCT_DEL_CHAR,
	PACKET_CHG_CHAR_PW,
	PACKET_CHG_CHAR_RESULT,
	PACKET_ALL_CHARACTERS,
	PACKET_SEND_RESOURCES,
	PACKET_OPEN_PAPERDOLL,
	PACKET_CORPSE_EQ,
	PACKET_TRIGGEREDIT,
	PACKET_DISPLAY_SIGN,
	PACKET_USER_SERVER,
	PACKET_UNUSED3,
	PACKET_MOVE_CHARACTER,
	PACKET_UNUSED4,
	PACKET_OPEN_COURSEGUMP,
	PACKET_POSTLOGIN,
	PACKET_UPD_MULTI,
	PACKET_BOOKHDR,
	PACKET_UPD_SKILL,
	PACKET_HUEPICKER,
	PACKET_GAMECENT_MON,
	PACKET_PLAYERMOVE,
	PACKET_MOBNAME,
	PACKET_TARGET_MULTI,
	PACKET_TEXT_ENTRY,
	PACKET_REQUEST_ASSIST,
	PACKET_ASSIST_REQUEST,
	PACKET_GM_SINGLE,
	PACKET_SHOP_SELL,
	PACKET_SHOP_OFFER,
	PACKET_BRITANNIA_SELECT,
	PACKET_HP_HEALTH,
	PACKET_MANA_HEALTH,
	PACKET_FAT_HEALTH,
	PACKET_HARDWARE_INFO,
	PACKET_WEB_BROWSE,
	PACKET_MESSAGE,
	PACKET_REQ_TIP,
	PACKET_BRITANNIA_LIST,
	PACKET_CITIES_AND_CHARS,
	PACKET_CURRENT_TARGET,
	PACKET_STRING_QUERY,
	PACKET_STRING_RESPONSE,
	PACKET_SPEECH_UNICODE,
	PACKET_TEXT_UNICODE,
	PACKET_DEATH_ANIM,
	PACKET_GENERIC_GUMP,
	PACKET_GENGUMP_TRIG,
	PACKET_CHAT_MSG,
	PACKET_CHAT_TEXT,
	PACKET_TARGET_OBJLIST,
	PACKET_CHAT_OPEN,
	PACKET_HELP_REQUEST,
	PACKET_HELP_UNICODE_TEXT,
	PACKET_CHAR_PROFILE,
	PACKET_FEATURES,
	PACKET_POINTER,
	PACKET_ACCT_ID,
	PACKET_GAMESEASON,
	PACKET_CLIENTVERSION,
	PACKET_ASSISTVERSION,
	PACKET_GENERIC_COMMAND,
	PACKET_EFFECT_HUEDFX,
	PACKET_TEXT_ID,
	PACKET_TEXT_ENTRY_UNICODE,
	PACKET_GQ_REQUEST,
	PACKET_SEMIVISIBLE,
	PACKET_INVALIDMAP,
	PACKET_INVALIDMAP_ENABLE,
	PACKET_PARTICLE_EFFECT,
	PACKET_UPDATE_RANGE_CHANGE,
	PACKET_TRIPTIME,
	PACKET_UTRIPTIME,
	PACKET_GQ_COUNT,
	PACKET_TEXT_ID_PLUS_STRING,
};


class ServerHandler
{
friend class Action;
public:
  ServerHandler();
  ~ServerHandler();
  void handlePacket(Uint8 packet);

  void pNone(Uint8 packet);
  void pDump(Uint8 packet);
	void pMove(Uint8 packet);
	void pNakedMob(Uint8 packet);
	void pEquippedMob (Uint8 packet);
	void pGroup (Uint8 packet);
	void pLoginConfirm(Uint8 packet);
  void pBritanniaList(Uint8 packet);
  void pCitiesAndChars(Uint8 packet);
	void pUserServer(Uint8 packet);
	void pLoginComplete(Uint8 packet);
	void pText(Uint8 packet);
	void pUnicodeText(Uint8 packet);

  void pAcctLoginReq(string &username,string &password);
  void pBritanniaSelect(Uint8 server);
  void pPostLogin(Uint32 authKey);
  void pPreLogin(Uint8 chr);
	void pLogin(Uint8 *createData);
private:
  string username,password;
};

typedef struct {
  char *name;
  Uint16 size;
  Uint8 flags;
  void (ServerHandler::*handler)(Uint8 id);
} PacketInfo;

#endif