#ifndef GUARD_MYSTERY_GIFT_SERVER_H #define GUARD_MYSTERY_GIFT_SERVER_H #include "global.h" #include "mystery_gift_link.h" // Return values for Server_* functions. // Other than SVR_RET_END, effectively useless (not checked for). enum { SVR_RET_INIT, SVR_RET_ACTIVE, SVR_RET_UNUSED, SVR_RET_END }; // IDs for server script instructions enum { SVR_RETURN, SVR_SEND, SVR_RECV, SVR_GOTO, SVR_GOTO_IF_EQ, SVR_COPY_GAME_DATA, SVR_CHECK_GAME_DATA, // In Emerald, this was separated into SVR_CHECK_GAME_DATA_CARD and SVR_CHECK_GAME_DATA_NEWS SVR_CHECK_EXISTING_CARD, SVR_READ_RESPONSE, SVR_CHECK_EXISTING_STAMPS, SVR_GET_CARD_STAT, SVR_CHECK_QUESTIONNAIRE, SVR_COMPARE, SVR_LOAD_CARD, SVR_LOAD_NEWS, SVR_LOAD_RAM_SCRIPT, SVR_LOAD_STAMP, SVR_LOAD_UNK_2, SVR_LOAD_CLIENT_SCRIPT, SVR_LOAD_EREADER_TRAINER, SVR_LOAD_MSG, SVR_COPY_STAMP, SVR_COPY_CARD, SVR_COPY_NEWS, SVR_SET_RAM_SCRIPT, SVR_SET_CLIENT_SCRIPT, SVR_COPY_SAVED_CARD, SVR_COPY_SAVED_NEWS, SVR_COPY_SAVED_RAM_SCRIPT, SVR_LOAD_UNK_1, }; // Create arguments for SVR_LOAD_CLIENT_SCRIPT or SVR_LOAD_MSG // (a script/text size and pointer to send to the client) #define PTR_ARG(pointer) .param = sizeof(pointer), .ptr = pointer // IDs for server messages when ending a script. // Given as the parameter to SVR_RETURN, and resolved to text in GetServerResultMessage enum { SVR_MSG_NOTHING_SENT, SVR_MSG_RECORD_UPLOADED, SVR_MSG_CARD_SENT, SVR_MSG_NEWS_SENT, SVR_MSG_STAMP_SENT, SVR_MSG_HAS_CARD, SVR_MSG_HAS_STAMP, SVR_MSG_HAS_NEWS, SVR_MSG_NO_ROOM_STAMPS, SVR_MSG_CLIENT_CANCELED, SVR_MSG_CANT_SEND_GIFT_1, SVR_MSG_COMM_ERROR, SVR_MSG_GIFT_SENT_1, SVR_MSG_GIFT_SENT_2, SVR_MSG_CANT_SEND_GIFT_2, }; struct MysteryGiftServerCmd { u32 instr; bool32 param; const void *ptr; }; struct MysteryGiftServer { u32 unused; u32 param; u32 funcId; u32 cmdidx; const struct MysteryGiftServerCmd * script; void *recvBuffer; struct WonderCard * card; struct WonderNews * news; struct MysteryGiftLinkGameData * linkGameData; const void *ramScript; u32 ramScriptSize; const void *clientScript; u32 clientScriptSize; u32 stamp; struct MysteryGiftLink manager; }; void MysterGiftServer_CreateForNews(void); void MysterGiftServer_CreateForCard(void); u32 MysterGiftServer_Run(u16 * endVal); #endif //GUARD_MYSTERY_GIFT_SERVER_H