Document union_room_player_avatar.c

This commit is contained in:
GriffinR
2020-06-01 10:23:12 -04:00
parent 4fe507e453
commit f53e2491bf
15 changed files with 373 additions and 376 deletions
+19 -28
View File
@@ -53,7 +53,6 @@
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/union_room.h"
static EWRAM_DATA u8 sUnionRoomPlayerName[12] = {};
EWRAM_DATA u8 gPlayerCurrActivity = 0;
@@ -104,7 +103,7 @@ static bool32 AreUnionRoomPlayerGnamesDifferent(struct WirelessGnameUnamePair *a
static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *arg0, u8 multiplayerId);
static void ResetUnionRoomTrade(struct UnionRoomTrade *arg0);
static void CreateTask_StartActivity(void);
static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname *arg0, s16 arg1);
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);
@@ -1191,14 +1190,14 @@ static void Task_ListenToWireless(u8 taskId)
}
}
static bool32 IsPartnerActivityAcceptable(u32 activity, u32 group)
static bool32 IsPartnerActivityAcceptable(u32 activity, u32 linkGroup)
{
if (group == 0xFF)
if (linkGroup == 0xFF)
return TRUE;
if (group <= ARRAY_COUNT(sAcceptedActivityIds)) // UB: <= may access data outside the array
if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds)) // UB: <= may access data outside the array
{
const u8 *bytes = sAcceptedActivityIds[group];
const u8 *bytes = sAcceptedActivityIds[linkGroup];
while ((*(bytes) != 0xFF))
{
@@ -2149,7 +2148,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
{
if (data->field_0->arr[0].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[0].gname_uname.gname.started)
{
if (GetGnameWonderFlagByLinkGroup(&data->field_0->arr[0].gname_uname.gname, data->isWonderNews + LINK_GROUP_WONDER_CARD))
if (HasWonderCardOrNewsByLinkGroup(&data->field_0->arr[0].gname_uname.gname, data->isWonderNews + LINK_GROUP_WONDER_CARD))
{
data->leaderId = 0;
data->refreshTimer = 0;
@@ -2325,15 +2324,15 @@ static void Task_RunUnionRoom(u8 taskId)
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, 8);
ClearUnkStruct_x20Array(data->field_0->arr, ARRAY_COUNT(data->field_0->arr));
gPlayerCurrActivity = IN_UNION_ROOM;
data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, LINK_GROUP_UNION_ROOM_RESUME);
sub_8019BA8(data->field_A0);
sub_8019F2C();
InitUnionRoomPlayerObjects(data->objects);
SetTilesAroundUnionRoomPlayersPassable();
data->state = 1;
break;
case 1:
CreateGroupMemberObjectsInvisible(data->spriteIds, taskData[0]);
CreateGroupMemberSpritesInvisible(data->spriteIds, taskData[0]);
if (++taskData[0] == 8)
data->state = 2;
break;
@@ -2426,7 +2425,7 @@ static void Task_RunUnionRoom(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
if (RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(data->field_0, &taskData[0], &taskData[1], data->spriteIds))
if (TrySetUnionRoomMemberFacePlayer(data->field_0, &taskData[0], &taskData[1], data->spriteIds))
{
PlaySE(SE_SELECT);
UR_EnableScriptContext2AndFreezeObjectEvents();
@@ -2526,7 +2525,7 @@ static void Task_RunUnionRoom(u8 taskId)
if (!gReceivedRemoteLinkPlayers)
{
HandleCancelTrade(FALSE);
UpdateUnionGroupMemberFacing(taskData[0], taskData[1], data->field_0);
UpdateUnionRoomMemberFacing(taskData[0], taskData[1], data->field_0);
data->state = 2;
}
break;
@@ -2848,7 +2847,7 @@ static void Task_RunUnionRoom(u8 taskId)
Free(data->field_C);
Free(data->field_4);
DestroyTask(data->field_20);
DestroyGroupMemberObjects(data->spriteIds);
DestroyGroupMemberSprites(data->spriteIds);
data->state = 17;
break;
case 17:
@@ -2858,7 +2857,7 @@ static void Task_RunUnionRoom(u8 taskId)
case 18:
if (!UpdatePaletteFade())
{
sub_8019E3C();
DestroyUnionRoomPlayerObjects();
DestroyTask(taskId);
Free(sWirelessLinkMain.uRoom);
CreateTask_StartActivity();
@@ -3048,7 +3047,7 @@ static void Task_RunUnionRoom(u8 taskId)
if (PrintOnTextbox(&data->textState, gStringVar4))
{
HandleCancelTrade(TRUE);
UpdateUnionGroupMemberFacing(taskData[0], taskData[1], data->field_0);
UpdateUnionRoomMemberFacing(taskData[0], taskData[1], data->field_0);
data->state = 4;
}
break;
@@ -3221,7 +3220,7 @@ static u8 HandlePlayerListUpdate(void)
return 4;
}
}
for (j = 0; j < 8; j++)
for (j = 0; j < ARRAY_COUNT(data->field_0->arr); j++)
{
if (data->field_0->arr[j].groupScheduledAnim != UNION_ROOM_SPAWN_NONE)
{
@@ -3350,29 +3349,21 @@ static void Task_ListenForPartnersWithCompatibleSerialNos(u8 taskId)
}
}
static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname *gname, s16 linkGroup)
static bool32 HasWonderCardOrNewsByLinkGroup(struct GFtgtGname *gname, s16 linkGroup)
{
if (linkGroup == LINK_GROUP_WONDER_CARD)
{
if (!gname->unk_00.hasCard)
{
return FALSE;
}
else
{
return TRUE;
}
}
else if (linkGroup == LINK_GROUP_WONDER_NEWS)
{
if (!gname->unk_00.hasNews)
{
return FALSE;
}
else
{
return TRUE;
}
}
else
{
@@ -3389,7 +3380,7 @@ static void Task_ListenForPartnersWithSerial7F7D(u8 taskId)
{
if (LinkRfu_GetNameIfSerial7F7D(&ptr[0]->arr[i].gname_uname.gname, ptr[0]->arr[i].gname_uname.playerName, i))
{
GetGnameWonderFlagByLinkGroup(&ptr[0]->arr[i].gname_uname.gname, gTasks[taskId].data[2]);
HasWonderCardOrNewsByLinkGroup(&ptr[0]->arr[i].gname_uname.gname, gTasks[taskId].data[2]);
}
ptr[0]->arr[i].active = AreGnameUnameDifferent(&ptr[0]->arr[i].gname_uname, &sWirelessGnameUnamePair_Dummy);
}
@@ -3980,7 +3971,7 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
else
{
j = 0;
for (i = 0; i < 8; i++)
for (i = 0; i < (int)ARRAY_COUNT(data->field_0->arr); i++)
{
if (data->field_0->arr[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN && data->field_0->arr[i].gname_uname.gname.species != SPECIES_NONE)
{