pokeemerald/include/union_room.h
2020-06-10 17:30:59 -04:00

169 lines
3.5 KiB
C

#ifndef GUARD_UNION_ROOM_H
#define GUARD_UNION_ROOM_H
#include "link_rfu.h"
#include "link.h"
#include "constants/union_room.h"
// Exported type declarations
struct WirelessGnameUnamePair
{
struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH + 1];
};
struct UnkStruct_x1C
{
struct WirelessGnameUnamePair gname_uname;
u8 active:1;
};
struct UnkStruct_x20
{
struct WirelessGnameUnamePair gname_uname;
u16 timeoutCounter;
u8 groupScheduledAnim:2;
bool8 useRedText:1; // Never set
u8 field_1B;
u8 filler[3];
};
struct UnkStruct_Main0
{
struct UnkStruct_x20 arr[MAX_UNION_ROOM_PLAYERS];
};
struct UnkStruct_Main4
{
struct UnkStruct_x1C arr[MAX_RFU_PLAYERS];
};
struct UnkStruct_Main8
{
struct UnkStruct_x20 arr[MAX_RFU_PLAYERS];
};
struct WirelessLink_Leader
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
struct UnkStruct_Main8 *field_8;
u8 state;
u8 textState;
u8 delayTimerAfterOk;
u8 listWindowId;
u8 bButtonCancelWindowId;
u8 nPlayerModeWindowId;
u8 listTaskId;
u8 playerCount;
u16 field_14;
u8 field_16;
u8 listenTaskId;
u8 activity;
u8 joinRequestAnswer;
u16 memberConfirmTimeout;
};
struct WirelessLink_Group
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
u8 state;
u8 textState;
u8 field_A;
u8 listWindowId;
u8 bButtonCancelWindowId;
u8 playerNameAndIdWindowId;
u8 listTaskId;
u8 leaderId;
u8 field_10;
u8 listenTaskId;
u8 isWonderNews;
u8 field_13;
u8 refreshTimer;
u8 delayBeforePrint;
};
struct UnionRoomObject
{
u8 state;
u8 gfxId;
s8 animState;
u8 schedAnim;
};
struct WirelessLink_URoom
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
struct UnkStruct_Main0 *field_8;
struct UnkStruct_Main4 *field_C;
u16 unknown; // Never read
u16 field_12;
u8 state;
u8 stateAfterPrint;
u8 textState;
u8 filler[4];
u8 topListMenuWindowId;
u8 topListMenuId;
u8 tradeBoardSelectWindowId;
u8 tradeBoardDetailsWindowId;
u8 unused1;
u8 searchTaskId;
u8 spriteIds[40];
u8 unused2;
u8 tradeBoardListMenuId;
u16 playerSendBuffer[6];
u8 activityRequestStrbufs[4][16];
u16 partnerYesNoResponse;
u16 recvActivityRequest[3];
struct UnionRoomObject objects[MAX_UNION_ROOM_PLAYERS];
u8 trainerCardStrBuffer[12][15];
u8 trainerCardColorStrBuffer[48];
u8 trainerCardMsgStrBuffer[200];
};
union WirelessLink_Main
{
struct WirelessLink_Leader *leader;
struct WirelessLink_Group *group;
struct WirelessLink_URoom *uRoom;
};
struct UnionRoomTrade
{
u16 state;
u16 type;
u32 playerPersonality;
u8 offerPlayerId;
u8 filler1;
u16 playerSpecies;
u16 playerLevel;
u16 species;
u16 level;
u16 filler2;
u32 personality;
};
// Exported RAM declarations
extern u8 gPlayerCurrActivity;
extern union WirelessLink_Main gUnknown_02022C30;
extern struct GFtgtGnameSub gPartnerTgtGnameSub;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
// Exported ROM declarations
u8 CreateTask_CreateTradeMenu(void);
void SetUsingUnionRoomStartMenu(void);
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
void MEvent_CreateTask_Leader(u32 arg0);
u8 CreateTask_ListenToWireless(void);
void StartUnionRoomBattle(u16 battleFlags);
#endif //GUARD_UNION_ROOM_H