// 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