summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data/union_room.h192
-rw-r--r--src/link_rfu_2.c197
-rw-r--r--src/link_rfu_3.c2
-rw-r--r--src/mystery_gift.c17
-rw-r--r--src/start_menu.c2
-rw-r--r--src/union_room.c1619
-rw-r--r--src/union_room_player_avatar.c13
7 files changed, 1094 insertions, 948 deletions
diff --git a/src/data/union_room.h b/src/data/union_room.h
index 043300912..704978766 100644
--- a/src/data/union_room.h
+++ b/src/data/union_room.h
@@ -99,15 +99,15 @@ ALIGNED(4) const u8 sText_OtherTrainerUnavailableNow[] = _("The other TRAINER do
ALIGNED(4) const u8 sText_CantTransmitTrainerTooFar[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
ALIGNED(4) const u8 sText_TrainersNotReadyYet[] = _("The other TRAINER(S) is/are not\nready yet.\p");
-const u8 *const sCantTransmitToTrainerTexts[] = {
- sText_CantTransmitTrainerTooFar,
- sText_TrainersNotReadyYet
+static const u8 *const sCantTransmitToTrainerTexts[] = {
+ [UR_TRADE_PLAYER_NOT_READY - 1] = sText_CantTransmitTrainerTooFar,
+ [UR_TRADE_PARTNER_NOT_READY - 1] = sText_TrainersNotReadyYet
};
ALIGNED(4) const u8 sText_ModeWithTheseMembersWillBeCanceled[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 60}");
ALIGNED(4) const u8 sText_MemberNoLongerAvailable[] = _("There is a member who can no\nlonger remain available.\p");
-const u8 *const sPlayerUnavailableTexts[] = {
+static const u8 *const sPlayerUnavailableTexts[] = {
sText_OtherTrainerUnavailableNow,
sText_MemberNoLongerAvailable
};
@@ -120,17 +120,17 @@ ALIGNED(4) const u8 sText_AwaitingOtherMembers[] = _("{STR_VAR_1}!\nAwaiting oth
ALIGNED(4) const u8 sText_QuitBeingMember[] = _("Quit being a member?");
ALIGNED(4) const u8 sText_StoppedBeingMember[] = _("You stopped being a member.\p");
-const u8 *const sPlayerDisconnectedTexts[] = {
- NULL,
- sText_MemberNoLongerAvailable,
- sText_TrainerAppearsUnavailable,
- NULL,
- NULL,
- NULL,
- sText_PlayerRepliedNo,
- NULL,
- NULL,
- sText_StoppedBeingMember
+static const u8 *const sPlayerDisconnectedTexts[] = {
+ [RFU_STATUS_OK] = NULL,
+ [RFU_STATUS_FATAL_ERROR] = sText_MemberNoLongerAvailable,
+ [RFU_STATUS_CONNECTION_ERROR] = sText_TrainerAppearsUnavailable,
+ [RFU_STATUS_CHILD_SEND_COMPLETE] = NULL,
+ [RFU_STATUS_NEW_CHILD_DETECTED] = NULL,
+ [RFU_STATUS_JOIN_GROUP_OK] = NULL,
+ [RFU_STATUS_JOIN_GROUP_NO] = sText_PlayerRepliedNo,
+ [RFU_STATUS_WAIT_ACK_JOIN_GROUP] = NULL,
+ [RFU_STATUS_LEAVE_GROUP_NOTICE] = NULL,
+ [RFU_STATUS_LEAVE_GROUP] = sText_StoppedBeingMember
};
ALIGNED(4) const u8 sText_WirelessLinkEstablished[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
@@ -139,16 +139,16 @@ ALIGNED(4) const u8 sText_LinkWithFriendDropped[] = _("The link with your friend
ALIGNED(4) const u8 sText_PlayerRepliedNo2[] = _("{STR_VAR_1} replied, “No…”");
const u8 *const sLinkDroppedTexts[] = {
- NULL,
- sText_LinkWithFriendDropped,
- sText_LinkWithFriendDropped,
- NULL,
- NULL,
- NULL,
- sText_PlayerRepliedNo2,
- NULL,
- NULL,
- NULL
+ [RFU_STATUS_OK] = NULL,
+ [RFU_STATUS_FATAL_ERROR] = sText_LinkWithFriendDropped,
+ [RFU_STATUS_CONNECTION_ERROR] = sText_LinkWithFriendDropped,
+ [RFU_STATUS_CHILD_SEND_COMPLETE] = NULL,
+ [RFU_STATUS_NEW_CHILD_DETECTED] = NULL,
+ [RFU_STATUS_JOIN_GROUP_OK] = NULL,
+ [RFU_STATUS_JOIN_GROUP_NO] = sText_PlayerRepliedNo2,
+ [RFU_STATUS_WAIT_ACK_JOIN_GROUP] = NULL,
+ [RFU_STATUS_LEAVE_GROUP_NOTICE] = NULL,
+ [RFU_STATUS_LEAVE_GROUP] = NULL
};
ALIGNED(4) const u8 sText_DoYouWantXMode[] = _("Do you want the {STR_VAR_2}\nMODE?");
@@ -260,7 +260,7 @@ ALIGNED(4) const u8 sText_WaitForBattleFemale[] = _("A battle? Of course, but I
ALIGNED(4) const u8 sText_WaitForChatFemale[] = _("Did you want to chat?\nOkay, but please wait a moment.");
ALIGNED(4) const u8 sText_ShowTrainerCardFemale[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
-const u8 *const sText_WaitOrShowCardTexts[GENDER_COUNT][4] = {
+static const u8 *const sText_WaitOrShowCardTexts[GENDER_COUNT][4] = {
{
sText_WaitForBattleMale,
sText_WaitForChatMale,
@@ -283,7 +283,7 @@ ALIGNED(4) const u8 sText_TradeWillBeStarted[] = _("The trade will be started.{P
ALIGNED(4) const u8 sText_BattleWillBeStarted[] = _("The battle will be started.{PAUSE 60}");
ALIGNED(4) const u8 sText_EnteringChat[] = _("Entering the chat…{PAUSE 60}");
-const u8 *const sStartActivityTexts[][GENDER_COUNT][3] = {
+static const u8 *const sStartActivityTexts[][GENDER_COUNT][3] = {
{
{
sText_BattleWillBeStarted,
@@ -334,18 +334,21 @@ const u8 *const sIfYouWantToDoSomethingTexts[GENDER_COUNT] = {
ALIGNED(4) const u8 sText_TrainerBattleBusy[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
ALIGNED(4) const u8 sText_NeedTwoMonsOfLevel30OrLower1[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
ALIGNED(4) const u8 sText_NeedTwoMonsOfLevel30OrLower2[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
-ALIGNED(4) const u8 sText_DeclineBattleMale[] = _("Oh, all right.\nCome see me anytime, okay?\p");
-ALIGNED(4) const u8 stext_DeclineBattleFemale[] = _("Oh…\nPlease come by anytime.\p");
-static const u8 *const sDeclineBattleTexts[GENDER_COUNT] = {
- sText_DeclineBattleMale,
- stext_DeclineBattleFemale
+ALIGNED(4) const u8 sText_DeclineChatMale[] = _("Oh, all right.\nCome see me anytime, okay?\p");
+ALIGNED(4) const u8 stext_DeclineChatFemale[] = _("Oh…\nPlease come by anytime.\p");
+
+// Response from partner when player declines chat
+static const u8 *const sDeclineChatTexts[GENDER_COUNT] = {
+ sText_DeclineChatMale,
+ stext_DeclineChatFemale
};
ALIGNED(4) const u8 sText_ChatDeclinedMale[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
ALIGNED(4) const u8 sText_ChatDeclinedFemale[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
-const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
+// Response from partner when they decline chat
+static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
sText_ChatDeclinedMale,
sText_ChatDeclinedFemale
};
@@ -576,36 +579,36 @@ const u8 *const sGladToMeetYouTexts[GENDER_COUNT] = {
ALIGNED(4) const u8 sText_FinishedCheckingPlayersTrainerCard[] = _("Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}");
-const u8 *const sLinkGroupActivityTexts[] = {
- sText_EmptyString,
- sText_SingleBattle,
- sText_DoubleBattle,
- sText_MultiBattle,
- sText_PokemonTrades,
- sText_Chat,
- sText_WonderCards,
- sText_WonderNews,
- sText_Cards,
- sText_PokemonJump,
- sText_BerryCrush,
- sText_BerryPicking,
- sText_Search,
- sText_EmptyString,
- sText_BattleTowerOpenLv,
- sText_RecordCorner,
- sText_BerryBlender,
- sText_EmptyString,
- sText_EmptyString,
- sText_EmptyString,
- sText_EmptyString,
- sText_WonderCards,
- sText_WonderNews,
- sText_CoolContest,
- sText_BeautyContest,
- sText_CuteContest,
- sText_SmartContest,
- sText_ToughContest,
- sText_BattleTowerLv50
+static const u8 *const sLinkGroupActivityNameTexts[] = {
+ [ACTIVITY_NONE] = sText_EmptyString,
+ [ACTIVITY_BATTLE_SINGLE] = sText_SingleBattle,
+ [ACTIVITY_BATTLE_DOUBLE] = sText_DoubleBattle,
+ [ACTIVITY_BATTLE_MULTI] = sText_MultiBattle,
+ [ACTIVITY_TRADE] = sText_PokemonTrades,
+ [ACTIVITY_CHAT] = sText_Chat,
+ [ACTIVITY_WONDER_CARD] = sText_WonderCards,
+ [ACTIVITY_WONDER_NEWS] = sText_WonderNews,
+ [ACTIVITY_CARD] = sText_Cards,
+ [ACTIVITY_POKEMON_JUMP] = sText_PokemonJump,
+ [ACTIVITY_BERRY_CRUSH] = sText_BerryCrush,
+ [ACTIVITY_BERRY_PICK] = sText_BerryPicking,
+ [ACTIVITY_SEARCH] = sText_Search,
+ [ACTIVITY_SPIN_TRADE] = sText_EmptyString,
+ [ACTIVITY_BATTLE_TOWER_OPEN] = sText_BattleTowerOpenLv,
+ [ACTIVITY_RECORD_CORNER] = sText_RecordCorner,
+ [ACTIVITY_BERRY_BLENDER] = sText_BerryBlender,
+ [ACTIVITY_ACCEPT] = sText_EmptyString,
+ [ACTIVITY_DECLINE] = sText_EmptyString,
+ [ACTIVITY_NPCTALK] = sText_EmptyString,
+ [ACTIVITY_PLYRTALK] = sText_EmptyString,
+ [ACTIVITY_WONDER_CARD2] = sText_WonderCards,
+ [ACTIVITY_WONDER_NEWS2] = sText_WonderNews,
+ [ACTIVITY_CONTEST_COOL] = sText_CoolContest,
+ [ACTIVITY_CONTEST_BEAUTY] = sText_BeautyContest,
+ [ACTIVITY_CONTEST_CUTE] = sText_CuteContest,
+ [ACTIVITY_CONTEST_SMART] = sText_SmartContest,
+ [ACTIVITY_CONTEST_TOUGH] = sText_ToughContest,
+ [ACTIVITY_BATTLE_TOWER] = sText_BattleTowerLv50
};
static const struct WindowTemplate sWindowTemplate_BButtonCancel = {
@@ -621,6 +624,9 @@ static const struct WindowTemplate sWindowTemplate_BButtonCancel = {
// Minimum and maximum number of players for a link group
// A minimum of 0 means the min and max are equal
#define LINK_GROUP_CAPACITY(min, max)(((min) << 12) | ((max) << 8))
+#define GROUP_MAX(capacity)(capacity & 0x0F)
+#define GROUP_MIN(capacity)(capacity >> 4)
+#define GROUP_MIN2(capacity)(capacity & 0xF0) // Unnecessary to have both, but needed to match
static const u32 sLinkGroupToActivityAndCapacity[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_SINGLE_BATTLE] = ACTIVITY_BATTLE_SINGLE | LINK_GROUP_CAPACITY(0, 2),
@@ -647,37 +653,37 @@ static const u32 sLinkGroupToActivityAndCapacity[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_BATTLE_TOWER_OPEN] = ACTIVITY_BATTLE_TOWER_OPEN | LINK_GROUP_CAPACITY(0, 2)
};
-const struct WindowTemplate gUnknown_082F011C = {
- .bg = 0x00,
- .tilemapLeft = 0x01,
- .tilemapTop = 0x03,
- .width = 0x0d,
- .height = 0x08,
- .paletteNum = 0x0f,
+static const struct WindowTemplate sWindowTemplate_PlayerList = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 13,
+ .height = 8,
+ .paletteNum = 15,
.baseBlock = 0x0044
};
-const struct WindowTemplate gUnknown_082F0124 = {
- .bg = 0x00,
- .tilemapLeft = 0x01,
- .tilemapTop = 0x03,
- .width = 0x0d,
- .height = 0x0a,
- .paletteNum = 0x0f,
+static const struct WindowTemplate sWindowTemplate_5PlayerList = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 13,
+ .height = 10,
+ .paletteNum = 15,
.baseBlock = 0x0044
};
static const struct WindowTemplate sWindowTemplate_NumPlayerMode = {
- .bg = 0x00,
- .tilemapLeft = 0x10,
- .tilemapTop = 0x03,
- .width = 0x07,
- .height = 0x04,
- .paletteNum = 0x0f,
+ .bg = 0,
+ .tilemapLeft = 16,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 15,
.baseBlock = 0x00c6
};
-const struct ListMenuItem gUnknown_082F0134[] = {
+static const struct ListMenuItem sPossibleGroupMembersListMenuItems[] = {
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
@@ -686,10 +692,10 @@ const struct ListMenuItem gUnknown_082F0134[] = {
};
static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = {
- .items = gUnknown_082F0134,
+ .items = sPossibleGroupMembersListMenuItems,
.moveCursorFunc = NULL,
.itemPrintFunc = ItemPrintFunc_PossibleGroupMembers,
- .totalItems = ARRAY_COUNT(gUnknown_082F0134),
+ .totalItems = ARRAY_COUNT(sPossibleGroupMembersListMenuItems),
.maxShowed = 5,
.windowId = 0,
.header_X = 0,
@@ -804,7 +810,7 @@ static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = {
.cursorKind = 0
};
-const struct WindowTemplate gUnknown_082F025C = {
+static const struct WindowTemplate sWindowTemplate_RegisterForTrade = {
.bg = 0x00,
.tilemapLeft = 0x12,
.tilemapTop = 0x07,
@@ -814,17 +820,17 @@ const struct WindowTemplate gUnknown_082F025C = {
.baseBlock = 0x0001
};
-const struct ListMenuItem gUnknown_082F0264[] = {
+static const struct ListMenuItem sRegisterForTradeListMenuItems[] = {
{ gText_Register, 1 },
{ sText_Info, 2 },
{ sText_Exit, 3 }
};
-const struct ListMenuTemplate gUnknown_082F027C = {
- .items = gUnknown_082F0264,
+static const struct ListMenuTemplate sListMenuTemplate_RegisterForTrade = {
+ .items = sRegisterForTradeListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
- .totalItems = ARRAY_COUNT(gUnknown_082F0264),
+ .totalItems = ARRAY_COUNT(sRegisterForTradeListMenuItems),
.maxShowed = 3,
.windowId = 0,
.header_X = 0,
@@ -872,7 +878,7 @@ static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES] = {
{ sText_Exit, NUMBER_OF_MON_TYPES }
};
-const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
+static const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
.items = sTradingBoardTypes,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
@@ -893,7 +899,7 @@ const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
.cursorKind = 0
};
-const struct WindowTemplate gUnknown_082F0344 = {
+static const struct WindowTemplate sWindowTemplate_TradingBoard = {
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x01,
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index ac1488167..34e9f719b 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -68,7 +68,7 @@ static void HandleBlockSend(void);
static void SendNextBlock(void);
static void SendLastBlock(void);
static u8 GetPartnerIndexByNameAndTrainerID(const u8 *, u16);
-static void sub_8010750(void);
+static void UpdateChildStatuses(void);
static s32 sub_80107A0(void);
static void sub_801084C(u8);
static void ClearSelectedLinkPlayerIds(u16);
@@ -278,7 +278,7 @@ void InitRFUAPI(void)
static void Task_LinkLeaderSearchForChildren(u8 taskId)
{
- sub_8010750();
+ UpdateChildStatuses();
switch (Rfu.state)
{
case 0:
@@ -387,11 +387,11 @@ static void Task_JoinGroupSearchForParent(u8 taskId)
case 11:
switch (sub_80107A0())
{
- case 5:
+ case RFU_STATUS_JOIN_GROUP_OK:
Rfu.state = 12;
break;
- case 6:
- case 9:
+ case RFU_STATUS_JOIN_GROUP_NO:
+ case RFU_STATUS_LEAVE_GROUP:
rfu_LMAN_requestChangeAgbClockMaster();
Rfu.unk_ce4 = 2;
DestroyTask(taskId);
@@ -444,11 +444,11 @@ static void sub_800EAFC(void)
static void Task_LinkRfu_UnionRoomListen(u8 taskId)
{
- if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetErrorStatus() == 4)
+ if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetStatus() == RFU_STATUS_NEW_CHILD_DETECTED)
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
}
switch (Rfu.state)
{
@@ -743,7 +743,7 @@ static bool32 sub_800F0F8(void)
Rfu.unk_ce3 = 0;
if (Rfu.unk_ce4 == 1)
{
- RfuSetErrorStatus(2, 0x8000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x8000);
GetLinkmanErrorParams(0x8000);
return FALSE;
}
@@ -883,7 +883,7 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
u8 j;
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
u8 sp48[2 * (CMD_LENGTH - 1)];
- u8 switchval;
+ u8 status;
RfuRecvQueue_Dequeue(&Rfu.recvQueue, sp00);
for (i = 0; i < MAX_RFU_PLAYERS; i++)
@@ -898,15 +898,15 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
{
rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
- switchval = RfuGetErrorStatus();
- if (switchval != 1 && switchval != 6 && switchval != 9)
- RfuSetErrorStatus(2, 0x9000);
+ status = RfuGetStatus();
+ if (status != RFU_STATUS_FATAL_ERROR && status != RFU_STATUS_JOIN_GROUP_NO && status != RFU_STATUS_LEAVE_GROUP)
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x9000);
rfu_clearAllSlot();
gReceivedRemoteLinkPlayers = FALSE;
Rfu.callback = NULL;
if (Rfu.unk_ce4 == 1)
{
- RfuSetErrorStatus(2, 0x9000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x9000);
GetLinkmanErrorParams(0x9000);
}
lman.state = lman.next_state = 0;
@@ -1231,7 +1231,7 @@ static void RfuPrepareSendBuffer(u16 command)
void sub_800FE50(void *a0)
{
- if (gSendCmd[0] == 0 && !RfuIsErrorStatus1or2())
+ if (gSendCmd[0] == 0 && !RfuHasErrored())
{
memcpy(Rfu.unk_f2, a0, sizeof(Rfu.unk_f2));
RfuPrepareSendBuffer(RFU_COMMAND_0x2F00);
@@ -1535,7 +1535,7 @@ u8 Rfu_GetLinkPlayerCount(void)
bool8 IsLinkRfuTaskFinished(void)
{
- if (Rfu.errorStatus == 2)
+ if (Rfu.status == RFU_STATUS_CONNECTION_ERROR)
return FALSE;
return Rfu.callback ? FALSE : TRUE;
}
@@ -1546,24 +1546,25 @@ static void CallRfuFunc(void)
Rfu.callback();
}
-static bool8 sub_8010540(void)
+static bool8 CheckForLeavingGroupMembers(void)
{
s32 i;
- bool8 retval = FALSE;
+ bool8 memberLeft = FALSE;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (Rfu.unk_cd1[i] < 5 || Rfu.unk_cd1[i] > 6)
+ if (Rfu.partnerSendStatuses[i] < RFU_STATUS_JOIN_GROUP_OK
+ || Rfu.partnerSendStatuses[i] > RFU_STATUS_JOIN_GROUP_NO)
{
if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
|| gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
{
- if (Rfu.unk_cd5[i] == 8)
+ if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE)
{
- Rfu.unk_cd1[i] = 9;
- Rfu.unk_cd5[i] = 10;
+ Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP;
+ Rfu.partnerRecvStatuses[i] = RFU_STATUS_10;
rfu_clearSlot(TYPE_NI_RECV, i);
- rfu_NI_setSendData(1 << i, 8, Rfu.unk_cd1 + i, 1);
- retval = TRUE;
+ rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
+ memberLeft = TRUE;
}
}
@@ -1574,7 +1575,7 @@ static bool8 sub_8010540(void)
}
}
}
- return retval;
+ return memberLeft;
}
bool32 sub_80105EC(void)
@@ -1583,10 +1584,10 @@ bool32 sub_80105EC(void)
s32 i;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (Rfu.unk_cd5[i] == 11)
+ if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_11)
{
flags |= (1 << i);
- Rfu.unk_cd5[i] = 0;
+ Rfu.partnerRecvStatuses[i] = RFU_STATUS_OK;
}
}
if (flags)
@@ -1596,40 +1597,41 @@ bool32 sub_80105EC(void)
}
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (Rfu.unk_cd5[i] == 10 || Rfu.unk_cd5[i] == 11)
+ if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_10
+ || Rfu.partnerRecvStatuses[i] == RFU_STATUS_11)
return TRUE;
}
return FALSE;
}
-bool32 TrainerIdAndNameStillInPartnersList(u16 id, const u8 *name)
+bool32 HasTrainerLeftPartnersList(u16 trainerId, const u8 *name)
{
- u8 idx = GetPartnerIndexByNameAndTrainerID(name, id);
+ u8 idx = GetPartnerIndexByNameAndTrainerID(name, trainerId);
if (idx == 0xFF)
return TRUE;
- if (Rfu.unk_cd1[idx] == 9)
+ if (Rfu.partnerSendStatuses[idx] == RFU_STATUS_LEAVE_GROUP)
return TRUE;
return FALSE;
}
-void SendByteToPartnerByIdAndName(u8 value, u16 id, const u8 *name)
+void SendRfuStatusToPartner(u8 status, u16 trainerId, const u8 *name)
{
- u8 idx = GetPartnerIndexByNameAndTrainerID(name, id);
- Rfu.unk_cd1[idx] = value;
+ u8 idx = GetPartnerIndexByNameAndTrainerID(name, trainerId);
+ Rfu.partnerSendStatuses[idx] = status;
rfu_clearSlot(TYPE_NI_SEND, idx);
- rfu_NI_setSendData(1 << idx, 8, Rfu.unk_cd1 + idx, 1);
+ rfu_NI_setSendData(1 << idx, 8, &Rfu.partnerSendStatuses[idx], 1);
}
-void LinkRfuNIsend8(void)
+void SendLeaveGroupNotice(void)
{
- Rfu.unk_c85 = 8;
+ Rfu.unk_c85 = RFU_STATUS_LEAVE_GROUP_NOTICE;
rfu_clearSlot(TYPE_NI_SEND, Rfu.childSlot);
rfu_NI_setSendData(1 << Rfu.childSlot, 8, &Rfu.unk_c85, 1);
}
-u32 WaitSendByteToPartnerByIdAndName(u16 id, const u8 *name)
+u32 WaitSendRfuStatusToPartner(u16 trainerId, const u8 *name)
{
- u8 idx = GetPartnerIndexByNameAndTrainerID(name, id);
+ u8 idx = GetPartnerIndexByNameAndTrainerID(name, trainerId);
if (idx == 0xFF)
return 2;
if (gRfuSlotStatusNI[idx]->send.state == 0)
@@ -1637,18 +1639,18 @@ u32 WaitSendByteToPartnerByIdAndName(u16 id, const u8 *name)
return 0;
}
-static void sub_8010750(void)
+static void UpdateChildStatuses(void)
{
s32 i;
- sub_8010540();
+ CheckForLeavingGroupMembers();
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_SUCCESS
|| gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_FAILED)
{
- if (Rfu.unk_cd5[i] == 10)
- Rfu.unk_cd5[i] = 11;
+ if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_10)
+ Rfu.partnerRecvStatuses[i] = RFU_STATUS_11;
rfu_clearSlot(TYPE_NI_SEND, i);
}
}
@@ -1656,7 +1658,7 @@ static void sub_8010750(void)
static s32 sub_80107A0(void)
{
- s32 retval = 0;
+ s32 status = RFU_STATUS_OK;
if (Rfu.unk_c85 == 8)
{
if (gRfuSlotStatusNI[Rfu.childSlot]->send.state == SLOT_STATE_SEND_SUCCESS
@@ -1667,22 +1669,22 @@ static s32 sub_80107A0(void)
|| gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
{
rfu_clearSlot(TYPE_NI_RECV, Rfu.childSlot);
- RfuSetErrorStatus(Rfu.unk_c86, 0);
- retval = Rfu.unk_c86;
+ RfuSetStatus(Rfu.recvStatus, 0);
+ status = Rfu.recvStatus;
}
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
{
rfu_clearSlot(TYPE_NI_RECV, Rfu.childSlot);
- retval = 6;
+ status = RFU_STATUS_JOIN_GROUP_NO;
}
- return retval;
+ return status;
}
static void sub_801084C(u8 taskId)
{
s32 i;
- if (Rfu.errorStatus == 1 || Rfu.errorStatus == 2)
+ if (Rfu.status == RFU_STATUS_FATAL_ERROR || Rfu.status == RFU_STATUS_CONNECTION_ERROR)
{
Rfu.unk_ce8 = 0;
DestroyTask(taskId);
@@ -1802,7 +1804,7 @@ static void Task_ExchangeLinkPlayers(u8 taskId)
struct LinkPlayerBlock *r2;
struct SioInfo *r5;
u8 r4 = Rfu.linkPlayerIdx[sUnknown_082ED68C[Rfu.unk_ce9]];
- if (Rfu.errorStatus == 1 || Rfu.errorStatus == 2)
+ if (Rfu.status == RFU_STATUS_FATAL_ERROR || Rfu.status == RFU_STATUS_CONNECTION_ERROR)
{
Rfu.unk_ce8 = 0;
DestroyTask(taskId);
@@ -1876,7 +1878,7 @@ static void Task_ExchangeLinkPlayers(u8 taskId)
static void sub_8010D0C(u8 taskId)
{
- if (Rfu.errorStatus == 1 || Rfu.errorStatus == 2)
+ if (Rfu.status == RFU_STATUS_FATAL_ERROR || Rfu.status == RFU_STATUS_CONNECTION_ERROR)
DestroyTask(taskId);
switch (gTasks[taskId].data[0])
{
@@ -1912,7 +1914,7 @@ static void RfuCheckErrorStatus(void)
gWirelessCommType = 2;
SetMainCallback2(CB2_LinkError);
gMain.savedCallback = CB2_LinkError;
- BufferLinkErrorInfo((Rfu.linkmanMsg << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.recvQueue.count, Rfu.sendQueue.count, RfuGetErrorStatus() == 2);
+ BufferLinkErrorInfo((Rfu.linkmanMsg << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.recvQueue.count, Rfu.sendQueue.count, RfuGetStatus() == RFU_STATUS_CONNECTION_ERROR);
Rfu.errorState = 2;
CloseLink();
}
@@ -1920,7 +1922,7 @@ static void RfuCheckErrorStatus(void)
{
if (lman.childClockSlave_flag)
rfu_LMAN_requestChangeAgbClockMaster();
- RfuSetErrorStatus(1, 0x7000);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, 0x7000);
GetLinkmanErrorParams(0x7000);
}
}
@@ -1981,7 +1983,7 @@ void ClearAndInitHostRFUtgtGname(void)
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, ACTIVITY_NONE, FALSE, 0);
}
-void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 started)
+void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, bool32 started)
{
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, activity, started, child_sprite_genders);
}
@@ -2016,16 +2018,16 @@ void sub_801103C(void)
r5->child_sprite_gender[i - 1] = sub_801100C(i);
}
-void UpdateGameData_GroupLockedIn(u8 a0)
+void UpdateGameData_GroupLockedIn(bool8 started)
{
- gHostRFUtgtGnameBuffer.started = a0;
+ gHostRFUtgtGnameBuffer.started = started;
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
-void UpdateGameDataWithActivitySpriteGendersFlag(u8 a0, u32 a1, u32 a2)
+void UpdateGameData_SetActivity(u8 activity, u32 flags, bool32 started)
{
- if (a0)
- SetHostRFUtgtGname(a0, a1, a2);
+ if (activity != ACTIVITY_NONE)
+ SetHostRFUtgtGname(activity, flags, started);
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
@@ -2051,7 +2053,7 @@ void sub_80110B8(u32 a0)
break;
}
}
- UpdateGameDataWithActivitySpriteGendersFlag((ACTIVITY_CHAT | IN_UNION_ROOM), child_sprite_genders, 0);
+ UpdateGameData_SetActivity((ACTIVITY_CHAT | IN_UNION_ROOM), child_sprite_genders, FALSE);
}
}
@@ -2110,9 +2112,9 @@ static void sub_801120C(u8 msg, u8 paramCount)
struct GFtgtGname *structPtr = (void *)gRfuLinkStatus->partner[i].gname;
if (structPtr->activity == GetHostRFUtgtGname()->activity)
{
- Rfu.unk_cd1[i] = 0;
- Rfu.unk_cd5[i] = 0;
- rfu_setRecvBuffer(TYPE_NI, i, Rfu.unk_cd5 + i, 1);
+ Rfu.partnerSendStatuses[i] = RFU_STATUS_OK;
+ Rfu.partnerRecvStatuses[i] = RFU_STATUS_OK;
+ rfu_setRecvBuffer(TYPE_NI, i, &Rfu.partnerRecvStatuses[i], 1);
}
else
{
@@ -2155,7 +2157,7 @@ static void sub_801120C(u8 msg, u8 paramCount)
else
sub_80111FC();
}
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
break;
case 0x34:
break;
@@ -2164,7 +2166,7 @@ static void sub_801120C(u8 msg, u8 paramCount)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
GetLinkmanErrorParams(msg);
Rfu.isShuttingDown = TRUE;
break;
@@ -2173,7 +2175,7 @@ static void sub_801120C(u8 msg, u8 paramCount)
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
Rfu.unk_cdb = TRUE;
break;
}
@@ -2195,27 +2197,27 @@ void sub_8011404(u8 msg, u8 unused1)
Rfu.childSlot = lman.param[0];
break;
case LMAN_MSG_CONNECT_PARENT_FAILED:
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
break;
case LMAN_MSG_CHILD_NAME_SEND_COMPLETED:
Rfu.state = 11;
Rfu.unk_c85 = 0;
- Rfu.unk_c86 = 0;
- rfu_setRecvBuffer(TYPE_NI, Rfu.childSlot, &Rfu.unk_c86, 1);
+ Rfu.recvStatus = RFU_STATUS_OK;
+ rfu_setRecvBuffer(TYPE_NI, Rfu.childSlot, &Rfu.recvStatus, 1);
rfu_setRecvBuffer(TYPE_UNI, Rfu.childSlot, Rfu.unk_c3f, 70);
break;
case LMAN_MSG_CHILD_NAME_SEND_FAILED_AND_DISCONNECTED:
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
break;
case LMAN_MSG_LINK_LOSS_DETECTED_AND_DISCONNECTED:
Rfu.linkLossRecoveryState = 2;
- if (Rfu.unk_c86 == 6)
+ if (Rfu.recvStatus == RFU_STATUS_JOIN_GROUP_NO)
break;
case LMAN_MSG_LINK_RECOVERY_FAILED_AND_DISCONNECTED:
if (Rfu.linkLossRecoveryState != 2)
Rfu.linkLossRecoveryState = 4;
- if (Rfu.unk_c86 != 9)
- RfuSetErrorStatus(2, msg);
+ if (Rfu.recvStatus != RFU_STATUS_LEAVE_GROUP)
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
Debug_PrintString(sASCII_LinkLossDisconnect, 5, 5);
if (gReceivedRemoteLinkPlayers == 1)
GetLinkmanErrorParams(msg);
@@ -2235,7 +2237,7 @@ void sub_8011404(u8 msg, u8 unused1)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
GetLinkmanErrorParams(msg);
Rfu.isShuttingDown = TRUE;
break;
@@ -2243,7 +2245,7 @@ void sub_8011404(u8 msg, u8 unused1)
case LMAN_MSG_WATCH_DOG_TIMER_ERROR:
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
GetLinkmanErrorParams(msg);
Rfu.unk_cdb = TRUE;
break;
@@ -2292,7 +2294,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
Rfu.state = 17;
break;
case LMAN_MSG_NEW_CHILD_CONNECT_DETECTED:
- RfuSetErrorStatus(4, 0);
+ RfuSetStatus(RFU_STATUS_NEW_CHILD_DETECTED, 0);
break;
case LMAN_MSG_NEW_CHILD_CONNECT_ACCEPTED:
if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && Rfu.unk_cd9 == 0)
@@ -2357,16 +2359,16 @@ static void sub_8011674(u8 msg, u8 paramCount)
}
else
{
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
}
break;
case LMAN_MSG_CHILD_NAME_SEND_COMPLETED:
Rfu.state = 13;
- RfuSetErrorStatus(3, 0);
+ RfuSetStatus(RFU_STATUS_CHILD_SEND_COMPLETE, 0);
rfu_setRecvBuffer(TYPE_UNI, Rfu.childSlot, Rfu.unk_c3f, 70);
break;
case LMAN_MSG_CHILD_NAME_SEND_FAILED_AND_DISCONNECTED:
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
break;
case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY:
if (lman.acceptSlot_flag & lman.param[0])
@@ -2402,7 +2404,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(Task_LinkRfu_UnionRoomListen) == TRUE)
Rfu.state = 17;
- RfuSetErrorStatus(2, msg);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, msg);
break;
case LMAN_MSG_LINK_DISCONNECTED_BY_USER:
Rfu.unk_ce3 = 0;
@@ -2412,7 +2414,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
GetLinkmanErrorParams(msg);
Rfu.isShuttingDown = TRUE;
break;
@@ -2421,7 +2423,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
- RfuSetErrorStatus(1, msg);
+ RfuSetStatus(RFU_STATUS_FATAL_ERROR, msg);
Rfu.unk_cdb = FALSE;
break;
}
@@ -2432,21 +2434,22 @@ void sub_8011A50(void)
Rfu.unk_ce4 = 2;
}
-void RfuSetErrorStatus(u8 status, u16 msg)
+void RfuSetStatus(u8 status, u16 msg)
{
- Rfu.errorStatus = status;
+ Rfu.status = status;
Rfu.linkmanMsg = msg;
}
-u8 RfuGetErrorStatus(void)
+u8 RfuGetStatus(void)
{
- return Rfu.errorStatus;
+ return Rfu.status;
}
-bool32 RfuIsErrorStatus1or2(void)
+bool32 RfuHasErrored(void)
{
- u32 var = RfuGetErrorStatus() - 1;
- if (var < 2)
+ // RFU_STATUS_OK will underflow here intentionally
+ u32 var = RfuGetStatus() - 1;
+ if (var < RFU_STATUS_CONNECTION_ERROR)
return TRUE;
else
return FALSE;
@@ -2673,7 +2676,7 @@ static void Task_RfuReconnectWithParent(u8 taskId)
}
else
{
- RfuSetErrorStatus(2, 0x7000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x7000);
DestroyTask(taskId);
}
}
@@ -2690,7 +2693,7 @@ static void Task_RfuReconnectWithParent(u8 taskId)
if (data[15] > 240)
{
- RfuSetErrorStatus(2, 0x7000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x7000);
DestroyTask(taskId);
}
}
@@ -2700,7 +2703,7 @@ void CreateTask_RfuReconnectWithParent(const u8 *name, u16 trainerId)
u8 taskId;
s16 *data;
- Rfu.errorStatus = 0;
+ Rfu.status = RFU_STATUS_OK;
taskId = CreateTask(Task_RfuReconnectWithParent, 3);
data = gTasks[taskId].data;
StringCopy((u8*)(data), name);
@@ -2741,12 +2744,12 @@ static bool32 ShouldRejectPartnerConnectionBasedOnActivity(s16 activity, struct
static void sub_801209C(u8 taskId)
{
- if (Rfu.errorStatus == 4)
+ if (Rfu.status == RFU_STATUS_NEW_CHILD_DETECTED)
DestroyTask(taskId);
if (++gTasks[taskId].data[0] > 300)
{
- RfuSetErrorStatus(2, 0x7000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x7000);
DestroyTask(taskId);
}
@@ -2766,7 +2769,7 @@ static void sub_801209C(u8 taskId)
}
else
{
- RfuSetErrorStatus(2, 0x7000);
+ RfuSetStatus(RFU_STATUS_CONNECTION_ERROR, 0x7000);
DestroyTask(taskId);
}
}
@@ -2778,7 +2781,7 @@ void sub_8012188(const u8 *name, struct GFtgtGname *structPtr, u8 activity)
u8 taskId, taskId2;
Rfu.unk_ccf = 0;
- Rfu.errorStatus = 0;
+ Rfu.status = RFU_STATUS_OK;
StringCopy(Rfu.playerName, name);
memcpy(&Rfu.unk_10A, structPtr, RFU_GAME_NAME_LENGTH);
rfu_LMAN_forceChangeSP();
@@ -2811,7 +2814,7 @@ bool32 sub_8012240(void)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if ((lman.acceptSlot_flag >> i) & 1 && Rfu.unk_cd1[i] == 0)
+ if ((lman.acceptSlot_flag >> i) & 1 && Rfu.partnerSendStatuses[i] == RFU_STATUS_OK)
return FALSE;
}
@@ -2846,7 +2849,7 @@ static void Debug_PrintStatus(void)
}
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- for (j = 0; j < 14; j++)
+ for (j = 0; j < (int)ARRAY_COUNT(Rfu.unk_14[0]); j++)
{
Debug_PrintNum(Rfu.unk_14[i][j], j * 2, i + 11, 2);
}
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index 4393d14ac..c53e1c59e 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -953,7 +953,7 @@ void UpdateWirelessStatusIndicatorSprite(void)
gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
gMain.oamBuffer[125].tileNum = sprite->sTileStart + sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].frame.imageValue;
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
- if (RfuGetErrorStatus() == 1)
+ if (RfuGetStatus() == RFU_STATUS_FATAL_ERROR)
{
DestroyWirelessStatusIndicatorSprite();
}
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index 06427d2dd..9672fe0ec 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -30,6 +30,7 @@
#include "link_rfu.h"
#include "mevent_news.h"
#include "mevent_server.h"
+#include "constants/cable_club.h"
void bgid_upload_textbox_1(u8 bgId);
void task_add_00_mystery_gift(void);
@@ -1242,21 +1243,21 @@ void task00_mystery_gift(u8 taskId)
case 0:
if (data->source == 1)
{
- MEvent_CreateTask_CardOrNewsWithFriend(0x15);
+ MEvent_CreateTask_CardOrNewsWithFriend(ACTIVITY_WONDER_CARD2);
}
else if (data->source == 0)
{
- MEvent_CreateTask_CardOrNewsOverWireless(0x15);
+ MEvent_CreateTask_CardOrNewsOverWireless(ACTIVITY_WONDER_CARD2);
}
break;
case 1:
if (data->source == 1)
{
- MEvent_CreateTask_CardOrNewsWithFriend(0x16);
+ MEvent_CreateTask_CardOrNewsWithFriend(ACTIVITY_WONDER_NEWS2);
}
else if (data->source == 0)
{
- MEvent_CreateTask_CardOrNewsOverWireless(0x16);
+ MEvent_CreateTask_CardOrNewsOverWireless(ACTIVITY_WONDER_NEWS2);
}
break;
}
@@ -1269,7 +1270,7 @@ void task00_mystery_gift(u8 taskId)
data->state = 7;
mevent_client_do_init(data->IsCardOrNews);
}
- else if (gSpecialVar_Result == 5)
+ else if (gSpecialVar_Result == LINKUP_FAILED)
{
ClearScreenInBg0(TRUE);
data->state = 3;
@@ -1599,10 +1600,10 @@ void task00_mystery_gift(u8 taskId)
switch (data->IsCardOrNews)
{
case 0:
- MEvent_CreateTask_Leader(21);
+ MEvent_CreateTask_Leader(ACTIVITY_WONDER_CARD2);
break;
case 1:
- MEvent_CreateTask_Leader(22);
+ MEvent_CreateTask_Leader(ACTIVITY_WONDER_NEWS2);
break;
}
data->source = 1;
@@ -1615,7 +1616,7 @@ void task00_mystery_gift(u8 taskId)
ClearScreenInBg0(1);
data->state = 31;
}
- else if (gSpecialVar_Result == 5)
+ else if (gSpecialVar_Result == LINKUP_FAILED)
{
ClearScreenInBg0(1);
data->state = 18;
diff --git a/src/start_menu.c b/src/start_menu.c
index df45a3f12..88ad364c7 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -525,7 +525,7 @@ void Task_ShowStartMenu(u8 taskId)
{
case 0:
if (InUnionRoom() == TRUE)
- var_800D_set_xB();
+ SetUsingUnionRoomStartMenu();
gMenuCallback = HandleStartMenuInput;
task->data[0]++;
diff --git a/src/union_room.c b/src/union_room.c
index 54d25046a..1ef8cd4cb 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -54,6 +54,127 @@
#include "constants/songs.h"
#include "constants/species.h"
+// States for Task_RunUnionRoom
+enum {
+ UR_STATE_INIT,
+ UR_STATE_INIT_OBJECTS,
+ UR_STATE_INIT_LINK,
+ UR_STATE_CHECK_SELECTING_MON,
+ UR_STATE_MAIN,
+ UR_STATE_DO_SOMETHING_PROMPT,
+ UR_STATE_HANDLE_DO_SOMETHING_PROMPT_INPUT,
+ UR_STATE_DO_SOMETHING_PROMPT_2,
+ UR_STATE_PRINT_MSG,
+ UR_STATE_HANDLE_ACTIVITY_REQUEST,
+ UR_STATE_DECLINE_ACTIVITY_REQUEST,
+ UR_STATE_PLAYER_CONTACTED_YOU,
+ UR_STATE_RECV_CONTACT_DATA,
+ UR_STATE_PRINT_START_ACTIVITY_MSG,
+ UR_STATE_START_ACTIVITY_LINK,
+ UR_STATE_START_ACTIVITY_WAIT_FOR_LINK,
+ UR_STATE_START_ACTIVITY_FREE_UROOM,
+ UR_STATE_START_ACTIVITY_FADE,
+ UR_STATE_START_ACTIVITY,
+ UR_STATE_RECV_JOIN_CHAT_REQUEST,
+ UR_STATE_TRY_ACCEPT_CHAT_REQUEST_DELAY,
+ UR_STATE_TRY_ACCEPT_CHAT_REQUEST,
+ UR_STATE_ACCEPT_CHAT_REQUEST,
+ UR_STATE_WAIT_FOR_START_MENU,
+ UR_STATE_INTERACT_WITH_PLAYER,
+ UR_STATE_TRY_COMMUNICATING,
+ UR_STATE_PRINT_AND_EXIT,
+ UR_STATE_SEND_ACTIVITY_REQUEST,
+ UR_STATE_TRAINER_APPEARS_BUSY,
+ UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST,
+ UR_STATE_CANCEL_ACTIVITY_LINK_ERROR,
+ UR_STATE_SEND_TRADE_REQUST,
+ UR_STATE_REQUEST_DECLINED,
+ UR_STATE_PRINT_CONTACT_MSG,
+ UR_STATE_HANDLE_CONTACT_DATA,
+ UR_STATE_RECV_ACTIVITY_REQUEST,
+ UR_STATE_CANCEL_REQUEST_PRINT_MSG,
+ UR_STATE_CANCEL_REQUEST_RESTART_LINK,
+ UR_STATE_COMMUNICATING_WAIT_FOR_DATA,
+ UR_STATE_WAIT_FOR_CONTACT_DATA,
+ UR_STATE_PRINT_CARD_INFO,
+ UR_STATE_WAIT_FINISH_READING_CARD,
+ UR_STATE_INTERACT_WITH_ATTENDANT,
+ UR_STATE_REGISTER_PROMPT,
+ UR_STATE_CANCEL_REGISTRATION_PROMPT,
+ UR_STATE_CHECK_TRADING_BOARD,
+ UR_STATE_TRADING_BOARD_LOAD,
+ UR_STATE_REGISTER_PROMPT_HANDLE_INPUT,
+ UR_STATE_TRADING_BOARD_HANDLE_INPUT,
+ UR_STATE_TRADE_PROMPT,
+ UR_STATE_TRADE_SELECT_MON,
+ UR_STATE_TRADE_OFFER_MON,
+ UR_STATE_REGISTER_REQUEST_TYPE,
+ UR_STATE_REGISTER_SELECT_MON_FADE,
+ UR_STATE_REGISTER_SELECT_MON,
+ UR_STATE_REGISTER_COMPLETE,
+ UR_STATE_CANCEL_REGISTRATION,
+};
+
+// States for sUnionRoomTrade.state
+enum {
+ URTRADE_STATE_NONE,
+ URTRADE_STATE_REGISTERING,
+ URTRADE_STATE_OFFERING,
+};
+
+// States for Task_TryBecomeLinkLeader
+enum {
+ LL_STATE_INIT,
+ LL_STATE_INIT2 = 3,
+ LL_STATE_GET_AWAITING_PLAYERS_TEXT,
+ LL_STATE_PRINT_AWAITING_PLAYERS,
+ LL_STATE_AWAIT_PLAYERS,
+ LL_STATE_ACCEPT_NEW_MEMBER_PROMPT,
+ LL_STATE_9 = 9,
+ LL_STATE_MEMBER_LEFT,
+ LL_STATE_ACCEPT_NEW_MEMBER_PROMPT_HANDLE_INPUT,
+ LL_STATE_UPDATE_AFTER_JOIN_REQUEST,
+ LL_STATE_ACCEPTED_FINAL_MEMBER,
+ LL_STATE_WAIT_AND_CONFIRM_MEMBERS,
+ LL_STATE_MEMBERS_OK_PROMPT,
+ LL_STATE_MEMBERS_OK_PROMPT_HANDLE_INPUT,
+ LL_STATE_CONFIRMED_MEMBERS,
+ LL_STATE_FINAL_MEMBER_CHECK,
+ LL_STATE_CANCEL_PROMPT,
+ LL_STATE_CANCEL_PROMPT_HANDLE_INPUT,
+ LL_STATE_SHUTDOWN_AND_RETRY,
+ LL_STATE_RETRY,
+ LL_STATE_SHUTDOWN_AND_FAIL,
+ LL_STATE_FAILED,
+ LL_STATE_TRY_START_ACTIVITY = 26,
+ LL_STATE_MEMBER_DISCONNECTED = 29,
+ LL_STATE_CANCEL_WITH_MSG
+};
+
+// States for Task_TryJoinLinkGroup
+enum {
+ LG_STATE_INIT,
+ LG_STATE_CHOOSE_LEADER_MSG,
+ LG_STATE_INIT_WINDOWS,
+ LG_STATE_CHOOSE_LEADER_HANDLE_INPUT,
+ LG_STATE_ASK_JOIN_GROUP = 5,
+ LG_STATE_MAIN,
+ LG_STATE_ASK_LEAVE_GROUP,
+ LG_STATE_ASK_LEAVE_GROUP_HANDLE_INPUT,
+ LG_STATE_WAIT_LEAVE_GROUP,
+ LG_STATE_CANCEL_CHOOSE_LEADER,
+ LG_STATE_CANCELED,
+ LG_STATE_RFU_ERROR,
+ LG_STATE_RFU_ERROR_SHUTDOWN,
+ LG_STATE_DISCONNECTED,
+ LG_STATE_RETRY_CONNECTION,
+ LG_STATE_TRADE_NOT_READY = 18,
+ LG_STATE_TRADE_NOT_READY_RETRY,
+ LG_STATE_READY_START_ACTIVITY,
+ LG_STATE_START_ACTIVITY,
+ LG_STATE_SHUTDOWN = 23,
+};
+
static EWRAM_DATA u8 sUnionRoomPlayerName[12] = {};
EWRAM_DATA u8 gPlayerCurrActivity = 0;
static EWRAM_DATA u8 sPlayerActivityGroupSize = 0;
@@ -70,73 +191,73 @@ static struct WirelessLink_Group *sGroup;
static struct WirelessLink_URoom *sURoom;
// this file's functions
-static void UR_AddTextPrinterParameterized(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5);
-static u16 ReadAsU16(const u8 *ptr);
-static void Task_TryBecomeLinkLeader(u8 taskId);
-static void Task_TryJoinLinkGroup(u8 taskId);
-static void Task_ListenToWireless(u8 taskId);
-static void Task_MEvent_Leader(u8 taskId);
-static void Task_CardOrNewsWithFriend(u8 taskId);
-static void Task_CardOrNewsOverWireless(u8 taskId);
-static void Task_RunUnionRoom(u8 taskId);
-static void ClearUnkStruct_x1CArray(struct UnkStruct_Main4 *arg0, u8 count);
-static void ClearUnkStruct_x20Array(struct UnkStruct_x20 *arg0, u8 count);
-static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 *arg0, u32 arg1);
-static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 *arg0, u32 arg1);
-static bool8 PrintOnTextbox(u8 *textState, const u8 *str);
-static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data, u32 arg1, u32 arg2);
-static u8 sub_8013398(struct UnkStruct_Main0 *arg0);
-static s8 UnionRoomHandleYesNo(u8 *arg0, bool32 arg1);
-static void IntlConvPartnerUname7(u8 *dest, struct UnkStruct_x20 *arg1);
-static void Leader_DestroyResources(struct WirelessLink_Leader *data);
+static void UR_AddTextPrinterParameterized(u8, u8, const u8 *, u8, u8, u8);
+static u16 ReadAsU16(const u8 *);
+static void Task_TryBecomeLinkLeader(u8);
+static void Task_TryJoinLinkGroup(u8);
+static void Task_ListenToWireless(u8);
+static void Task_MEvent_Leader(u8);
+static void Task_CardOrNewsWithFriend(u8);
+static void Task_CardOrNewsOverWireless(u8);
+static void Task_RunUnionRoom(u8);
+static void ClearUnkStruct_x1CArray(struct UnkStruct_Main4 *, u8);
+static void ClearUnkStruct_x20Array(struct UnkStruct_x20 *, u8);
+static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 *, u32);
+static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 *, u32 );
+static bool8 PrintOnTextbox(u8 *, const u8 *);
+static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *, u32, u32);
+static u8 sub_8013398(struct UnkStruct_Main0 *);
+static s8 UnionRoomHandleYesNo(u8 *, bool32);
+static void IntlConvPartnerUname7(u8 *, struct UnkStruct_x20 *);
+static void Leader_DestroyResources(struct WirelessLink_Leader *);
static void CreateTask_RunScriptAndFadeToActivity(void);
-static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *arg0);
-static void PrintGroupMemberCandidateOnWindowWithColor(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
-static u32 Findx20Inx1CArray(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
-static u8 Appendx1Ctox20(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2);
+static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *);
+static void PrintGroupMemberCandidateOnWindowWithColor(u8, u8, u8, struct UnkStruct_x20 *, u8, u8 );
+static u32 Findx20Inx1CArray(struct UnkStruct_x20 *, struct UnkStruct_x1C *);
+static u8 Appendx1Ctox20(struct UnkStruct_x20 *, struct UnkStruct_x1C *, u8);
static u8 GetNewLeaderCandidate(void);
-static u32 IsTryingToTradeAcrossVersionTooSoon(struct WirelessLink_Group *data, s32 id);
-static void AskToJoinRfuGroup(struct WirelessLink_Group *data, s32 id);
+static u32 IsTryingToTradeAcrossVersionTooSoon(struct WirelessLink_Group *, s32);
+static void AskToJoinRfuGroup(struct WirelessLink_Group *, s32);
static void JoinGroup_EnableScriptContexts(void);
-static void PrintUnionRoomGroupOnWindow(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
-static bool32 AreUnionRoomPlayerGnamesDifferent(struct WirelessGnameUnamePair *arg0, struct WirelessGnameUnamePair *arg1);
-static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *arg0, u8 multiplayerId);
-static void ResetUnionRoomTrade(struct UnionRoomTrade *arg0);
+static void PrintUnionRoomGroupOnWindow(u8, u8, u8, struct UnkStruct_x20 *, u8, u8);
+static bool32 AreUnionRoomPlayerGnamesDifferent(struct WirelessGnameUnamePair *, struct WirelessGnameUnamePair *);
+static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *, u8);
+static void ResetUnionRoomTrade(struct UnionRoomTrade *);
static void CreateTask_StartActivity(void);
-static bool32 HasWonderCardOrNewsByLinkGroup(struct GFtgtGname *arg0, s16 arg1);
-static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 *arg0, struct UnkStruct_Main4 *arg1, u32 arg2);
-static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade *trade);
-static void RegisterTradeMon(u32 monId, struct UnionRoomTrade *arg1);
+static bool32 HasWonderCardOrNewsByLinkGroup(struct GFtgtGname *, s16);
+static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 *, struct UnkStruct_Main4 *, u32);
+static bool32 RegisterTradeMonAndGetIsEgg(u32, struct UnionRoomTrade *);
+static void RegisterTradeMon(u32, struct UnionRoomTrade *);
static void UR_EnableScriptContext2AndFreezeObjectEvents(void);
-static bool32 PlayerIsTalkingToUnionRoomAide(void);
+static bool32 IsPlayerFacingTradingBoard(void);
static u8 HandlePlayerListUpdate(void);
-static bool32 PollPartnerYesNoResponse(struct WirelessLink_URoom *data);
-static void ReceiveUnionRoomActivityPacket(struct WirelessLink_URoom *data);
-static u8 GetActivePartnerSpriteGenderParam(struct WirelessLink_URoom *data);
-static bool32 UnionRoom_HandleContactFromOtherPlayer(struct WirelessLink_URoom *data);
+static bool32 PollPartnerYesNoResponse(struct WirelessLink_URoom *);
+static void ReceiveUnionRoomActivityPacket(struct WirelessLink_URoom *);
+static u8 GetActivePartnerSpriteGenderParam(struct WirelessLink_URoom *);
+static bool32 UnionRoom_HandleContactFromOtherPlayer(struct WirelessLink_URoom *);
static bool32 UR_RunTextPrinters_CheckPrinter0Active(void);
-static s32 GetUnionRoomPlayerGender(s32 arg1, struct UnkStruct_Main0 *arg0);
-static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender);
-static void HandleCancelTrade(bool32 arg0);
-static s32 ListMenuHandler_AllItemsAvailable(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate);
-static s32 TradeBoardMenuHandler(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate, struct UnkStruct_Main0 *arg6);
-static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1);
+static s32 GetUnionRoomPlayerGender(s32, struct UnkStruct_Main0 *);
+static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 *, u8, u8, u32);
+static void HandleCancelActivity(bool32);
+static s32 ListMenuHandler_AllItemsAvailable(u8 *, u8 *, u8 *, const struct WindowTemplate *, const struct ListMenuTemplate *);
+static s32 TradeBoardMenuHandler(u8 *, u8 *, u8 *, u8 *, const struct WindowTemplate *, const struct ListMenuTemplate *, struct UnkStruct_Main0 *);
+static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 *, s32);
static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
-static u32 GetResponseIdx_InviteToURoomActivity(s32 arg0);
-static void ViewURoomPartnerTrainerCard(u8 *unused, struct WirelessLink_URoom *data, bool8 arg2);
-static void GetURoomActivityRejectMsg(u8 *dst, s32 arg1, u32 playerGender);
-static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 *arg0);
-static void GetURoomActivityStartMsg(u8 *dst, u8 arg1);
+static u32 GetResponseIdx_InviteToURoomActivity(s32);
+static void ViewURoomPartnerTrainerCard(u8 *, struct WirelessLink_URoom *, bool8);
+static void GetURoomActivityRejectMsg(u8 *, s32, u32);
+static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 *);
+static void GetURoomActivityStartMsg(u8 *, u8);
static void UR_ClearBg0(void);
-static s32 IsRequestedTypeOrEggInPlayerParty(u32 type, u32 species);
-static bool32 UR_PrintFieldMessage(const u8 *src);
-static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *arg2, struct WirelessLink_URoom *data);
+static s32 IsRequestedTypeOrEggInPlayerParty(u32, u32);
+static bool32 UR_PrintFieldMessage(const u8 *);
+static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *);
static void Task_InitUnionRoom(u8 taskId);
-static bool8 AreGnameUnameDifferent(struct WirelessGnameUnamePair* arg0, const struct WirelessGnameUnamePair* arg1);
-static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 itemId, u8 y);
-static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 itemId, u8 y);
-static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y);
-static void nullsub_14(u8 windowId, s32 itemId, u8 y);
+static bool8 AreGnameUnameDifferent(struct WirelessGnameUnamePair*, const struct WirelessGnameUnamePair*);
+static void ItemPrintFunc_PossibleGroupMembers(u8, s32, u8);
+static void ListMenuItemPrintFunc_UnionRoomGroups(u8, s32, u8);
+static void TradeBoardListMenuItemPrintFunc(u8, s32, u8);
+static void nullsub_14(u8, s32, u8);
#include "data/union_room.h"
@@ -234,9 +355,9 @@ void TryBecomeLinkLeader(void)
sWirelessLinkMain.leader = data = (void*)(gTasks[taskId].data);
sLeader = data;
- data->state = 0;
+ data->state = LL_STATE_INIT;
data->textState = 0;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = LINKUP_ONGOING;
}
static void Task_TryBecomeLinkLeader(u8 taskId)
@@ -246,7 +367,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
switch (data->state)
{
- case 0:
+ case LL_STATE_INIT:
if (gSpecialVar_0x8004 == LINK_GROUP_BATTLE_TOWER && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN)
gSpecialVar_0x8004++;
gPlayerCurrActivity = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004];
@@ -254,31 +375,31 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
SetHostRFUtgtGname(gPlayerCurrActivity, 0, 0);
SetWirelessCommType1();
OpenLink();
- InitializeRfuLinkManager_LinkLeader(sPlayerActivityGroupSize & 0xF);
- data->state = 3;
+ InitializeRfuLinkManager_LinkLeader(GROUP_MAX(sPlayerActivityGroupSize));
+ data->state = LL_STATE_INIT2;
break;
- case 3:
+ case LL_STATE_INIT2:
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
data->field_0 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
data->field_8 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
ClearUnkStruct_x1CArray(data->field_4, 4);
ClearUnkStruct_x20Array(data->field_0->arr, 5);
LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].gname_uname.gname, data->field_0->arr[0].gname_uname.playerName);
- data->field_0->arr[0].field_18 = 0;
+ data->field_0->arr[0].timeoutCounter = 0;
data->field_0->arr[0].groupScheduledAnim = UNION_ROOM_SPAWN_IN;
- data->field_0->arr[0].field_1A_1 = 0;
+ data->field_0->arr[0].useRedText = FALSE;
data->field_0->arr[0].field_1B = 0;
data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF);
data->bButtonCancelWindowId = AddWindow(&sWindowTemplate_BButtonCancel);
- switch (sPlayerActivityGroupSize & 0xF)
+ switch (GROUP_MAX(sPlayerActivityGroupSize))
{
case 2:
case 3:
case 4:
- data->listWindowId = AddWindow(&gUnknown_082F011C);
+ data->listWindowId = AddWindow(&sWindowTemplate_PlayerList);
break;
case 5:
- data->listWindowId = AddWindow(&gUnknown_082F0124);
+ data->listWindowId = AddWindow(&sWindowTemplate_5PlayerList);
break;
}
data->nPlayerModeWindowId = AddWindow(&sWindowTemplate_NumPlayerMode);
@@ -299,13 +420,13 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
CopyBgTilemapBufferToVram(0);
data->playerCount = 1;
- data->state = 4;
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
break;
- case 4:
- StringCopy(gStringVar1, sLinkGroupActivityTexts[gPlayerCurrActivity]);
- if ((sPlayerActivityGroupSize >> 4) != 0)
+ case LL_STATE_GET_AWAITING_PLAYERS_TEXT:
+ StringCopy(gStringVar1, sLinkGroupActivityNameTexts[gPlayerCurrActivity]);
+ if (GROUP_MIN(sPlayerActivityGroupSize) != 0)
{
- if (data->playerCount > (sPlayerActivityGroupSize >> 4) - 1 && (sPlayerActivityGroupSize & 0xF) != 0)
+ if (data->playerCount > GROUP_MIN(sPlayerActivityGroupSize) - 1 && GROUP_MAX(sPlayerActivityGroupSize) != 0)
StringExpandPlaceholders(gStringVar4, sText_AwaitingLinkPressStart);
else
StringExpandPlaceholders(gStringVar4, sText_AwaitingCommunication);
@@ -316,108 +437,110 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
}
PrintNumPlayersWaitingForMsg(data->nPlayerModeWindowId, sPlayerActivityGroupSize, data->playerCount);
- data->state = 5;
+ data->state = LL_STATE_PRINT_AWAITING_PLAYERS;
break;
- case 5:
+ case LL_STATE_PRINT_AWAITING_PLAYERS:
if (PrintOnTextbox(&data->textState, gStringVar4))
- data->state = 6;
+ data->state = LL_STATE_AWAIT_PLAYERS;
break;
- case 6:
- Leader_SetStateIfMemberListChanged(data, 7, 10);
+ case LL_STATE_AWAIT_PLAYERS:
+ Leader_SetStateIfMemberListChanged(data, LL_STATE_ACCEPT_NEW_MEMBER_PROMPT, LL_STATE_MEMBER_LEFT);
if (gMain.newKeys & B_BUTTON)
{
if (data->playerCount == 1)
- data->state = 23;
- else if ((sPlayerActivityGroupSize & 0xF0) != 0)
- data->state = 30;
+ data->state = LL_STATE_SHUTDOWN_AND_FAIL;
+ else if (GROUP_MIN2(sPlayerActivityGroupSize) != 0)
+ data->state = LL_STATE_CANCEL_WITH_MSG;
else
- data->state = 19;
+ data->state = LL_STATE_CANCEL_PROMPT;
}
- if ((sPlayerActivityGroupSize >> 4) != 0
- && data->playerCount > (sPlayerActivityGroupSize >> 4) - 1
- && (sPlayerActivityGroupSize & 0xF) != 0
+ if (GROUP_MIN(sPlayerActivityGroupSize) != 0
+ && data->playerCount > GROUP_MIN(sPlayerActivityGroupSize) - 1
+ && GROUP_MAX(sPlayerActivityGroupSize) != 0
&& sub_8012240()
&& gMain.newKeys & START_BUTTON)
{
- data->state = 15;
+ data->state = LL_STATE_MEMBERS_OK_PROMPT;
LinkRfu_StopManagerAndFinalizeSlots();
}
- if (data->state == 6 && sub_80105EC())
+ if (data->state == LL_STATE_AWAIT_PLAYERS && sub_80105EC())
{
- data->state = 9;
+ data->state = LL_STATE_9;
}
break;
- case 9:
+ case LL_STATE_9:
if (!sub_80105EC())
{
- data->state = 6;
+ data->state = LL_STATE_AWAIT_PLAYERS;
data->playerCount = sub_8013398(data->field_0);
}
break;
- case 10:
- id = ((gPlayerCurrActivity & 0xF) == 2) ? 1 : 0;
+ case LL_STATE_MEMBER_LEFT:
+ // BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity
+ // This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE
+ // All this changes is which of two texts gets printed
+ id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0;
if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id]))
{
data->playerCount = sub_8013398(data->field_0);
RedrawListMenu(data->listTaskId);
- data->state = 4;
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
}
break;
- case 29:
- // Other player canceled.
- id = ((sPlayerActivityGroupSize & 0xF) == 2) ? 0 : 1;
+ case LL_STATE_MEMBER_DISCONNECTED:
+ id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1;
if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id]))
{
- data->state = 21;
+ data->state = LL_STATE_SHUTDOWN_AND_RETRY;
}
break;
- case 7:
+ case LL_STATE_ACCEPT_NEW_MEMBER_PROMPT:
if (PrintOnTextbox(&data->textState, gStringVar4))
{
- data->state = 11;
+ data->state = LL_STATE_ACCEPT_NEW_MEMBER_PROMPT_HANDLE_INPUT;
}
break;
- case 11:
- switch (UnionRoomHandleYesNo(&data->textState, TrainerIdAndNameStillInPartnersList(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName)))
+ case LL_STATE_ACCEPT_NEW_MEMBER_PROMPT_HANDLE_INPUT:
+ switch (UnionRoomHandleYesNo(&data->textState, HasTrainerLeftPartnersList(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName)))
{
- case 0:
+ case 0: // YES
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
- data->field_19 = 5;
- SendByteToPartnerByIdAndName(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
- data->state = 12;
+ data->joinRequestAnswer = RFU_STATUS_JOIN_GROUP_OK;
+ SendRfuStatusToPartner(data->joinRequestAnswer, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ data->state = LL_STATE_UPDATE_AFTER_JOIN_REQUEST;
break;
- case 1:
+ case 1: // NO
case -1:
- data->field_19 = 6;
- SendByteToPartnerByIdAndName(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
- data->state = 12;
+ data->joinRequestAnswer = RFU_STATUS_JOIN_GROUP_NO;
+ SendRfuStatusToPartner(data->joinRequestAnswer, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ data->state = LL_STATE_UPDATE_AFTER_JOIN_REQUEST;
break;
case -3:
- data->state = 9;
+ data->state = LL_STATE_9;
break;
}
break;
- case 12:
- val = WaitSendByteToPartnerByIdAndName(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
- if (val == 1)
+ case LL_STATE_UPDATE_AFTER_JOIN_REQUEST:
+ val = WaitSendRfuStatusToPartner(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ if (val == 1) // Send complete
{
- if (data->field_19 == 5)
+ if (data->joinRequestAnswer == RFU_STATUS_JOIN_GROUP_OK)
{
data->field_0->arr[data->playerCount].field_1B = 0;
RedrawListMenu(data->listTaskId);
data->playerCount++;
- if (data->playerCount == (sPlayerActivityGroupSize & 0xF))
+ if (data->playerCount == GROUP_MAX(sPlayerActivityGroupSize))
{
- if ((sPlayerActivityGroupSize & 0xF0) != 0 || data->playerCount == 4)
+ if (GROUP_MIN2(sPlayerActivityGroupSize) != 0 || data->playerCount == 4)
{
- data->state = 15;
+ data->state = LL_STATE_MEMBERS_OK_PROMPT;
}
else
{
IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[data->playerCount - 1]);
StringExpandPlaceholders(gStringVar4, sText_AnOKWasSentToPlayer);
- data->state = 13;
+ data->state = LL_STATE_ACCEPTED_FINAL_MEMBER;
}
LinkRfu_StopManagerAndFinalizeSlots();
@@ -425,125 +548,125 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
}
else
{
- data->state = 4;
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
}
}
- else
+ else // Member disconnected
{
RequestDisconnectSlotByTrainerNameAndId(data->field_0->arr[data->playerCount].gname_uname.playerName, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId));
data->field_0->arr[data->playerCount].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
sub_8013398(data->field_0);
RedrawListMenu(data->listTaskId);
- data->state = 4;
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
}
- data->field_19 = 0;
+ data->joinRequestAnswer = 0;
}
else if (val == 2)
{
- RfuSetErrorStatus(0, 0);
- data->state = 4;
+ RfuSetStatus(RFU_STATUS_OK, 0);
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
}
break;
- case 13:
+ case LL_STATE_ACCEPTED_FINAL_MEMBER:
if (PrintOnTextbox(&data->textState, gStringVar4))
- data->state = 14;
+ data->state = LL_STATE_WAIT_AND_CONFIRM_MEMBERS;
break;
- case 14:
+ case LL_STATE_WAIT_AND_CONFIRM_MEMBERS:
if (++data->delayTimerAfterOk > 120)
- data->state = 17;
+ data->state = LL_STATE_CONFIRMED_MEMBERS;
break;
- case 15:
+ case LL_STATE_MEMBERS_OK_PROMPT:
if (PrintOnTextbox(&data->textState, sText_AreTheseMembersOK))
- data->state = 16;
+ data->state = LL_STATE_MEMBERS_OK_PROMPT_HANDLE_INPUT;
break;
- case 16:
+ case LL_STATE_MEMBERS_OK_PROMPT_HANDLE_INPUT:
switch (UnionRoomHandleYesNo(&data->textState, FALSE))
{
- case 0:
- data->state = 17;
+ case 0: // YES
+ data->state = LL_STATE_CONFIRMED_MEMBERS;
break;
- case 1:
+ case 1: // NO
case -1:
- if ((sPlayerActivityGroupSize & 0xF0) != 0)
- data->state = 30;
+ if (GROUP_MIN2(sPlayerActivityGroupSize) != 0)
+ data->state = LL_STATE_CANCEL_WITH_MSG;
else
- data->state = 19;
+ data->state = LL_STATE_CANCEL_PROMPT;
break;
}
break;
- case 19:
+ case LL_STATE_CANCEL_PROMPT:
if (PrintOnTextbox(&data->textState, sText_CancelModeWithTheseMembers))
- data->state = 20;
+ data->state = LL_STATE_CANCEL_PROMPT_HANDLE_INPUT;
break;
- case 20:
+ case LL_STATE_CANCEL_PROMPT_HANDLE_INPUT:
switch (UnionRoomHandleYesNo(&data->textState, FALSE))
{
- case 0:
- data->state = 23;
+ case 0: // YES
+ data->state = LL_STATE_SHUTDOWN_AND_FAIL;
break;
- case 1:
+ case 1: // NO
case -1:
- if ((sPlayerActivityGroupSize & 0xF0) != 0)
- data->state = 15;
- else if (data->playerCount == (sPlayerActivityGroupSize & 0xF))
- data->state = 15;
+ if (GROUP_MIN2(sPlayerActivityGroupSize) != 0)
+ data->state = LL_STATE_MEMBERS_OK_PROMPT;
+ else if (data->playerCount == GROUP_MAX(sPlayerActivityGroupSize))
+ data->state = LL_STATE_MEMBERS_OK_PROMPT;
else
- data->state = 4;
+ data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
break;
}
break;
- case 17:
- if (!Leader_SetStateIfMemberListChanged(data, 7, 29))
- data->state = 18;
+ case LL_STATE_CONFIRMED_MEMBERS:
+ if (!Leader_SetStateIfMemberListChanged(data, LL_STATE_ACCEPT_NEW_MEMBER_PROMPT, LL_STATE_MEMBER_DISCONNECTED))
+ data->state = LL_STATE_FINAL_MEMBER_CHECK;
break;
- case 18:
+ case LL_STATE_FINAL_MEMBER_CHECK:
if (LmanAcceptSlotFlagIsNotZero())
{
if (WaitRfuState(FALSE))
{
- data->state = 26;
+ data->state = LL_STATE_TRY_START_ACTIVITY;
}
else
{
- if (++data->field_1A > 300)
+ if (++data->memberConfirmTimeout > 300)
{
- data->state = 29;
+ data->state = LL_STATE_MEMBER_DISCONNECTED;
data->textState = 0;
}
}
}
else
{
- data->state = 29;
+ data->state = LL_STATE_MEMBER_DISCONNECTED;
data->textState = 0;
}
break;
- case 30:
+ case LL_STATE_CANCEL_WITH_MSG:
if (PrintOnTextbox(&data->textState, sText_ModeWithTheseMembersWillBeCanceled))
- data->state = 23;
+ data->state = LL_STATE_SHUTDOWN_AND_FAIL;
break;
- case 21:
- case 23:
+ case LL_STATE_SHUTDOWN_AND_RETRY:
+ case LL_STATE_SHUTDOWN_AND_FAIL:
DestroyWirelessStatusIndicatorSprite();
LinkRfu_Shutdown();
Leader_DestroyResources(data);
- data->state++;
+ data->state++; // LL_STATE_RETRY or LL_STATE_FAILED
break;
- case 24:
+ case LL_STATE_FAILED:
EnableBothScriptContexts();
DestroyTask(taskId);
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
break;
- case 22:
+ case LL_STATE_RETRY:
EnableBothScriptContexts();
DestroyTask(taskId);
- gSpecialVar_Result = 8;
+ gSpecialVar_Result = LINKUP_RETRY_ROLE_ASSIGN;
break;
- case 26:
- if (RfuIsErrorStatus1or2())
+ case LL_STATE_TRY_START_ACTIVITY:
+ if (RfuHasErrored())
{
- data->state = 29;
+ data->state = LL_STATE_MEMBER_DISCONNECTED;
}
else
{
@@ -683,7 +806,7 @@ static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 caseId)
}
}
-static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data, u32 state1, u32 state2)
+static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data, u32 joinedState, u32 droppedState)
{
switch (LeaderUpdateGroupMembership(data->field_0))
{
@@ -692,12 +815,12 @@ static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data
RedrawListMenu(data->listTaskId);
IntlConvPartnerUname7(gStringVar2, &data->field_0->arr[data->playerCount]);
Leader_GetAcceptNewMemberPrompt(gStringVar4, gPlayerCurrActivity);
- data->state = state1;
+ data->state = joinedState;
break;
case UNION_ROOM_SPAWN_OUT:
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
RedrawListMenu(data->listTaskId);
- data->state = state2;
+ data->state = droppedState;
return TRUE;
}
@@ -707,20 +830,20 @@ static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 id, u8 y)
{
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
- u8 var = 0;
+ u8 colorIdx = UR_COLOR_DKE_WHT_LTE;
switch (data->field_0->arr[id].groupScheduledAnim)
{
case UNION_ROOM_SPAWN_IN:
if (data->field_0->arr[id].field_1B != 0)
- var = 2;
+ colorIdx = UR_COLOR_GRN_WHT_LTG;
break;
case UNION_ROOM_SPAWN_OUT:
- var = 1;
+ colorIdx = UR_COLOR_RED_WHT_LTR;
break;
}
- PrintGroupMemberCandidateOnWindowWithColor(windowId, 0, y, &data->field_0->arr[id], var, id);
+ PrintGroupMemberCandidateOnWindowWithColor(windowId, 0, y, &data->field_0->arr[id], colorIdx, id);
}
static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *arg0)
@@ -730,7 +853,7 @@ static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *arg0)
u8 i;
s32 id;
- for (i = 1; i < 5; i++)
+ for (i = 1; i < MAX_RFU_PLAYERS; i++)
{
u16 var = data->field_0->arr[i].groupScheduledAnim;
if (var == UNION_ROOM_SPAWN_IN)
@@ -739,7 +862,7 @@ static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *arg0)
if (id != 0xFF)
{
data->field_0->arr[i].gname_uname = data->field_4->arr[id].gname_uname;
- data->field_0->arr[i].field_18 = 1;
+ data->field_0->arr[i].timeoutCounter = 1;
}
else
{
@@ -750,11 +873,11 @@ static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 *arg0)
}
for (id = 0; id < RFU_CHILD_MAX; id++)
- Appendx1Ctox20(data->field_0->arr, &data->field_4->arr[id], 5);
+ Appendx1Ctox20(data->field_0->arr, &data->field_4->arr[id], MAX_RFU_PLAYERS);
if (ret != UNION_ROOM_SPAWN_OUT)
{
- for (id = 0; id < 5; id++)
+ for (id = 0; id < MAX_RFU_PLAYERS; id++)
{
if (data->field_0->arr[id].field_1B != 0)
ret = UNION_ROOM_SPAWN_IN;
@@ -769,13 +892,13 @@ static u8 sub_8013398(struct UnkStruct_Main0 *arg0)
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
u8 copiedCount;
s32 i;
- u8 ret;
+ u8 playerCount;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
data->field_8->arr[i] = data->field_0->arr[i];
copiedCount = 0;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
if (data->field_8->arr[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN)
{
@@ -784,28 +907,28 @@ static u8 sub_8013398(struct UnkStruct_Main0 *arg0)
}
}
- ret = copiedCount;
- for (; copiedCount < 5; copiedCount++)
+ playerCount = copiedCount;
+ for (; copiedCount < MAX_RFU_PLAYERS; copiedCount++)
{
data->field_0->arr[copiedCount].gname_uname = sWirelessGnameUnamePair_Dummy;
- data->field_0->arr[copiedCount].field_18 = 0;
+ data->field_0->arr[copiedCount].timeoutCounter = 0;
data->field_0->arr[copiedCount].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
- data->field_0->arr[copiedCount].field_1A_1 = 0;
+ data->field_0->arr[copiedCount].useRedText = FALSE;
data->field_0->arr[copiedCount].field_1B = 0;
}
- for (i = 0; i < 5; i++)
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
if (data->field_0->arr[i].groupScheduledAnim != UNION_ROOM_SPAWN_IN)
continue;
- if (data->field_0->arr[i].field_1B != 0x40)
+ if (data->field_0->arr[i].field_1B != 64)
continue;
- ret = i;
+ playerCount = i;
break;
}
- return ret;
+ return playerCount;
}
void TryJoinLinkGroup(void)
@@ -817,9 +940,9 @@ void TryJoinLinkGroup(void)
sWirelessLinkMain.group = data = (void*)(gTasks[taskId].data);
sGroup = data;
- data->state = 0;
+ data->state = LG_STATE_INIT;
data->textState = 0;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = LINKUP_ONGOING;
}
static void Task_TryJoinLinkGroup(u8 taskId)
@@ -829,7 +952,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
switch (data->state)
{
- case 0:
+ case LG_STATE_INIT:
if (gSpecialVar_0x8004 == LINK_GROUP_BATTLE_TOWER && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN)
gSpecialVar_0x8004++;
gPlayerCurrActivity = sLinkGroupToURoomActivity[gSpecialVar_0x8004];
@@ -839,13 +962,13 @@ static void Task_TryJoinLinkGroup(u8 taskId)
InitializeRfuLinkManager_JoinGroup();
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
- data->state = 1;
+ data->state = LG_STATE_CHOOSE_LEADER_MSG;
break;
- case 1:
+ case LG_STATE_CHOOSE_LEADER_MSG:
if (PrintOnTextbox(&data->textState, sChooseTrainerTexts[gSpecialVar_0x8004]))
- data->state = 2;
+ data->state = LG_STATE_INIT_WINDOWS;
break;
- case 2:
+ case LG_STATE_INIT_WINDOWS:
ClearUnkStruct_x1CArray(data->field_4, 4);
ClearUnkStruct_x20Array(data->field_0->arr, 16);
data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, gSpecialVar_0x8004);
@@ -870,9 +993,9 @@ static void Task_TryJoinLinkGroup(u8 taskId)
CopyBgTilemapBufferToVram(0);
data->leaderId = 0;
- data->state = 3;
+ data->state = LG_STATE_CHOOSE_LEADER_HANDLE_INPUT;
break;
- case 3:
+ case LG_STATE_CHOOSE_LEADER_HANDLE_INPUT:
id = GetNewLeaderCandidate();
switch (id)
{
@@ -885,22 +1008,22 @@ static void Task_TryJoinLinkGroup(u8 taskId)
if (gMain.newKeys & A_BUTTON && id != -1)
{
// this unused variable along with the assignment is needed to match
- u32 unusedVar;
- unusedVar = data->field_0->arr[id].gname_uname.gname.activity;
+ u32 activity = data->field_0->arr[id].gname_uname.gname.activity;
if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[id].gname_uname.gname.started)
{
- u32 var = IsTryingToTradeAcrossVersionTooSoon(data, id);
- if (var == 0)
+ u32 readyStatus = IsTryingToTradeAcrossVersionTooSoon(data, id);
+ if (readyStatus == UR_TRADE_READY)
{
+ // Trading is allowed, or not trading at all
AskToJoinRfuGroup(data, id);
- data->state = 5;
+ data->state = LG_STATE_ASK_JOIN_GROUP;
PlaySE(SE_PN_ON);
}
else
{
- StringCopy(gStringVar4, sCantTransmitToTrainerTexts[var - 1]);
- data->state = 18;
+ StringCopy(gStringVar4, sCantTransmitToTrainerTexts[readyStatus - 1]);
+ data->state = LG_STATE_TRADE_NOT_READY;
PlaySE(SE_PN_ON);
}
}
@@ -911,7 +1034,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- data->state = 10;
+ data->state = LG_STATE_CANCEL_CHOOSE_LEADER;
}
break;
default:
@@ -919,19 +1042,19 @@ static void Task_TryJoinLinkGroup(u8 taskId)
break;
}
break;
- case 5:
+ case LG_STATE_ASK_JOIN_GROUP:
GetYouAskedToJoinGroupPleaseWaitMessage(gStringVar4, gPlayerCurrActivity);
if (PrintOnTextbox(&data->textState, gStringVar4))
{
IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[data->leaderId]);
- data->state = 6;
+ data->state = LG_STATE_MAIN;
}
break;
- case 6:
+ case LG_STATE_MAIN:
if (gReceivedRemoteLinkPlayers)
{
gPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity;
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
switch (gPlayerCurrActivity)
{
case ACTIVITY_BATTLE_SINGLE:
@@ -954,43 +1077,43 @@ static void Task_TryJoinLinkGroup(u8 taskId)
case ACTIVITY_CONTEST_CUTE:
case ACTIVITY_CONTEST_SMART:
case ACTIVITY_CONTEST_TOUGH:
- data->state = 20;
+ data->state = LG_STATE_READY_START_ACTIVITY;
return;
}
}
- switch (RfuGetErrorStatus())
+ switch (RfuGetStatus())
{
- case 1:
- data->state = 12;
+ case RFU_STATUS_FATAL_ERROR:
+ data->state = LG_STATE_RFU_ERROR;
break;
- case 2:
- case 6:
- case 9:
- data->state = 14;
+ case RFU_STATUS_CONNECTION_ERROR:
+ case RFU_STATUS_JOIN_GROUP_NO:
+ case RFU_STATUS_LEAVE_GROUP:
+ data->state = LG_STATE_DISCONNECTED;
break;
- case 5:
+ case RFU_STATUS_JOIN_GROUP_OK:
GetGroupLeaderSentAnOKMessage(gStringVar4, gPlayerCurrActivity);
if (PrintOnTextbox(&data->textState, gStringVar4))
{
if (gPlayerCurrActivity == ACTIVITY_BATTLE_TOWER || gPlayerCurrActivity == ACTIVITY_BATTLE_TOWER_OPEN)
{
- RfuSetErrorStatus(12, 0);
+ RfuSetStatus(RFU_STATUS_ACK_JOIN_GROUP, 0);
}
else
{
- RfuSetErrorStatus(7, 0);
- StringCopy(gStringVar1, sLinkGroupActivityTexts[gPlayerCurrActivity]);
+ RfuSetStatus(RFU_STATUS_WAIT_ACK_JOIN_GROUP, 0);
+ StringCopy(gStringVar1, sLinkGroupActivityNameTexts[gPlayerCurrActivity]);
StringExpandPlaceholders(gStringVar4, sText_AwaitingOtherMembers);
}
}
break;
- case 7:
+ case RFU_STATUS_WAIT_ACK_JOIN_GROUP:
if (data->delayBeforePrint > 240)
{
if (PrintOnTextbox(&data->textState, gStringVar4))
{
- RfuSetErrorStatus(12, 0);
+ RfuSetStatus(RFU_STATUS_ACK_JOIN_GROUP, 0);
data->delayBeforePrint = 0;
}
}
@@ -1012,41 +1135,41 @@ static void Task_TryJoinLinkGroup(u8 taskId)
break;
}
- if (!RfuGetErrorStatus() && gMain.newKeys & B_BUTTON)
- data->state = 7;
+ if (RfuGetStatus() == RFU_STATUS_OK && gMain.newKeys & B_BUTTON)
+ data->state = LG_STATE_ASK_LEAVE_GROUP;
break;
- case 7:
+ case LG_STATE_ASK_LEAVE_GROUP:
if (PrintOnTextbox(&data->textState, sText_QuitBeingMember))
- data->state = 8;
+ data->state = LG_STATE_ASK_LEAVE_GROUP_HANDLE_INPUT;
break;
- case 8:
- switch (UnionRoomHandleYesNo(&data->textState, RfuGetErrorStatus()))
+ case LG_STATE_ASK_LEAVE_GROUP_HANDLE_INPUT:
+ switch (UnionRoomHandleYesNo(&data->textState, RfuGetStatus()))
{
- case 0:
- LinkRfuNIsend8();
- data->state = 9;
+ case 0: // YES
+ SendLeaveGroupNotice();
+ data->state = LG_STATE_WAIT_LEAVE_GROUP;
RedrawListMenu(data->listTaskId);
break;
- case 1:
+ case 1: // NO
case -1:
- data->state = 5;
+ data->state = LG_STATE_ASK_JOIN_GROUP;
RedrawListMenu(data->listTaskId);
break;
case -3:
- data->state = 6;
+ data->state = LG_STATE_MAIN;
RedrawListMenu(data->listTaskId);
break;
}
break;
- case 9:
- if (RfuGetErrorStatus())
- data->state = 6;
+ case LG_STATE_WAIT_LEAVE_GROUP:
+ if (RfuGetStatus())
+ data->state = LG_STATE_MAIN;
break;
- case 10:
- case 12:
- case 14:
- case 18:
- case 20:
+ case LG_STATE_CANCEL_CHOOSE_LEADER: // next: LG_STATE_CANCELED
+ case LG_STATE_RFU_ERROR: // next: LG_STATE_RFU_ERROR_SHUTDOWN
+ case LG_STATE_DISCONNECTED: // next: LG_STATE_RETRY_CONNECTION
+ case LG_STATE_TRADE_NOT_READY: // next: LG_STATE_TRADE_NOT_READY_RETRY
+ case LG_STATE_READY_START_ACTIVITY: // next: LG_STATE_START_ACTIVITY
ClearWindowTilemap(data->playerNameAndIdWindowId);
ClearStdWindowAndFrame(data->playerNameAndIdWindowId, FALSE);
DestroyListMenuTask(data->listTaskId, 0, 0);
@@ -1061,40 +1184,43 @@ static void Task_TryJoinLinkGroup(u8 taskId)
Free(data->field_4);
data->state++;
break;
- case 13:
+ case LG_STATE_RFU_ERROR_SHUTDOWN:
DestroyWirelessStatusIndicatorSprite();
- if (PrintOnTextbox(&data->textState, sPlayerDisconnectedTexts[RfuGetErrorStatus()]))
+ if (PrintOnTextbox(&data->textState, sPlayerDisconnectedTexts[RfuGetStatus()]))
{
- gSpecialVar_Result = 6;
- data->state = 23;
+ gSpecialVar_Result = LINKUP_CONNECTION_ERROR;
+ data->state = LG_STATE_SHUTDOWN;
}
break;
- case 11:
+ case LG_STATE_CANCELED:
DestroyWirelessStatusIndicatorSprite();
- gSpecialVar_Result = 5;
- data->state = 23;
+ gSpecialVar_Result = LINKUP_FAILED;
+ data->state = LG_STATE_SHUTDOWN;
break;
- case 15:
+ case LG_STATE_RETRY_CONNECTION:
+ // Failure from disconnection
+ // Happens if player or required member(s) leave group
+ // or if player is rejected from joining group
DestroyWirelessStatusIndicatorSprite();
- if (PrintOnTextbox(&data->textState, sPlayerDisconnectedTexts[RfuGetErrorStatus()]))
+ if (PrintOnTextbox(&data->textState, sPlayerDisconnectedTexts[RfuGetStatus()]))
{
- gSpecialVar_Result = 8;
- data->state = 23;
+ gSpecialVar_Result = LINKUP_RETRY_ROLE_ASSIGN;
+ data->state = LG_STATE_SHUTDOWN;
}
break;
- case 19:
+ case LG_STATE_TRADE_NOT_READY_RETRY:
if (PrintOnTextbox(&data->textState, gStringVar4))
{
- gSpecialVar_Result = 8;
- data->state = 23;
+ gSpecialVar_Result = LINKUP_RETRY_ROLE_ASSIGN;
+ data->state = LG_STATE_SHUTDOWN;
}
break;
- case 23:
+ case LG_STATE_SHUTDOWN:
DestroyTask(taskId);
JoinGroup_EnableScriptContexts();
LinkRfu_Shutdown();
break;
- case 21:
+ case LG_STATE_START_ACTIVITY:
CreateTask_RunScriptAndFadeToActivity();
DestroyTask(taskId);
break;
@@ -1108,16 +1234,16 @@ static u32 IsTryingToTradeAcrossVersionTooSoon(struct WirelessLink_Group *data,
if (gPlayerCurrActivity == ACTIVITY_TRADE && structPtr->gname_uname.gname.unk_00.version != VERSION_EMERALD)
{
if (!(gSaveBlock2Ptr->specialSaveWarpFlags & CHAMPION_SAVEWARP))
- return 1;
+ return UR_TRADE_PLAYER_NOT_READY;
else if (structPtr->gname_uname.gname.unk_00.isChampion)
- return 0;
+ return UR_TRADE_READY;
}
else
{
- return 0;
+ return UR_TRADE_READY;
}
- return 2;
+ return UR_TRADE_PARTNER_NOT_READY;
}
static void AskToJoinRfuGroup(struct WirelessLink_Group *data, s32 id)
@@ -1127,7 +1253,7 @@ static void AskToJoinRfuGroup(struct WirelessLink_Group *data, s32 id)
CreateWirelessStatusIndicatorSprite(0, 0);
RedrawListMenu(data->listTaskId);
IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[data->leaderId]);
- UpdateGameDataWithActivitySpriteGendersFlag(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, 1);
+ UpdateGameData_SetActivity(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, TRUE);
CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.playerName, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
}
@@ -1216,7 +1342,7 @@ static u8 URoomGroupListGetTextColor(struct WirelessLink_Group *data, u32 id)
{
if (data->field_0->arr[id].gname_uname.gname.started)
return UR_COLOR_WHT_WHT_LTE;
- else if (data->field_0->arr[id].field_1A_1 != 0)
+ else if (data->field_0->arr[id].useRedText)
return UR_COLOR_RED_WHT_LTR;
else if (data->field_0->arr[id].field_1B != 0)
return UR_COLOR_GRN_WHT_LTG;
@@ -1272,14 +1398,14 @@ static u8 GetNewLeaderCandidate(void)
ret = 1;
}
- data->field_0->arr[i].field_18 = 0;
+ data->field_0->arr[i].timeoutCounter = 0;
}
else
{
if (data->field_0->arr[i].groupScheduledAnim != UNION_ROOM_SPAWN_OUT)
{
- data->field_0->arr[i].field_18++;
- if (data->field_0->arr[i].field_18 >= 300)
+ data->field_0->arr[i].timeoutCounter++;
+ if (data->field_0->arr[i].timeoutCounter >= 300)
{
data->field_0->arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_OUT;
ret = 2;
@@ -1422,8 +1548,7 @@ void StartUnionRoomBattle(u16 battleFlags)
PlayBattleBGM();
}
-// TODO: pokefirered bad name
-static void sub_8014290(u16 linkService, u16 x, u16 y)
+static void WarpForWirelessMinigame(u16 linkService, u16 x, u16 y)
{
VarSet(VAR_CABLE_CLUB_STATE, linkService);
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
@@ -1431,8 +1556,7 @@ static void sub_8014290(u16 linkService, u16 x, u16 y)
WarpIntoMap();
}
-// TODO: pokefirered bad name
-static void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService)
+static void WarpForCableClubActivity(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService)
{
gSpecialVar_0x8004 = linkService;
VarSet(VAR_CABLE_CLUB_STATE, linkService);
@@ -1506,7 +1630,7 @@ static void Task_StartActivity(u8 taskId)
HealPlayerParty();
SavePlayerParty();
LoadPlayerBag();
- sub_8014304(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_BATTLE_DOUBLE:
@@ -1515,7 +1639,7 @@ static void Task_StartActivity(u8 taskId)
SavePlayerParty();
LoadPlayerBag();
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
- sub_8014304(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_BATTLE_MULTI:
@@ -1524,19 +1648,19 @@ static void Task_StartActivity(u8 taskId)
SavePlayerParty();
LoadPlayerBag();
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
- sub_8014304(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_TRADE:
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CleanupOverworldWindowsAndTilemaps();
- sub_8014304(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
+ WarpForCableClubActivity(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_RECORD_CORNER:
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CleanupOverworldWindowsAndTilemaps();
- sub_8014304(MAP_GROUP(RECORD_CORNER), MAP_NUM(RECORD_CORNER), 8, 9, USING_RECORD_CORNER);
+ WarpForCableClubActivity(MAP_GROUP(RECORD_CORNER), MAP_NUM(RECORD_CORNER), 8, 9, USING_RECORD_CORNER);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_TRADE | IN_UNION_ROOM:
@@ -1562,21 +1686,21 @@ static void Task_StartActivity(u8 taskId)
SetMainCallback2(CB2_ShowCard);
break;
case ACTIVITY_POKEMON_JUMP:
- sub_8014290(USING_MINIGAME, 5, 1);
+ WarpForWirelessMinigame(USING_MINIGAME, 5, 1);
StartPokemonJump(GetCursorSelectionMonId(), CB2_LoadMap);
break;
case ACTIVITY_BERRY_CRUSH:
- sub_8014290(USING_BERRY_CRUSH, 9, 1);
+ WarpForWirelessMinigame(USING_BERRY_CRUSH, 9, 1);
StartBerryCrush(CB2_LoadMap);
break;
case ACTIVITY_BERRY_PICK:
- sub_8014290(USING_MINIGAME, 5, 1);
+ WarpForWirelessMinigame(USING_MINIGAME, 5, 1);
StartDodrioBerryPicking(GetCursorSelectionMonId(), CB2_LoadMap);
break;
}
DestroyTask(taskId);
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = LINKUP_SUCCESS;
if (gPlayerCurrActivity != (ACTIVITY_TRADE | IN_UNION_ROOM))
ScriptContext2_Disable();
}
@@ -1628,7 +1752,7 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
case 2:
if (!gPaletteFade.active)
{
- if (gPlayerCurrActivity == 29)
+ if (gPlayerCurrActivity == ACTIVITY_29)
{
DestroyTask(taskId);
SetMainCallback2(CB2_StartCreateTradeMenu);
@@ -1707,7 +1831,7 @@ void MEvent_CreateTask_Leader(u32 activity)
data->state = 0;
data->textState = 0;
data->activity = activity;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = LINKUP_ONGOING;
}
static void Task_MEvent_Leader(u8 taskId)
@@ -1735,13 +1859,13 @@ static void Task_MEvent_Leader(u8 taskId)
ClearUnkStruct_x1CArray(data->field_4, 4);
ClearUnkStruct_x20Array(data->field_0->arr, 5);
LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].gname_uname.gname, data->field_0->arr[0].gname_uname.playerName);
- data->field_0->arr[0].field_18 = 0;
+ data->field_0->arr[0].timeoutCounter = 0;
data->field_0->arr[0].groupScheduledAnim = UNION_ROOM_SPAWN_IN;
- data->field_0->arr[0].field_1A_1 = 0;
+ data->field_0->arr[0].useRedText = FALSE;
data->field_0->arr[0].field_1B = 0;
data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF);
- winTemplate = gUnknown_082F011C;
+ winTemplate = sWindowTemplate_PlayerList;
winTemplate.baseBlock = GetMysteryGiftBaseBlock();
winTemplate.paletteNum = 0xC;
data->listWindowId = AddWindow(&winTemplate);
@@ -1755,7 +1879,7 @@ static void Task_MEvent_Leader(u8 taskId)
data->state = 2;
break;
case 2:
- StringCopy(gStringVar1, sLinkGroupActivityTexts[gPlayerCurrActivity]);
+ StringCopy(gStringVar1, sLinkGroupActivityNameTexts[gPlayerCurrActivity]);
StringExpandPlaceholders_AwaitingCommFromAnother(gStringVar4, gPlayerCurrActivity);
data->state = 3;
break;
@@ -1790,23 +1914,23 @@ static void Task_MEvent_Leader(u8 taskId)
CreateWirelessStatusIndicatorSprite(0, 0);
data->field_0->arr[data->playerCount].field_1B = 0;
RedrawListMenu(data->listTaskId);
- data->field_19 = 5;
- SendByteToPartnerByIdAndName(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ data->joinRequestAnswer = RFU_STATUS_JOIN_GROUP_OK;
+ SendRfuStatusToPartner(data->joinRequestAnswer, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
data->state = 8;
break;
case 1:
case -1:
- data->field_19 = 6;
- SendByteToPartnerByIdAndName(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ data->joinRequestAnswer = RFU_STATUS_JOIN_GROUP_NO;
+ SendRfuStatusToPartner(data->joinRequestAnswer, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
data->state = 8;
break;
}
break;
case 8:
- val = WaitSendByteToPartnerByIdAndName(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
- if (val == 1)
+ val = WaitSendRfuStatusToPartner(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.playerName);
+ if (val == 1) // Send complete
{
- if (data->field_19 == 5)
+ if (data->joinRequestAnswer == RFU_STATUS_JOIN_GROUP_OK)
{
data->field_0->arr[data->playerCount].field_1B = 0;
RedrawListMenu(data->listTaskId);
@@ -1825,11 +1949,11 @@ static void Task_MEvent_Leader(u8 taskId)
data->state = 2;
}
- data->field_19 = 0;
+ data->joinRequestAnswer = 0;
}
- else if (val == 2)
+ else if (val == 2) // Member disconnected
{
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
data->state = 2;
}
break;
@@ -1872,11 +1996,11 @@ static void Task_MEvent_Leader(u8 taskId)
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, sText_PleaseStartOver))
{
DestroyTask(taskId);
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
}
break;
case 15:
- if (RfuGetErrorStatus() == 1 || RfuGetErrorStatus() == 2)
+ if (RfuGetStatus() == RFU_STATUS_FATAL_ERROR || RfuGetStatus() == RFU_STATUS_CONNECTION_ERROR)
{
data->state = 13;
}
@@ -1916,7 +2040,7 @@ void MEvent_CreateTask_CardOrNewsWithFriend(u32 activity)
data->state = 0;
data->textState = 0;
data->isWonderNews = activity - ACTIVITY_WONDER_CARD2;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = LINKUP_ONGOING;
}
static void Task_CardOrNewsWithFriend(u8 taskId)
@@ -2021,16 +2145,16 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
data->state = 10;
}
- switch (RfuGetErrorStatus())
+ switch (RfuGetStatus())
{
- case 1:
- case 2:
- case 6:
+ case RFU_STATUS_FATAL_ERROR:
+ case RFU_STATUS_CONNECTION_ERROR:
+ case RFU_STATUS_JOIN_GROUP_NO:
data->state = 8;
break;
- case 5:
+ case RFU_STATUS_JOIN_GROUP_OK:
AddTextPrinterToWindow1(sText_PlayerSentBackOK);
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
break;
}
break;
@@ -2047,12 +2171,12 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
data->state++;
break;
case 9:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, sLinkDroppedTexts[RfuGetErrorStatus()]))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, sLinkDroppedTexts[RfuGetStatus()]))
{
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
LinkRfu_Shutdown();
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
}
break;
case 7:
@@ -2060,7 +2184,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
AddTextPrinterToWindow1(sText_PleaseStartOver);
DestroyTask(taskId);
LinkRfu_Shutdown();
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
break;
case 11:
data->state++;
@@ -2085,7 +2209,7 @@ void MEvent_CreateTask_CardOrNewsOverWireless(u32 activity)
data->state = 0;
data->textState = 0;
data->isWonderNews = activity - ACTIVITY_WONDER_CARD2;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = LINKUP_ONGOING;
}
static void Task_CardOrNewsOverWireless(u8 taskId)
@@ -2186,16 +2310,16 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
data->state = 12;
}
- switch (RfuGetErrorStatus())
+ switch (RfuGetStatus())
{
- case 1:
- case 2:
- case 6:
+ case RFU_STATUS_FATAL_ERROR:
+ case RFU_STATUS_CONNECTION_ERROR:
+ case RFU_STATUS_JOIN_GROUP_NO:
data->state = 8;
break;
- case 5:
+ case RFU_STATUS_JOIN_GROUP_OK:
AddTextPrinterToWindow1(sText_WirelessLinkEstablished);
- RfuSetErrorStatus(0, 0);
+ RfuSetStatus(RFU_STATUS_OK, 0);
break;
}
break;
@@ -2220,7 +2344,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
LinkRfu_Shutdown();
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
}
break;
case 7:
@@ -2229,7 +2353,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
LinkRfu_Shutdown();
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
}
break;
case 11:
@@ -2238,7 +2362,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
LinkRfu_Shutdown();
- gSpecialVar_Result = 5;
+ gSpecialVar_Result = LINKUP_FAILED;
}
break;
case 13:
@@ -2252,9 +2376,9 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
}
}
-void UnionRoomSpecial(void)
+void RunUnionRoom(void)
{
- struct WirelessLink_URoom *data;
+ struct WirelessLink_URoom *uroom;
ClearAndInitHostRFUtgtGname();
CreateTask(Task_RunUnionRoom, 10);
@@ -2262,14 +2386,14 @@ void UnionRoomSpecial(void)
// dumb line needed to match
sWirelessLinkMain.uRoom = sWirelessLinkMain.uRoom;
- data = AllocZeroed(sizeof(*sWirelessLinkMain.uRoom));
- sWirelessLinkMain.uRoom = data;
- sURoom = data;
+ uroom = AllocZeroed(sizeof(*sWirelessLinkMain.uRoom));
+ sWirelessLinkMain.uRoom = uroom;
+ sURoom = uroom;
- data->state = 0;
- data->textState = 0;
- data->field_10 = 0;
- data->field_12 = 0;
+ uroom->state = UR_STATE_INIT;
+ uroom->textState = 0;
+ uroom->unknown = 0;
+ uroom->field_12 = 0;
gSpecialVar_Result = 0;
ListMenuLoadStdPalAt(0xD0, 1);
@@ -2282,82 +2406,82 @@ static u16 ReadAsU16(const u8 *ptr)
static void ScheduleFieldMessageWithFollowupState(u32 nextState, const u8 *src)
{
- struct WirelessLink_URoom *data = sWirelessLinkMain.uRoom;
+ struct WirelessLink_URoom *uroom = sWirelessLinkMain.uRoom;
- data->state = 8;
- data->stateAfterPrint = nextState;
+ uroom->state = UR_STATE_PRINT_MSG;
+ uroom->stateAfterPrint = nextState;
if (src != gStringVar4)
StringExpandPlaceholders(gStringVar4, src);
}
static void ScheduleFieldMessageAndExit(const u8 *src)
{
- struct WirelessLink_URoom *data = sWirelessLinkMain.uRoom;
+ struct WirelessLink_URoom *uroom = sWirelessLinkMain.uRoom;
- data->state = 26;
+ uroom->state = UR_STATE_PRINT_AND_EXIT;
if (src != gStringVar4)
StringExpandPlaceholders(gStringVar4, src);
}
-static void sub_80156B0(struct WirelessLink_URoom *data)
+static void sub_80156B0(struct WirelessLink_URoom *uroom)
{
- memcpy(&gDecompressionBuffer[0x3F00], data->field_0, 0x100);
+ memcpy(&gDecompressionBuffer[0x3F00], uroom->field_0, 0x100);
}
-static void sub_80156C8(struct WirelessLink_URoom *data)
+static void sub_80156C8(struct WirelessLink_URoom *uroom)
{
- memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 0x100);
+ memcpy(uroom->field_0, &gDecompressionBuffer[0x3F00], 0x100);
}
static void Task_RunUnionRoom(u8 taskId)
{
u32 id = 0;
- s32 var5 = 0;
+ s32 input = 0;
s32 playerGender = MALE;
- struct WirelessLink_URoom *data = sWirelessLinkMain.uRoom;
+ struct WirelessLink_URoom *uroom = sWirelessLinkMain.uRoom;
s16 *taskData = gTasks[taskId].data;
- switch (data->state)
+ switch (uroom->state)
{
- case 0:
- data->field_4 = AllocZeroed(RFU_CHILD_MAX * sizeof(struct UnkStruct_x1C));
- data->field_C = AllocZeroed(RFU_CHILD_MAX * sizeof(struct UnkStruct_x1C));
- data->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
- data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
- ClearUnkStruct_x20Array(data->field_0->arr, ARRAY_COUNT(data->field_0->arr));
+ case UR_STATE_INIT:
+ uroom->field_4 = AllocZeroed(RFU_CHILD_MAX * sizeof(struct UnkStruct_x1C));
+ uroom->field_C = AllocZeroed(RFU_CHILD_MAX * sizeof(struct UnkStruct_x1C));
+ uroom->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
+ uroom->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
+ ClearUnkStruct_x20Array(uroom->field_0->arr, ARRAY_COUNT(uroom->field_0->arr));
gPlayerCurrActivity = IN_UNION_ROOM;
- data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, LINK_GROUP_UNION_ROOM_RESUME);
- InitUnionRoomPlayerObjects(data->objects);
+ uroom->searchTaskId = CreateTask_SearchForChildOrParent(uroom->field_C, uroom->field_4, LINK_GROUP_UNION_ROOM_RESUME);
+ InitUnionRoomPlayerObjects(uroom->objects);
SetTilesAroundUnionRoomPlayersPassable();
- data->state = 1;
+ uroom->state = UR_STATE_INIT_OBJECTS;
break;
- case 1:
- CreateGroupMemberSpritesInvisible(data->spriteIds, taskData[0]);
+ case UR_STATE_INIT_OBJECTS:
+ CreateGroupMemberSpritesInvisible(uroom->spriteIds, taskData[0]);
if (++taskData[0] == 8)
- data->state = 2;
+ uroom->state = UR_STATE_INIT_LINK;
break;
- case 2:
+ case UR_STATE_INIT_LINK:
SetHostRFUtgtGname(IN_UNION_ROOM, 0, 0);
SetTradeBoardRegisteredMonInfo(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
SetWirelessCommType1();
OpenLink();
InitializeRfuLinkManager_EnterUnionRoom();
- ClearUnkStruct_x20Array(&data->field_8->arr[0], 1);
- ClearUnkStruct_x1CArray(data->field_4, 4);
- ClearUnkStruct_x1CArray(data->field_C, 4);
+ ClearUnkStruct_x20Array(&uroom->field_8->arr[0], 1);
+ ClearUnkStruct_x1CArray(uroom->field_4, 4);
+ ClearUnkStruct_x1CArray(uroom->field_C, 4);
gSpecialVar_Result = 0;
- data->state = 3;
+ uroom->state = UR_STATE_CHECK_SELECTING_MON;
break;
- case 3:
+ case UR_STATE_CHECK_SELECTING_MON:
if ((GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_REGISTER
|| GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_TRADE)
- && sUnionRoomTrade.field_0 != 0)
+ && sUnionRoomTrade.state != URTRADE_STATE_NONE)
{
id = GetCursorSelectionMonId();
- switch (sUnionRoomTrade.field_0)
+ switch (sUnionRoomTrade.state)
{
- case 1:
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
+ case URTRADE_STATE_REGISTERING:
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
if (id >= PARTY_SIZE)
{
ResetUnionRoomTrade(&sUnionRoomTrade);
@@ -2366,58 +2490,58 @@ static void Task_RunUnionRoom(u8 taskId)
}
else if (!RegisterTradeMonAndGetIsEgg(GetCursorSelectionMonId(), &sUnionRoomTrade))
{
- ScheduleFieldMessageWithFollowupState(52, sText_ChooseRequestedMonType);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_REGISTER_REQUEST_TYPE, sText_ChooseRequestedMonType);
}
else
{
- data->state = 55;
+ uroom->state = UR_STATE_REGISTER_COMPLETE;
}
break;
- case 2:
- sub_80156C8(data);
- taskData[1] = sUnionRoomTrade.field_8;
+ case URTRADE_STATE_OFFERING:
+ sub_80156C8(uroom);
+ taskData[1] = sUnionRoomTrade.offerPlayerId;
if (id >= PARTY_SIZE)
{
ScheduleFieldMessageAndExit(sText_TradeCanceled);
}
else
{
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
gPlayerCurrActivity = ACTIVITY_TRADE | IN_UNION_ROOM;
RegisterTradeMon(GetCursorSelectionMonId(), &sUnionRoomTrade);
- data->state = 51;
+ uroom->state = UR_STATE_TRADE_OFFER_MON;
}
break;
}
- sUnionRoomTrade.field_0 = 0;
+ sUnionRoomTrade.state = URTRADE_STATE_NONE;
}
else
{
- data->state = 4;
+ uroom->state = UR_STATE_MAIN;
}
break;
- case 4:
+ case UR_STATE_MAIN:
if (gSpecialVar_Result != 0)
{
- if (gSpecialVar_Result == 9)
+ if (gSpecialVar_Result == UR_INTERACT_ATTENDANT)
{
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
PlaySE(SE_PC_LOGIN);
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
- data->state = 42;
+ uroom->state = UR_STATE_INTERACT_WITH_ATTENDANT;
gSpecialVar_Result = 0;
}
- else if (gSpecialVar_Result == 11)
+ else if (gSpecialVar_Result == UR_INTERACT_START_MENU)
{
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
- data->state = 23;
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
+ uroom->state = UR_STATE_WAIT_FOR_START_MENU;
gSpecialVar_Result = 0;
}
- else
+ else // UR_INTERACT_PLAYER_# (1-8)
{
taskData[0] = 0;
taskData[1] = gSpecialVar_Result - 1;
- data->state = 24;
+ uroom->state = UR_STATE_INTERACT_WITH_PLAYER;
gSpecialVar_Result = 0;
}
}
@@ -2425,20 +2549,20 @@ static void Task_RunUnionRoom(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
- if (TrySetUnionRoomMemberFacePlayer(data->field_0, &taskData[0], &taskData[1], data->spriteIds))
+ if (TryInteractWithUnionRoomMember(uroom->field_0, &taskData[0], &taskData[1], uroom->spriteIds))
{
PlaySE(SE_SELECT);
UR_EnableScriptContext2AndFreezeObjectEvents();
- data->state = 24;
+ uroom->state = UR_STATE_INTERACT_WITH_PLAYER;
break;
}
- else if (PlayerIsTalkingToUnionRoomAide())
+ else if (IsPlayerFacingTradingBoard())
{
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
PlaySE(SE_PC_LOGIN);
UR_EnableScriptContext2AndFreezeObjectEvents();
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
- data->state = 45;
+ uroom->state = UR_STATE_CHECK_TRADING_BOARD;
break;
}
}
@@ -2448,58 +2572,58 @@ static void Task_RunUnionRoom(u8 taskId)
case 1:
PlaySE(SE_PC_LOGIN);
case 2:
- ScheduleUnionRoomPlayerRefresh(data);
+ ScheduleUnionRoomPlayerRefresh(uroom);
break;
case 4:
- data->state = 11;
+ uroom->state = UR_STATE_PLAYER_CONTACTED_YOU;
UR_EnableScriptContext2AndFreezeObjectEvents();
SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0);
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_NPCTALK | IN_UNION_ROOM, GetActivePartnerSpriteGenderParam(data), 0);
+ UpdateGameData_SetActivity(ACTIVITY_NPCTALK | IN_UNION_ROOM, GetActivePartnerSpriteGenderParam(uroom), FALSE);
break;
}
- HandleUnionRoomPlayerRefresh(data);
+ HandleUnionRoomPlayerRefresh(uroom);
}
break;
- case 23:
+ case UR_STATE_WAIT_FOR_START_MENU:
if (!FuncIsActiveTask(Task_ShowStartMenu))
{
- UpdateGameDataWithActivitySpriteGendersFlag(IN_UNION_ROOM, 0, FALSE);
- data->state = 4;
+ UpdateGameData_SetActivity(ACTIVITY_NONE | IN_UNION_ROOM, 0, FALSE);
+ uroom->state = UR_STATE_MAIN;
}
break;
- case 24:
+ case UR_STATE_INTERACT_WITH_PLAYER:
UR_RunTextPrinters_CheckPrinter0Active();
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
- switch (UnionRoomGetPlayerInteractionResponse(data->field_0, taskData[0], taskData[1], playerGender))
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
+ switch (UnionRoomGetPlayerInteractionResponse(uroom->field_0, taskData[0], taskData[1], playerGender))
{
- case 0:
- data->state = 26;
+ case 0: // Player is or was just doing an activity
+ uroom->state = UR_STATE_PRINT_AND_EXIT;
break;
- case 1:
- sub_8012188(data->field_0->arr[taskData[1]].gname_uname.playerName, &data->field_0->arr[taskData[1]].gname_uname.gname, gPlayerCurrActivity);
- data->field_12 = id; // Should be just 0, but won't match any other way.
- data->state = 25;
+ case 1: // Link communicating
+ sub_8012188(uroom->field_0->arr[taskData[1]].gname_uname.playerName, &uroom->field_0->arr[taskData[1]].gname_uname.gname, gPlayerCurrActivity);
+ uroom->field_12 = id; // Should be just 0, but won't match any other way.
+ uroom->state = UR_STATE_TRY_COMMUNICATING;
break;
- case 2:
- ScheduleFieldMessageWithFollowupState(19, gStringVar4);
+ case 2: // Ask to join chat
+ ScheduleFieldMessageWithFollowupState(UR_STATE_RECV_JOIN_CHAT_REQUEST, gStringVar4);
break;
}
break;
- case 25:
+ case UR_STATE_TRY_COMMUNICATING:
UR_RunTextPrinters_CheckPrinter0Active();
- switch (RfuGetErrorStatus())
+ switch (RfuGetStatus())
{
- case 4:
- HandleCancelTrade(TRUE);
- data->state = 4;
+ case RFU_STATUS_NEW_CHILD_DETECTED:
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
break;
- case 1:
- case 2:
+ case RFU_STATUS_FATAL_ERROR:
+ case RFU_STATUS_CONNECTION_ERROR:
if (IsUnionRoomListenTaskActive() == TRUE)
ScheduleFieldMessageAndExit(sText_TrainerAppearsBusy);
else
- ScheduleFieldMessageWithFollowupState(30, sText_TrainerAppearsBusy);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_CANCEL_ACTIVITY_LINK_ERROR, sText_TrainerAppearsBusy);
gPlayerCurrActivity = IN_UNION_ROOM;
break;
@@ -2509,138 +2633,142 @@ static void Task_RunUnionRoom(u8 taskId)
{
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CreateTask(Task_ExchangeCards, 5);
- data->state = 38;
+ uroom->state = UR_STATE_COMMUNICATING_WAIT_FOR_DATA;
}
break;
- case 38:
+ case UR_STATE_COMMUNICATING_WAIT_FOR_DATA:
if (!FuncIsActiveTask(Task_ExchangeCards))
{
if (gPlayerCurrActivity == (ACTIVITY_TRADE | IN_UNION_ROOM))
- ScheduleFieldMessageWithFollowupState(31, sText_AwaitingPlayersResponseAboutTrade);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_SEND_TRADE_REQUST, sText_AwaitingPlayersResponseAboutTrade);
else
- data->state = 5;
+ uroom->state = UR_STATE_DO_SOMETHING_PROMPT;
}
break;
- case 30:
+ case UR_STATE_CANCEL_ACTIVITY_LINK_ERROR:
if (!gReceivedRemoteLinkPlayers)
{
- HandleCancelTrade(FALSE);
- UpdateUnionRoomMemberFacing(taskData[0], taskData[1], data->field_0);
- data->state = 2;
+ HandleCancelActivity(FALSE);
+ UpdateUnionRoomMemberFacing(taskData[0], taskData[1], uroom->field_0);
+ uroom->state = UR_STATE_INIT_LINK;
}
break;
- case 5:
- id = ConvPartnerUnameAndGetWhetherMetAlready(&data->field_0->arr[taskData[1]]);
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- ScheduleFieldMessageWithFollowupState(6, sHiDoSomethingTexts[id][playerGender]);
+ case UR_STATE_DO_SOMETHING_PROMPT:
+ id = ConvPartnerUnameAndGetWhetherMetAlready(&uroom->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_HANDLE_DO_SOMETHING_PROMPT_INPUT, sHiDoSomethingTexts[id][playerGender]);
break;
- case 6:
- var5 = ListMenuHandler_AllItemsAvailable(&data->textState, &data->topListMenuWindowId, &data->topListMenuId, &sWindowTemplate_InviteToActivity, &sListMenuTemplate_InviteToActivity);
- if (var5 != -1)
+ case UR_STATE_HANDLE_DO_SOMETHING_PROMPT_INPUT:
+ input = ListMenuHandler_AllItemsAvailable(&uroom->textState,
+ &uroom->topListMenuWindowId,
+ &uroom->topListMenuId,
+ &sWindowTemplate_InviteToActivity,
+ &sListMenuTemplate_InviteToActivity);
+ if (input != -1)
{
if (!gReceivedRemoteLinkPlayers)
{
- data->state = 28;
+ uroom->state = UR_STATE_TRAINER_APPEARS_BUSY;
}
else
{
- data->partnerYesNoResponse = 0;
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- if (var5 == -2 || var5 == IN_UNION_ROOM)
+ uroom->partnerYesNoResponse = 0;
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ if (input == -2 || input == IN_UNION_ROOM)
{
- data->playerSendBuffer[0] = IN_UNION_ROOM;
- sub_800FE50(data->playerSendBuffer);
+ uroom->playerSendBuffer[0] = IN_UNION_ROOM;
+ sub_800FE50(uroom->playerSendBuffer);
StringCopy(gStringVar4, sIfYouWantToDoSomethingTexts[gLinkPlayers[0].gender]);
- data->state = 32;
+ uroom->state = UR_STATE_REQUEST_DECLINED;
}
else
{
- gPlayerCurrActivity = var5;
- sPlayerActivityGroupSize = (u32)(var5) >> 8;
+ gPlayerCurrActivity = input;
+ sPlayerActivityGroupSize = (u32)(input) >> 8;
if (gPlayerCurrActivity == (ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM) && !HasAtLeastTwoMonsOfLevel30OrLower())
{
- ScheduleFieldMessageWithFollowupState(5, sText_NeedTwoMonsOfLevel30OrLower1);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_DO_SOMETHING_PROMPT, sText_NeedTwoMonsOfLevel30OrLower1);
}
else
{
- data->playerSendBuffer[0] = gPlayerCurrActivity | 0x40;
- sub_800FE50(data->playerSendBuffer);
- data->state = 27;
+ uroom->playerSendBuffer[0] = gPlayerCurrActivity | IN_UNION_ROOM;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_SEND_ACTIVITY_REQUEST;
}
}
}
}
break;
- case 28:
+ case UR_STATE_TRAINER_APPEARS_BUSY:
StringCopy(gStringVar4, sText_TrainerBattleBusy);
- data->state = 36;
+ uroom->state = UR_STATE_CANCEL_REQUEST_PRINT_MSG;
break;
- case 27:
- PollPartnerYesNoResponse(data);
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- id = GetResponseIdx_InviteToURoomActivity(data->playerSendBuffer[0] & 0x3F);
- if (PrintOnTextbox(&data->textState, sText_WaitOrShowCardTexts[playerGender][id]))
+ case UR_STATE_SEND_ACTIVITY_REQUEST:
+ PollPartnerYesNoResponse(uroom);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ id = GetResponseIdx_InviteToURoomActivity(uroom->playerSendBuffer[0] & 0x3F);
+ if (PrintOnTextbox(&uroom->textState, sText_WaitOrShowCardTexts[playerGender][id]))
{
taskData[3] = 0;
- data->state = 29;
+ uroom->state = UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST;
}
break;
- case 32:
+ case UR_STATE_REQUEST_DECLINED:
sub_800AC34();
- data->state = 36;
+ uroom->state = UR_STATE_CANCEL_REQUEST_PRINT_MSG;
break;
- case 31:
- data->playerSendBuffer[0] = ACTIVITY_TRADE | IN_UNION_ROOM;
- data->playerSendBuffer[1] = sUnionRoomTrade.species;
- data->playerSendBuffer[2] = sUnionRoomTrade.level;
- sub_800FE50(data->playerSendBuffer);
- data->state = 29;
+ case UR_STATE_SEND_TRADE_REQUST:
+ uroom->playerSendBuffer[0] = ACTIVITY_TRADE | IN_UNION_ROOM;
+ uroom->playerSendBuffer[1] = sUnionRoomTrade.species;
+ uroom->playerSendBuffer[2] = sUnionRoomTrade.level;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST;
break;
- case 29:
+ case UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST:
if (!gReceivedRemoteLinkPlayers)
{
- StringCopy(gStringVar4, sText_TrainerBattleBusy);
- data->state = 28;
+ StringCopy(gStringVar4, sText_TrainerBattleBusy); // Redundant, will be copied again in next state
+ uroom->state = UR_STATE_TRAINER_APPEARS_BUSY;
}
else
{
- PollPartnerYesNoResponse(data);
- if (data->partnerYesNoResponse == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
+ PollPartnerYesNoResponse(uroom);
+ if (uroom->partnerYesNoResponse == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
{
if (gPlayerCurrActivity == ACTIVITY_CARD)
{
- ViewURoomPartnerTrainerCard(gStringVar4, data, FALSE);
- data->state = 40;
+ ViewURoomPartnerTrainerCard(gStringVar4, uroom, FALSE);
+ uroom->state = UR_STATE_PRINT_CARD_INFO;
}
else
{
- data->state = 13;
+ uroom->state = UR_STATE_PRINT_START_ACTIVITY_MSG;
}
}
- else if (data->partnerYesNoResponse == (ACTIVITY_DECLINE | IN_UNION_ROOM))
+ else if (uroom->partnerYesNoResponse == (ACTIVITY_DECLINE | IN_UNION_ROOM))
{
- data->state = 32;
+ uroom->state = UR_STATE_REQUEST_DECLINED;
GetURoomActivityRejectMsg(gStringVar4, gPlayerCurrActivity | IN_UNION_ROOM, gLinkPlayers[0].gender);
gPlayerCurrActivity = ACTIVITY_NONE;
}
}
break;
- case 7:
- id = ConvPartnerUnameAndGetWhetherMetAlready(&data->field_0->arr[taskData[1]]);
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- ScheduleFieldMessageWithFollowupState(6, sHiDoSomethingTexts[id][playerGender]);
+ case UR_STATE_DO_SOMETHING_PROMPT_2: // Identical to UR_STATE_DO_SOMETHING_PROMPT
+ id = ConvPartnerUnameAndGetWhetherMetAlready(&uroom->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_HANDLE_DO_SOMETHING_PROMPT_INPUT, sHiDoSomethingTexts[id][playerGender]);
break;
- case 40:
- if (PrintOnTextbox(&data->textState, gStringVar4))
+ case UR_STATE_PRINT_CARD_INFO:
+ if (PrintOnTextbox(&uroom->textState, gStringVar4))
{
- data->state = 41;
+ uroom->state = UR_STATE_WAIT_FINISH_READING_CARD;
sub_800ADF8();
- data->partnerYesNoResponse = 0;
- data->recvActivityRequest[0] = 0;
+ uroom->partnerYesNoResponse = 0;
+ uroom->recvActivityRequest[0] = 0;
}
break;
- case 41:
+ case UR_STATE_WAIT_FINISH_READING_CARD:
if (IsLinkTaskFinished())
{
if (GetMultiplayerId() == 0)
@@ -2648,213 +2776,213 @@ static void Task_RunUnionRoom(u8 taskId)
StringCopy(gStringVar1, gLinkPlayers[GetMultiplayerId() ^ 1].name);
id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
StringExpandPlaceholders(gStringVar4, sAwaitingResponseTexts[id]);
- data->state = 33;
+ uroom->state = UR_STATE_PRINT_CONTACT_MSG;
}
else
{
- data->state = 7;
+ uroom->state = UR_STATE_DO_SOMETHING_PROMPT_2;
}
}
break;
- case 19:
- switch (UnionRoomHandleYesNo(&data->textState, FALSE))
+ case UR_STATE_RECV_JOIN_CHAT_REQUEST:
+ switch (UnionRoomHandleYesNo(&uroom->textState, FALSE))
{
- case 0:
+ case 0: // YES
CopyBgTilemapBufferToVram(0);
gPlayerCurrActivity = ACTIVITY_CHAT | IN_UNION_ROOM;
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_CHAT | IN_UNION_ROOM, 0, 1);
- sub_8012188(data->field_0->arr[taskData[1]].gname_uname.playerName, &data->field_0->arr[taskData[1]].gname_uname.gname, gPlayerCurrActivity);
- data->field_12 = taskData[1];
- data->state = 20;
+ UpdateGameData_SetActivity(ACTIVITY_CHAT | IN_UNION_ROOM, 0, TRUE);
+ sub_8012188(uroom->field_0->arr[taskData[1]].gname_uname.playerName, &uroom->field_0->arr[taskData[1]].gname_uname.gname, gPlayerCurrActivity);
+ uroom->field_12 = taskData[1];
+ uroom->state = UR_STATE_TRY_ACCEPT_CHAT_REQUEST_DELAY;
taskData[3] = 0;
break;
- case 1:
+ case 1: // NO
case -1:
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- ScheduleFieldMessageAndExit(sDeclineBattleTexts[playerGender]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ ScheduleFieldMessageAndExit(sDeclineChatTexts[playerGender]);
break;
}
break;
- case 20:
+ case UR_STATE_TRY_ACCEPT_CHAT_REQUEST_DELAY:
if (++taskData[2] > 60)
{
- data->state = 21;
+ uroom->state = UR_STATE_TRY_ACCEPT_CHAT_REQUEST;
taskData[2] = 0;
}
break;
- case 21:
- switch (RfuGetErrorStatus())
+ case UR_STATE_TRY_ACCEPT_CHAT_REQUEST:
+ switch (RfuGetStatus())
{
- case 4:
- HandleCancelTrade(TRUE);
- data->state = 4;
+ case RFU_STATUS_NEW_CHILD_DETECTED:
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
break;
- case 1:
- case 2:
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
+ case RFU_STATUS_FATAL_ERROR:
+ case RFU_STATUS_CONNECTION_ERROR:
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
if (IsUnionRoomListenTaskActive() == TRUE)
ScheduleFieldMessageAndExit(sChatDeclinedTexts[playerGender]);
else
- ScheduleFieldMessageWithFollowupState(30, sChatDeclinedTexts[playerGender]);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_CANCEL_ACTIVITY_LINK_ERROR, sChatDeclinedTexts[playerGender]);
break;
- case 3:
- data->state = 22;
+ case RFU_STATUS_CHILD_SEND_COMPLETE:
+ uroom->state = UR_STATE_ACCEPT_CHAT_REQUEST;
break;
}
taskData[3]++;
break;
- case 22:
- if (RfuIsErrorStatus1or2())
+ case UR_STATE_ACCEPT_CHAT_REQUEST:
+ if (RfuHasErrored())
{
- playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, 1);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->field_0);
+ UpdateGameData_SetActivity(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
if (IsUnionRoomListenTaskActive() == TRUE)
ScheduleFieldMessageAndExit(sChatDeclinedTexts[playerGender]);
else
- ScheduleFieldMessageWithFollowupState(30, sChatDeclinedTexts[playerGender]);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_CANCEL_ACTIVITY_LINK_ERROR, sChatDeclinedTexts[playerGender]);
}
if (gReceivedRemoteLinkPlayers)
- data->state = 16;
+ uroom->state = UR_STATE_START_ACTIVITY_FREE_UROOM;
break;
- case 11:
+ case UR_STATE_PLAYER_CONTACTED_YOU:
PlaySE(SE_PINPON);
sub_800EF7C();
- data->state = 12;
- data->recvActivityRequest[0] = 0;
+ uroom->state = UR_STATE_RECV_CONTACT_DATA;
+ uroom->recvActivityRequest[0] = 0;
break;
- case 12:
- if (RfuIsErrorStatus1or2())
+ case UR_STATE_RECV_CONTACT_DATA:
+ if (RfuHasErrored())
{
- HandleCancelTrade(FALSE);
- data->state = 2;
+ HandleCancelActivity(FALSE);
+ uroom->state = UR_STATE_INIT_LINK;
}
else if (gReceivedRemoteLinkPlayers)
{
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CreateTask(Task_ExchangeCards, 5);
- data->state = 39;
+ uroom->state = UR_STATE_WAIT_FOR_CONTACT_DATA;
}
break;
- case 39:
- ReceiveUnionRoomActivityPacket(data);
+ case UR_STATE_WAIT_FOR_CONTACT_DATA:
+ ReceiveUnionRoomActivityPacket(uroom);
if (!FuncIsActiveTask(Task_ExchangeCards))
{
- data->state = 33;
+ uroom->state = UR_STATE_PRINT_CONTACT_MSG;
StringCopy(gStringVar1, gLinkPlayers[1].name);
id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
StringExpandPlaceholders(gStringVar4, sPlayerContactedYouTexts[id]);
}
break;
- case 33:
- ReceiveUnionRoomActivityPacket(data);
- if (PrintOnTextbox(&data->textState, gStringVar4))
- data->state = 34;
+ case UR_STATE_PRINT_CONTACT_MSG:
+ ReceiveUnionRoomActivityPacket(uroom);
+ if (PrintOnTextbox(&uroom->textState, gStringVar4))
+ uroom->state = UR_STATE_HANDLE_CONTACT_DATA;
break;
- case 34:
- ReceiveUnionRoomActivityPacket(data);
- if (UnionRoom_HandleContactFromOtherPlayer(data) && gMain.newKeys & B_BUTTON)
+ case UR_STATE_HANDLE_CONTACT_DATA:
+ ReceiveUnionRoomActivityPacket(uroom);
+ if (UnionRoom_HandleContactFromOtherPlayer(uroom) && gMain.newKeys & B_BUTTON)
{
sub_8011DE0(1);
StringCopy(gStringVar4, sText_ChatEnded);
- data->state = 36;
+ uroom->state = UR_STATE_CANCEL_REQUEST_PRINT_MSG;
}
break;
- case 35:
- ScheduleFieldMessageWithFollowupState(9, gStringVar4);
+ case UR_STATE_RECV_ACTIVITY_REQUEST:
+ ScheduleFieldMessageWithFollowupState(UR_STATE_HANDLE_ACTIVITY_REQUEST, gStringVar4);
break;
- case 9:
- switch (UnionRoomHandleYesNo(&data->textState, FALSE))
+ case UR_STATE_HANDLE_ACTIVITY_REQUEST:
+ switch (UnionRoomHandleYesNo(&uroom->textState, FALSE))
{
- case 0:
- data->playerSendBuffer[0] = ACTIVITY_ACCEPT | IN_UNION_ROOM;
+ case 0: // ACCEPT
+ uroom->playerSendBuffer[0] = ACTIVITY_ACCEPT | IN_UNION_ROOM;
if (gPlayerCurrActivity == (ACTIVITY_CHAT | IN_UNION_ROOM))
- UpdateGameDataWithActivitySpriteGendersFlag(gPlayerCurrActivity | 0x40, sub_801100C(1), 0);
+ UpdateGameData_SetActivity(gPlayerCurrActivity | IN_UNION_ROOM, sub_801100C(1), FALSE);
else
- UpdateGameDataWithActivitySpriteGendersFlag(gPlayerCurrActivity | 0x40, sub_801100C(1), 1);
+ UpdateGameData_SetActivity(gPlayerCurrActivity | IN_UNION_ROOM, sub_801100C(1), TRUE);
- data->field_8->arr[0].field_1B = 0;
+ uroom->field_8->arr[0].field_1B = 0;
taskData[3] = 0;
if (gPlayerCurrActivity == (ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM))
{
if (!HasAtLeastTwoMonsOfLevel30OrLower())
{
- data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
- sub_800FE50(data->playerSendBuffer);
- data->state = 10;
+ uroom->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_DECLINE_ACTIVITY_REQUEST;
StringCopy(gStringVar4, sText_NeedTwoMonsOfLevel30OrLower2);
}
else
{
- sub_800FE50(data->playerSendBuffer);
- data->state = 13;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_PRINT_START_ACTIVITY_MSG;
}
}
else if (gPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM))
{
- sub_800FE50(data->playerSendBuffer);
- ViewURoomPartnerTrainerCard(gStringVar4, data, TRUE);
- data->state = 40;
+ sub_800FE50(uroom->playerSendBuffer);
+ ViewURoomPartnerTrainerCard(gStringVar4, uroom, TRUE);
+ uroom->state = UR_STATE_PRINT_CARD_INFO;
}
else
{
- sub_800FE50(data->playerSendBuffer);
- data->state = 13;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_PRINT_START_ACTIVITY_MSG;
}
break;
- case 1:
+ case 1: // DECLINE
case -1:
- data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
- sub_800FE50(data->playerSendBuffer);
- data->state = 10;
+ uroom->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
+ sub_800FE50(uroom->playerSendBuffer);
+ uroom->state = UR_STATE_DECLINE_ACTIVITY_REQUEST;
GetYouDeclinedTheOfferMessage(gStringVar4, gPlayerCurrActivity);
break;
}
break;
- case 10:
+ case UR_STATE_DECLINE_ACTIVITY_REQUEST:
sub_800AC34();
- data->state = 36;
+ uroom->state = UR_STATE_CANCEL_REQUEST_PRINT_MSG;
break;
- case 36:
+ case UR_STATE_CANCEL_REQUEST_PRINT_MSG:
if (!gReceivedRemoteLinkPlayers)
{
gPlayerCurrActivity = IN_UNION_ROOM;
- ScheduleFieldMessageWithFollowupState(37, gStringVar4);
- memset(data->playerSendBuffer, 0, sizeof(data->playerSendBuffer));
- data->recvActivityRequest[0] = 0;
- data->partnerYesNoResponse = 0;
+ ScheduleFieldMessageWithFollowupState(UR_STATE_CANCEL_REQUEST_RESTART_LINK, gStringVar4);
+ memset(uroom->playerSendBuffer, 0, sizeof(uroom->playerSendBuffer));
+ uroom->recvActivityRequest[0] = 0;
+ uroom->partnerYesNoResponse = 0;
}
break;
- case 37:
- data->state = 2;
- HandleCancelTrade(FALSE);
+ case UR_STATE_CANCEL_REQUEST_RESTART_LINK:
+ uroom->state = UR_STATE_INIT_LINK;
+ HandleCancelActivity(FALSE);
break;
- case 13:
+ case UR_STATE_PRINT_START_ACTIVITY_MSG:
GetURoomActivityStartMsg(gStringVar4, gPlayerCurrActivity | IN_UNION_ROOM);
- ScheduleFieldMessageWithFollowupState(14, gStringVar4);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_START_ACTIVITY_LINK, gStringVar4);
break;
- case 14:
+ case UR_STATE_START_ACTIVITY_LINK:
sub_800ADF8();
- data->state = 15;
+ uroom->state = UR_STATE_START_ACTIVITY_WAIT_FOR_LINK;
break;
- case 15:
+ case UR_STATE_START_ACTIVITY_WAIT_FOR_LINK:
if (IsLinkTaskFinished())
- data->state = 16;
- break;
- case 16:
- Free(data->field_8);
- Free(data->field_0);
- Free(data->field_C);
- Free(data->field_4);
- DestroyTask(data->field_20);
- DestroyGroupMemberSprites(data->spriteIds);
- data->state = 17;
- break;
- case 17:
+ uroom->state = UR_STATE_START_ACTIVITY_FREE_UROOM;
+ break;
+ case UR_STATE_START_ACTIVITY_FREE_UROOM:
+ Free(uroom->field_8);
+ Free(uroom->field_0);
+ Free(uroom->field_C);
+ Free(uroom->field_4);
+ DestroyTask(uroom->searchTaskId);
+ DestroyGroupMemberSprites(uroom->spriteIds);
+ uroom->state = UR_STATE_START_ACTIVITY_FADE;
+ break;
+ case UR_STATE_START_ACTIVITY_FADE:
BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
- data->state = 18;
+ uroom->state = UR_STATE_START_ACTIVITY;
break;
- case 18:
+ case UR_STATE_START_ACTIVITY:
if (!UpdatePaletteFade())
{
DestroyUnionRoomPlayerObjects();
@@ -2863,10 +2991,10 @@ static void Task_RunUnionRoom(u8 taskId)
CreateTask_StartActivity();
}
break;
- case 42:
+ case UR_STATE_INTERACT_WITH_ATTENDANT:
if (GetHostRFUtgtGname()->species == SPECIES_NONE)
{
- data->state = 43;
+ uroom->state = UR_STATE_REGISTER_PROMPT;
}
else
{
@@ -2880,188 +3008,196 @@ static void Task_RunUnionRoom(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, GetHostRFUtgtGname()->level, STR_CONV_MODE_LEFT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, sText_CancelRegistrationOfMon);
}
- ScheduleFieldMessageWithFollowupState(44, gStringVar4);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_CANCEL_REGISTRATION_PROMPT, gStringVar4);
}
break;
- case 43:
- if (PrintOnTextbox(&data->textState, sText_RegisterMonAtTradingBoard))
- data->state = 47;
+ case UR_STATE_REGISTER_PROMPT:
+ if (PrintOnTextbox(&uroom->textState, sText_RegisterMonAtTradingBoard))
+ uroom->state = UR_STATE_REGISTER_PROMPT_HANDLE_INPUT;
break;
- case 47:
- var5 = ListMenuHandler_AllItemsAvailable(&data->textState, &data->tradeBoardSelectWindowId, &data->tradeBoardDetailsWindowId, &gUnknown_082F025C, &gUnknown_082F027C);
- if (var5 != -1)
+ case UR_STATE_REGISTER_PROMPT_HANDLE_INPUT:
+ input = ListMenuHandler_AllItemsAvailable(&uroom->textState,
+ &uroom->tradeBoardSelectWindowId,
+ &uroom->tradeBoardDetailsWindowId,
+ &sWindowTemplate_RegisterForTrade,
+ &sListMenuTemplate_RegisterForTrade);
+ if (input != -1)
{
- if (var5 == -2 || var5 == 3)
+ if (input == -2 || input == 3)
{
- data->state = 4;
- HandleCancelTrade(TRUE);
+ uroom->state = UR_STATE_MAIN;
+ HandleCancelActivity(TRUE);
}
else
{
- switch (var5)
+ switch (input)
{
case 1: // REGISTER
- ScheduleFieldMessageWithFollowupState(53, sText_WhichMonWillYouOffer);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_REGISTER_SELECT_MON_FADE, sText_WhichMonWillYouOffer);
break;
case 2: // INFO
- ScheduleFieldMessageWithFollowupState(47, sText_TradingBoardInfo);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_REGISTER_PROMPT_HANDLE_INPUT, sText_TradingBoardInfo);
break;
}
}
}
break;
- case 53:
+ case UR_STATE_REGISTER_SELECT_MON_FADE:
BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
- data->state = 54;
+ uroom->state = UR_STATE_REGISTER_SELECT_MON;
break;
- case 54:
+ case UR_STATE_REGISTER_SELECT_MON:
if (!gPaletteFade.active)
{
- sUnionRoomTrade.field_0 = 1;
+ sUnionRoomTrade.state = URTRADE_STATE_REGISTERING;
gFieldCallback = FieldCB_ContinueScriptUnionRoom;
ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_REGISTER, CB2_ReturnToField);
}
break;
- case 52:
- var5 = ListMenuHandler_AllItemsAvailable(&data->textState, &data->tradeBoardSelectWindowId, &data->tradeBoardDetailsWindowId, &gUnknown_082F0294, &sMenuTemplate_TradingBoardRequestType);
- if (var5 != -1)
+ case UR_STATE_REGISTER_REQUEST_TYPE:
+ input = ListMenuHandler_AllItemsAvailable(&uroom->textState,
+ &uroom->tradeBoardSelectWindowId,
+ &uroom->tradeBoardDetailsWindowId,
+ &gUnknown_082F0294,
+ &sMenuTemplate_TradingBoardRequestType);
+ if (input != -1)
{
- switch (var5)
+ switch (input)
{
case -2:
- case 18:
+ case NUMBER_OF_MON_TYPES: // Exit
ResetUnionRoomTrade(&sUnionRoomTrade);
SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0);
ScheduleFieldMessageAndExit(sText_RegistrationCanceled);
break;
default:
- sUnionRoomTrade.type = var5;
- data->state = 55;
+ sUnionRoomTrade.type = input;
+ uroom->state = UR_STATE_REGISTER_COMPLETE;
break;
}
}
break;
- case 55:
+ case UR_STATE_REGISTER_COMPLETE:
SetTradeBoardRegisteredMonInfo(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
ScheduleFieldMessageAndExit(sText_RegistraionCompleted);
break;
- case 44:
- switch (UnionRoomHandleYesNo(&data->textState, FALSE))
+ case UR_STATE_CANCEL_REGISTRATION_PROMPT:
+ switch (UnionRoomHandleYesNo(&uroom->textState, FALSE))
{
- case 0:
- data->state = 56;
+ case 0: // YES
+ uroom->state = UR_STATE_CANCEL_REGISTRATION;
break;
- case 1:
+ case 1: // NO
case -1:
- HandleCancelTrade(TRUE);
- data->state = 4;
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
break;
}
break;
- case 56:
- if (PrintOnTextbox(&data->textState, sText_RegistrationCanceled2))
+ case UR_STATE_CANCEL_REGISTRATION:
+ if (PrintOnTextbox(&uroom->textState, sText_RegistrationCanceled2))
{
SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0);
ResetUnionRoomTrade(&sUnionRoomTrade);
- HandleCancelTrade(TRUE);
- data->state = 4;
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
}
break;
- case 45:
- if (PrintOnTextbox(&data->textState, sText_XCheckedTradingBoard))
- data->state = 46;
+ case UR_STATE_CHECK_TRADING_BOARD:
+ if (PrintOnTextbox(&uroom->textState, sText_XCheckedTradingBoard))
+ uroom->state = UR_STATE_TRADING_BOARD_LOAD;
break;
- case 46:
+ case UR_STATE_TRADING_BOARD_LOAD:
UR_ClearBg0();
- data->state = 48;
+ uroom->state = UR_STATE_TRADING_BOARD_HANDLE_INPUT;
break;
- case 48:
- var5 = TradeBoardMenuHandler(&data->textState, &data->tradeBoardSelectWindowId, &data->field_4A, &data->tradeBoardDetailsWindowId, &gUnknown_082F034C, &sTradeBoardListMenuTemplate, data->field_0);
- if (var5 != -1)
+ case UR_STATE_TRADING_BOARD_HANDLE_INPUT:
+ input = TradeBoardMenuHandler(&uroom->textState, &uroom->tradeBoardSelectWindowId, &uroom->tradeBoardListMenuId, &uroom->tradeBoardDetailsWindowId, &gUnknown_082F034C, &sTradeBoardListMenuTemplate, uroom->field_0);
+ if (input != -1)
{
- switch (var5)
+ switch (input)
{
case -2:
- case 8:
- HandleCancelTrade(TRUE);
- data->state = 4;
+ case 8: // EXIT
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
break;
default:
UR_ClearBg0();
- switch (IsRequestedTypeOrEggInPlayerParty(data->field_0->arr[var5].gname_uname.gname.type, data->field_0->arr[var5].gname_uname.gname.species))
+ switch (IsRequestedTypeOrEggInPlayerParty(uroom->field_0->arr[input].gname_uname.gname.type, uroom->field_0->arr[input].gname_uname.gname.species))
{
case UR_TRADE_MATCH:
- IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[var5]);
- ScheduleFieldMessageWithFollowupState(49, sText_AskTrainerToMakeTrade);
- taskData[1] = var5;
+ IntlConvPartnerUname7(gStringVar1, &uroom->field_0->arr[input]);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_TRADE_PROMPT, sText_AskTrainerToMakeTrade);
+ taskData[1] = input;
break;
case UR_TRADE_NOTYPE:
- IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[var5]);
- StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].gname_uname.gname.type]);
- ScheduleFieldMessageWithFollowupState(46, sText_DontHaveTypeTrainerWants);
+ IntlConvPartnerUname7(gStringVar1, &uroom->field_0->arr[input]);
+ StringCopy(gStringVar2, gTypeNames[uroom->field_0->arr[input].gname_uname.gname.type]);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_TRADING_BOARD_LOAD, sText_DontHaveTypeTrainerWants);
break;
case UR_TRADE_NOEGG:
- IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[var5]);
- StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].gname_uname.gname.type]);
- ScheduleFieldMessageWithFollowupState(46, sText_DontHaveEggTrainerWants);
+ IntlConvPartnerUname7(gStringVar1, &uroom->field_0->arr[input]);
+ StringCopy(gStringVar2, gTypeNames[uroom->field_0->arr[input].gname_uname.gname.type]);
+ ScheduleFieldMessageWithFollowupState(UR_STATE_TRADING_BOARD_LOAD, sText_DontHaveEggTrainerWants);
break;
}
break;
}
}
break;
- case 49:
- switch (UnionRoomHandleYesNo(&data->textState, FALSE))
+ case UR_STATE_TRADE_PROMPT:
+ switch (UnionRoomHandleYesNo(&uroom->textState, FALSE))
{
- case 0:
- data->state = 50;
+ case 0: // YES
+ uroom->state = UR_STATE_TRADE_SELECT_MON;
break;
- case -1:
+ case -1: // NO
case 1:
- HandleCancelTrade(TRUE);
- data->state = 4;
+ HandleCancelActivity(TRUE);
+ uroom->state = UR_STATE_MAIN;
break;
}
break;
- case 50:
- if (PrintOnTextbox(&data->textState, sText_WhichMonWillYouOffer))
+ case UR_STATE_TRADE_SELECT_MON:
+ if (PrintOnTextbox(&uroom->textState, sText_WhichMonWillYouOffer))
{
- sUnionRoomTrade.field_0 = 2;
- memcpy(&gPartnerTgtGnameSub, &data->field_0->arr[taskData[1]].gname_uname.gname.unk_00, sizeof(gPartnerTgtGnameSub));
- gUnionRoomRequestedMonType = data->field_0->arr[taskData[1]].gname_uname.gname.type;
- gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].gname_uname.gname.species;
+ sUnionRoomTrade.state = URTRADE_STATE_OFFERING;
+ memcpy(&gPartnerTgtGnameSub, &uroom->field_0->arr[taskData[1]].gname_uname.gname.unk_00, sizeof(gPartnerTgtGnameSub));
+ gUnionRoomRequestedMonType = uroom->field_0->arr[taskData[1]].gname_uname.gname.type;
+ gUnionRoomOfferedSpecies = uroom->field_0->arr[taskData[1]].gname_uname.gname.species;
gFieldCallback = FieldCB_ContinueScriptUnionRoom;
ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_TRADE, CB2_ReturnToField);
- sub_80156B0(data);
- sUnionRoomTrade.field_8 = taskData[1];
+ sub_80156B0(uroom);
+ sUnionRoomTrade.offerPlayerId = taskData[1];
}
break;
- case 51:
+ case UR_STATE_TRADE_OFFER_MON:
gPlayerCurrActivity = ACTIVITY_TRADE | IN_UNION_ROOM;
- sub_8012188(data->field_0->arr[taskData[1]].gname_uname.playerName, &data->field_0->arr[taskData[1]].gname_uname.gname, 0x44);
- IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[taskData[1]]);
+ sub_8012188(uroom->field_0->arr[taskData[1]].gname_uname.playerName, &uroom->field_0->arr[taskData[1]].gname_uname.gname, gPlayerCurrActivity);
+ IntlConvPartnerUname7(gStringVar1, &uroom->field_0->arr[taskData[1]]);
UR_PrintFieldMessage(sCommunicatingWaitTexts[2]);
- data->state = 25;
+ uroom->state = UR_STATE_TRY_COMMUNICATING;
break;
- case 26:
- if (PrintOnTextbox(&data->textState, gStringVar4))
+ case UR_STATE_PRINT_AND_EXIT:
+ if (PrintOnTextbox(&uroom->textState, gStringVar4))
{
- HandleCancelTrade(TRUE);
- UpdateUnionRoomMemberFacing(taskData[0], taskData[1], data->field_0);
- data->state = 4;
+ HandleCancelActivity(TRUE);
+ UpdateUnionRoomMemberFacing(taskData[0], taskData[1], uroom->field_0);
+ uroom->state = UR_STATE_MAIN;
}
break;
- case 8:
- if (PrintOnTextbox(&data->textState, gStringVar4))
- data->state = data->stateAfterPrint;
+ case UR_STATE_PRINT_MSG:
+ if (PrintOnTextbox(&uroom->textState, gStringVar4))
+ uroom->state = uroom->stateAfterPrint;
break;
}
}
-void var_800D_set_xB(void)
+void SetUsingUnionRoomStartMenu(void)
{
if (InUnionRoom() == TRUE)
- gSpecialVar_Result = 11;
+ gSpecialVar_Result = UR_INTERACT_START_MENU;
}
static void ReceiveUnionRoomActivityPacket(struct WirelessLink_URoom *data)
@@ -3077,24 +3213,24 @@ static void ReceiveUnionRoomActivityPacket(struct WirelessLink_URoom *data)
}
}
-static bool32 UnionRoom_HandleContactFromOtherPlayer(struct WirelessLink_URoom *data)
+static bool32 UnionRoom_HandleContactFromOtherPlayer(struct WirelessLink_URoom *uroom)
{
- if (data->recvActivityRequest[0] != 0)
+ if (uroom->recvActivityRequest[0] != 0)
{
- s32 var = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &data->recvActivityRequest[0], data);
- if (var == 0)
+ s32 id = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &uroom->recvActivityRequest[0], uroom);
+ if (id == 0) // Error
{
return TRUE;
}
- else if (var == 1)
+ else if (id == 1) // Recieve activity request
{
- data->state = 35;
- gPlayerCurrActivity = data->recvActivityRequest[0];
+ uroom->state = UR_STATE_RECV_ACTIVITY_REQUEST;
+ gPlayerCurrActivity = uroom->recvActivityRequest[0];
return FALSE;
}
- else if (var == 2)
+ else if (id == 2) // No activity
{
- data->state = 36;
+ uroom->state = UR_STATE_CANCEL_REQUEST_PRINT_MSG;
sub_800AC34();
return FALSE;
}
@@ -3114,7 +3250,7 @@ void InitUnionRoom(void)
sURoom = sWirelessLinkMain.uRoom;
data->state = 0;
data->textState = 0;
- data->field_10 = 0;
+ data->unknown = 0;
data->field_12 = 0;
sUnionRoomPlayerName[0] = EOS;
}
@@ -3147,7 +3283,7 @@ static void Task_InitUnionRoom(u8 taskId)
ClearUnkStruct_x20Array(data->field_0->arr, 8);
data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
ClearUnkStruct_x20Array(&data->field_8->arr[0], 1);
- data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, 10);
+ data->searchTaskId = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, 10);
data->state = 3;
break;
case 3:
@@ -3180,7 +3316,7 @@ static void Task_InitUnionRoom(u8 taskId)
free(data->field_0);
free(data->field_C);
free(data->field_4);
- DestroyTask(data->field_20);
+ DestroyTask(data->searchTaskId);
free(sWirelessLinkMain.uRoom);
LinkRfu_Shutdown();
DestroyTask(taskId);
@@ -3214,7 +3350,7 @@ static u8 HandlePlayerListUpdate(void)
if (AreGnameUnameDifferent(&data->field_C->arr[i].gname_uname, &sWirelessGnameUnamePair_Dummy) == TRUE)
{
data->field_8->arr[0].gname_uname = data->field_C->arr[i].gname_uname;
- data->field_8->arr[0].field_18 = 0;
+ data->field_8->arr[0].timeoutCounter = 0;
data->field_8->arr[0].groupScheduledAnim = UNION_ROOM_SPAWN_IN;
data->field_8->arr[0].field_1B = 1;
return 4;
@@ -3232,7 +3368,7 @@ static u8 HandlePlayerListUpdate(void)
if (AreUnionRoomPlayerGnamesDifferent(&data->field_0->arr[j].gname_uname, &data->field_4->arr[i].gname_uname))
{
data->field_0->arr[j].gname_uname = data->field_4->arr[i].gname_uname;
- data->field_0->arr[j].field_1B = 0x40;
+ data->field_0->arr[j].field_1B = 64;
r7 = 1;
}
else if (data->field_0->arr[j].field_1B != 0)
@@ -3248,12 +3384,12 @@ static u8 HandlePlayerListUpdate(void)
data->field_0->arr[j].field_1B = 0;
r7 = 2;
}
- data->field_0->arr[j].field_18 = 0;
+ data->field_0->arr[j].timeoutCounter = 0;
}
else if (data->field_0->arr[j].groupScheduledAnim != UNION_ROOM_SPAWN_OUT)
{
- data->field_0->arr[j].field_18++;
- if (data->field_0->arr[j].field_18 >= 600)
+ data->field_0->arr[j].timeoutCounter++;
+ if (data->field_0->arr[j].timeoutCounter >= 600)
{
data->field_0->arr[j].groupScheduledAnim = UNION_ROOM_SPAWN_OUT;
r7 = 2;
@@ -3261,8 +3397,8 @@ static u8 HandlePlayerListUpdate(void)
}
else if (data->field_0->arr[j].groupScheduledAnim == UNION_ROOM_SPAWN_OUT)
{
- data->field_0->arr[j].field_18++;
- if (data->field_0->arr[j].field_18 >= 900)
+ data->field_0->arr[j].timeoutCounter++;
+ if (data->field_0->arr[j].timeoutCounter >= 900)
{
ClearUnkStruct_x20Array(&data->field_0->arr[j], 1);
}
@@ -3271,7 +3407,7 @@ static u8 HandlePlayerListUpdate(void)
}
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (Appendx1Ctox20(&data->field_0->arr[0], &data->field_4->arr[i], 8) != 0xFF)
+ if (Appendx1Ctox20(&data->field_0->arr[0], &data->field_4->arr[i], MAX_UNION_ROOM_PLAYERS) != 0xFF)
r7 = 1;
}
@@ -3445,7 +3581,7 @@ static bool8 PrintOnTextbox(u8 *textState, const u8 *str)
static s8 UnionRoomHandleYesNo(u8 *state, bool32 noDraw)
{
- s8 r1;
+ s8 input;
switch (*state)
{
@@ -3464,11 +3600,11 @@ static s8 UnionRoomHandleYesNo(u8 *state, bool32 noDraw)
*state = 0;
return -3;
}
- r1 = Menu_ProcessInputNoWrapClearOnChoose();
- if (r1 == -1 || r1 == 0 || r1 == 1)
+ input = Menu_ProcessInputNoWrapClearOnChoose();
+ if (input == -1 || input == 0 || input == 1)
{
*state = 0;
- return r1;
+ return input;
}
break;
}
@@ -3519,7 +3655,7 @@ static s32 ListMenuHandler_AllItemsAvailable(u8 *state, u8 *windowId, u8 *listMe
break;
case 1:
input = ListMenu_ProcessInput(*listMenuId);
- if (({gMain.newKeys & A_BUTTON;}))
+ if (JOY_NEW(A_BUTTON))
{
DestroyListMenuTask(*listMenuId, NULL, NULL);
ClearStdWindowAndFrame(*windowId, TRUE);
@@ -3527,7 +3663,7 @@ static s32 ListMenuHandler_AllItemsAvailable(u8 *state, u8 *windowId, u8 *listMe
*state = 0;
return input;
}
- else if (({gMain.newKeys & B_BUTTON;}))
+ else if (JOY_NEW(B_BUTTON))
{
DestroyListMenuTask(*listMenuId, NULL, NULL);
ClearStdWindowAndFrame(*windowId, TRUE);
@@ -3549,7 +3685,7 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *windowId, u8 *listMenuId, u8 *tr
switch (*state)
{
case 0:
- *tradeBoardWindowId = CreateTradeBoardWindow(&gUnknown_082F0344);
+ *tradeBoardWindowId = CreateTradeBoardWindow(&sWindowTemplate_TradingBoard);
*windowId = AddWindow(winTemplate);
DrawStdWindowFrame(*windowId, FALSE);
gMultiuseListMenuTemplate = *menuTemplate;
@@ -3562,11 +3698,10 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *windowId, u8 *listMenuId, u8 *tr
(*state)++;
break;
case 2:
- // Register swap r1 <---> r2
input = ListMenu_ProcessInput(*listMenuId);
- if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
- if (input == 8 || ({gMain.newKeys & B_BUTTON;}))
+ if (input == 8 || JOY_NEW(B_BUTTON))
{
DestroyListMenuTask(*listMenuId, NULL, NULL);
RemoveWindow(*windowId);
@@ -3685,9 +3820,9 @@ static void ClearUnkStruct_x20Array(struct UnkStruct_x20 *arr, u8 count)
for (i = 0; i < count; i++)
{
arr[i].gname_uname = sWirelessGnameUnamePair_Dummy;
- arr[i].field_18 = 0xFF;
+ arr[i].timeoutCounter = 255;
arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
- arr[i].field_1A_1 = 0;
+ arr[i].useRedText = FALSE;
arr[i].field_1B = 0;
}
}
@@ -3778,18 +3913,18 @@ static u32 Findx20Inx1CArray(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *a
return result;
}
-static u8 Appendx1Ctox20(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2)
+static u8 Appendx1Ctox20(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 max)
{
s32 i;
if (arg1->active)
{
- for (i = 0; i < arg2; i++)
+ for (i = 0; i < max; i++)
{
if (arg0[i].groupScheduledAnim == UNION_ROOM_SPAWN_NONE)
{
arg0[i].gname_uname = arg1->gname_uname;
- arg0[i].field_18 = 0;
+ arg0[i].timeoutCounter = 0;
arg0[i].groupScheduledAnim = UNION_ROOM_SPAWN_IN;
arg0[i].field_1B = 64;
arg1->active = FALSE;
@@ -3837,18 +3972,18 @@ static void PrintGroupMemberCandidateOnWindowWithColor(u8 windowId, u8 x, u8 y,
}
}
-static bool32 PlayerIsTalkingToUnionRoomAide(void)
+static bool32 IsPlayerFacingTradingBoard(void)
{
s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
- if (x != 9)
+ if (x != 2 + 7)
return FALSE;
- if (y != 8)
+ if (y != 1 + 7)
return FALSE;
- if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING)
return TRUE;
return FALSE;
@@ -4127,7 +4262,7 @@ static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activityD
StringExpandPlaceholders(dst, sText_ShowTrainerCard);
result = 1;
break;
- case IN_UNION_ROOM:
+ case ACTIVITY_NONE | IN_UNION_ROOM:
StringExpandPlaceholders(dst, sText_ChatDropped);
result = 2;
break;
@@ -4183,7 +4318,7 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void)
static void ResetUnionRoomTrade(struct UnionRoomTrade *uroomTrade)
{
- uroomTrade->field_0 = 0;
+ uroomTrade->state = URTRADE_STATE_NONE;
uroomTrade->type = 0;
uroomTrade->playerPersonality = 0;
uroomTrade->playerSpecies = 0;
@@ -4257,16 +4392,16 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *trade, u8 mult
return response;
}
-static void HandleCancelTrade(bool32 unlockObjs)
+static void HandleCancelActivity(bool32 setData)
{
UR_ClearBg0();
ScriptContext2_Disable();
UnionRoom_UnlockPlayerAndChatPartner();
- gPlayerCurrActivity = 0;
- if (unlockObjs)
+ gPlayerCurrActivity = ACTIVITY_NONE;
+ if (setData)
{
SetTradeBoardRegisteredMonInfo(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
- UpdateGameDataWithActivitySpriteGendersFlag(IN_UNION_ROOM, 0, 0);
+ UpdateGameData_SetActivity(ACTIVITY_NONE | IN_UNION_ROOM, 0, FALSE);
}
}
@@ -4302,62 +4437,62 @@ static void ViewURoomPartnerTrainerCard(u8 *unused, struct WirelessLink_URoom *d
DynamicPlaceholderTextUtil_Reset();
- StringCopy(data->field_C0[0], gTrainerClassNames[GetUnionRoomTrainerClass()]);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, data->field_C0[0]);
+ StringCopy(data->trainerCardStrBuffer[0], gTrainerClassNames[GetUnionRoomTrainerClass()]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, data->trainerCardStrBuffer[0]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
- StringCopy(data->field_174, sCardColorTexts[trainerCard->stars]);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, data->field_174);
+ StringCopy(data->trainerCardColorStrBuffer, sCardColorTexts[trainerCard->stars]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, data->trainerCardColorStrBuffer);
- ConvertIntToDecimalStringN(data->field_C0[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, data->field_C0[2]);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, data->trainerCardStrBuffer[2]);
- ConvertIntToDecimalStringN(data->field_C0[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
- ConvertIntToDecimalStringN(data->field_C0[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, data->field_C0[3]);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, data->field_C0[4]);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, data->trainerCardStrBuffer[3]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, data->trainerCardStrBuffer[4]);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(data->field_1A4, sText_TrainerCardInfoPage1);
- StringCopy(gStringVar4, data->field_1A4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(data->trainerCardMsgStrBuffer, sText_TrainerCardInfoPage1);
+ StringCopy(gStringVar4, data->trainerCardMsgStrBuffer);
n = trainerCard->linkBattleWins;
if (n > 9999)
{
n = 9999;
}
- ConvertIntToDecimalStringN(data->field_C0[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, data->field_C0[0]);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, data->trainerCardStrBuffer[0]);
n = trainerCard->linkBattleLosses;
if (n > 9999)
{
n = 9999;
}
- ConvertIntToDecimalStringN(data->field_C0[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, data->field_C0[1]);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, data->trainerCardStrBuffer[1]);
- ConvertIntToDecimalStringN(data->field_C0[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, data->field_C0[2]);
+ ConvertIntToDecimalStringN(data->trainerCardStrBuffer[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, data->trainerCardStrBuffer[2]);
for (i = 0; i < TRAINER_CARD_PROFILE_LENGTH; i++)
{
- CopyEasyChatWord(data->field_C0[i + 3], trainerCard->easyChatProfile[i]);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, data->field_C0[i + 3]);
+ CopyEasyChatWord(data->trainerCardStrBuffer[i + 3], trainerCard->easyChatProfile[i]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, data->trainerCardStrBuffer[i + 3]);
}
- DynamicPlaceholderTextUtil_ExpandPlaceholders(data->field_1A4, sText_TrainerCardInfoPage2);
- StringAppend(gStringVar4, data->field_1A4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(data->trainerCardMsgStrBuffer, sText_TrainerCardInfoPage2);
+ StringAppend(gStringVar4, data->trainerCardMsgStrBuffer);
if (isParent == TRUE)
{
- DynamicPlaceholderTextUtil_ExpandPlaceholders(data->field_1A4, sText_FinishedCheckingPlayersTrainerCard);
- StringAppend(gStringVar4, data->field_1A4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(data->trainerCardMsgStrBuffer, sText_FinishedCheckingPlayersTrainerCard);
+ StringAppend(gStringVar4, data->trainerCardMsgStrBuffer);
}
else if (isParent == FALSE)
{
- DynamicPlaceholderTextUtil_ExpandPlaceholders(data->field_1A4, sGladToMeetYouTexts[trainerCard->gender]);
- StringAppend(gStringVar4, data->field_1A4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(data->trainerCardMsgStrBuffer, sGladToMeetYouTexts[trainerCard->gender]);
+ StringAppend(gStringVar4, data->trainerCardMsgStrBuffer);
}
}
diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c
index 0e62a2740..cac789685 100644
--- a/src/union_room_player_avatar.c
+++ b/src/union_room_player_avatar.c
@@ -78,7 +78,7 @@ static const u8 sNextFacingDirection[] = {
[DIR_EAST] = DIR_NORTH
};
-// Local id 1 is the Nurse/Aide
+// Local id 1 is the Nurse/Attendant, 2-9 are link players
static const u8 sUnionRoomLocalIds[] = { 9, 8, 7, 2, 6, 5, 4, 3 };
static const u16 sUnknown[] = {
@@ -102,9 +102,9 @@ static const u8 sMovement_UnionPlayerEnter[2] = {
MOVEMENT_ACTION_STEP_END
};
-static bool32 is_walking_or_running(void)
+static bool32 IsPlayerStandingStill(void)
{
- if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING)
return TRUE;
else
return FALSE;
@@ -251,7 +251,7 @@ static bool32 AnimateUnionRoomPlayerSpawn(s8 * state, u32 playerIdx, struct Unio
switch (*state)
{
case 0:
- if (!is_walking_or_running())
+ if (!IsPlayerStandingStill())
{
break;
}
@@ -567,12 +567,12 @@ void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom)
}
}
-bool32 TrySetUnionRoomMemberFacePlayer(struct UnkStruct_Main0 *main0, s16 *directionPtr, s16 *playerIdxPtr, u8 *spriteIds)
+bool32 TryInteractWithUnionRoomMember(struct UnkStruct_Main0 *main0, s16 *directionPtr, s16 *playerIdxPtr, u8 *spriteIds)
{
s16 x, y;
s32 i, direction;
struct UnkStruct_x20 * r4;
- if (!is_walking_or_running())
+ if (!IsPlayerStandingStill())
{
return FALSE;
}
@@ -602,6 +602,7 @@ bool32 TrySetUnionRoomMemberFacePlayer(struct UnkStruct_Main0 *main0, s16 *direc
{
continue;
}
+ // Face player
SetUnionRoomObjectFacingDirection(direction, i, sOppositeFacingDirection[GetPlayerFacingDirection()]);
*directionPtr = direction;
*playerIdxPtr = i;