summaryrefslogtreecommitdiff
path: root/src/pokenav_match_call_1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokenav_match_call_1.c')
-rwxr-xr-xsrc/pokenav_match_call_1.c114
1 files changed, 60 insertions, 54 deletions
diff --git a/src/pokenav_match_call_1.c b/src/pokenav_match_call_1.c
index e0e5306e1..d56cfdb62 100755
--- a/src/pokenav_match_call_1.c
+++ b/src/pokenav_match_call_1.c
@@ -14,26 +14,26 @@
#include "strings.h"
#include "constants/songs.h"
-struct Pokenav3Struct
+struct Pokenav_MatchCallMenu
{
u16 optionCursorPos;
u16 maxOptionId;
const u8 *matchCallOptions;
u16 headerId;
u16 numRegistered;
- u16 unkC;
- u32 unk10;
- u32 unk14;
- u32 (*callback)(struct Pokenav3Struct*);
+ u16 numSpecialTrainers;
+ bool32 initFinished;
+ u32 loopedTaskId;
+ u32 (*callback)(struct Pokenav_MatchCallMenu*);
struct PokenavMatchCallEntry matchCallEntries[MAX_REMATCH_ENTRIES - 1];
};
-static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *);
-static u32 GetExitMatchCallMenuId(struct Pokenav3Struct *);
-static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *);
-static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *);
-static u32 CB2_HandleCallExitInput(struct Pokenav3Struct *);
-static u32 sub_81CAD20(s32);
+static u32 CB2_HandleMatchCallInput(struct Pokenav_MatchCallMenu *);
+static u32 GetExitMatchCallMenuId(struct Pokenav_MatchCallMenu *);
+static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav_MatchCallMenu *);
+static u32 CB2_HandleCheckPageInput(struct Pokenav_MatchCallMenu *);
+static u32 CB2_HandleCallExitInput(struct Pokenav_MatchCallMenu *);
+static u32 LoopedTask_BuildMatchCallList(s32);
static bool32 ShouldDoNearbyMessage(void);
#include "data/text/match_call_messages.h"
@@ -53,20 +53,20 @@ static const u8 sMatchCallOptionsHasCheckPage[] =
bool32 PokenavCallback_Init_MatchCall(void)
{
- struct Pokenav3Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN, sizeof(struct Pokenav3Struct));
+ struct Pokenav_MatchCallMenu *state = AllocSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN, sizeof(struct Pokenav_MatchCallMenu));
if (!state)
return FALSE;
state->callback = CB2_HandleMatchCallInput;
state->headerId = 0;
- state->unk10 = 0;
- state->unk14 = CreateLoopedTask(sub_81CAD20, 1);
+ state->initFinished = FALSE;
+ state->loopedTaskId = CreateLoopedTask(LoopedTask_BuildMatchCallList, 1);
return TRUE;
}
u32 GetMatchCallCallback(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->callback(state);
}
@@ -75,7 +75,7 @@ void FreeMatchCallSubstruct1(void)
FreePokenavSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
}
-static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
+static u32 CB2_HandleMatchCallInput(struct Pokenav_MatchCallMenu *state)
{
int selection;
@@ -125,20 +125,20 @@ static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_NONE;
}
-static u32 GetExitMatchCallMenuId(struct Pokenav3Struct *state)
+static u32 GetExitMatchCallMenuId(struct Pokenav_MatchCallMenu *state)
{
return POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL;
}
-static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
+static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav_MatchCallMenu *state)
{
- if ((JOY_NEW(DPAD_UP)) && state->optionCursorPos)
+ if (JOY_NEW(DPAD_UP) && state->optionCursorPos)
{
state->optionCursorPos--;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
}
- if ((JOY_NEW(DPAD_DOWN)) && state->optionCursorPos < state->maxOptionId)
+ if (JOY_NEW(DPAD_DOWN) && state->optionCursorPos < state->maxOptionId)
{
state->optionCursorPos++;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
@@ -175,7 +175,7 @@ static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_NONE;
}
-static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *state)
+static u32 CB2_HandleCheckPageInput(struct Pokenav_MatchCallMenu *state)
{
if (JOY_REPEAT(DPAD_UP))
return POKENAV_MC_FUNC_CHECK_PAGE_UP;
@@ -191,7 +191,7 @@ static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_NONE;
}
-static u32 CB2_HandleCallExitInput(struct Pokenav3Struct *state)
+static u32 CB2_HandleCallExitInput(struct Pokenav_MatchCallMenu *state)
{
if (JOY_NEW(A_BUTTON | B_BUTTON))
{
@@ -202,10 +202,10 @@ static u32 CB2_HandleCallExitInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_NONE;
}
-static u32 sub_81CAD20(s32 taskState)
+static u32 LoopedTask_BuildMatchCallList(s32 taskState)
{
int i, j;
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
switch (taskState)
{
case 0:
@@ -213,6 +213,7 @@ static u32 sub_81CAD20(s32 taskState)
state->numRegistered = 0;
return LT_INC_AND_CONTINUE;
case 1:
+ // Load special trainers (e.g. Rival, gym leaders)
for (i = 0, j = state->headerId; i < 30; i++, j++)
{
if (MatchCall_GetEnabled(j))
@@ -225,7 +226,7 @@ static u32 sub_81CAD20(s32 taskState)
if (++state->headerId >= MC_HEADER_COUNT)
{
- state->unkC = state->headerId;
+ state->numSpecialTrainers = state->headerId;
state->headerId = 0;
return LT_INC_AND_CONTINUE;
}
@@ -233,6 +234,7 @@ static u32 sub_81CAD20(s32 taskState)
return LT_CONTINUE;
case 2:
+ // Load normal trainers
for (i = 0, j = state->headerId; i < 30; i++, j++)
{
if (!MatchCall_HasRematchId(state->headerId) && IsRematchEntryRegistered(state->headerId))
@@ -249,7 +251,7 @@ static u32 sub_81CAD20(s32 taskState)
return LT_CONTINUE;
case 3:
- state->unk10 = 1;
+ state->initFinished = TRUE;
break;
}
@@ -264,55 +266,58 @@ bool32 IsRematchEntryRegistered(int rematchIndex)
return FALSE;
}
-int sub_81CAE28(void)
+int IsMatchCallListInitFinished(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
- return state->unk10;
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ return state->initFinished;
}
int GetNumberRegistered(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->numRegistered;
}
-int sub_81CAE48(void)
+// Unused
+static int GetNumSpecialTrainers(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
- return state->unkC;
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ return state->numSpecialTrainers;
}
-int unref_sub_81CAE58(void)
+// Unused
+static int GetNumNormalTrainers(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
- return state->numRegistered - state->unkC;
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ return state->numRegistered - state->numSpecialTrainers;
}
-int unref_sub_81CAE6C(int arg0)
+// Unused
+static int GetNormalTrainerHeaderId(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
- arg0 += state->unkC;
- if (arg0 >= state->numRegistered)
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ index += state->numSpecialTrainers;
+ if (index >= state->numRegistered)
return REMATCH_TABLE_ENTRIES;
- return state->matchCallEntries[arg0].headerId;
+ return state->matchCallEntries[index].headerId;
}
-struct PokenavMatchCallEntry *sub_81CAE94(void)
+struct PokenavMatchCallEntry *GetMatchCallList(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->matchCallEntries;
}
u16 GetMatchCallMapSec(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->matchCallEntries[index].mapSec;
}
bool32 ShouldDrawRematchPokeballIcon(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (!state->matchCallEntries[index].isSpecialTrainer)
index = state->matchCallEntries[index].headerId;
else
@@ -327,7 +332,7 @@ bool32 ShouldDrawRematchPokeballIcon(int index)
int GetMatchCallTrainerPic(int index)
{
int headerId;
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (!state->matchCallEntries[index].isSpecialTrainer)
{
index = GetTrainerIdxByRematchIdx(state->matchCallEntries[index].headerId);
@@ -348,7 +353,7 @@ int GetMatchCallTrainerPic(int index)
const u8 *GetMatchCallMessageText(int index, bool8 *newRematchRequest)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
*newRematchRequest = FALSE;
if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType))
return gText_CallCantBeMadeHere;
@@ -364,7 +369,7 @@ const u8 *GetMatchCallMessageText(int index, bool8 *newRematchRequest)
const u8 *GetMatchCallFlavorText(int index, int checkPageEntry)
{
int rematchId;
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (state->matchCallEntries[index].isSpecialTrainer)
{
rematchId = MatchCall_GetRematchTableIdx(state->matchCallEntries[index].headerId);
@@ -381,13 +386,13 @@ const u8 *GetMatchCallFlavorText(int index, int checkPageEntry)
u16 GetMatchCallOptionCursorPos(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->optionCursorPos;
}
u16 GetMatchCallOptionId(int optionId)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (state->maxOptionId < optionId)
return MATCH_CALL_OPTION_COUNT;
@@ -431,7 +436,7 @@ u8 GetMatchTableMapSectionId(int rematchIndex)
int GetIndexDeltaOfNextCheckPageDown(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
int count = 1;
while (++index < state->numRegistered)
{
@@ -448,7 +453,7 @@ int GetIndexDeltaOfNextCheckPageDown(int index)
int GetIndexDeltaOfNextCheckPageUp(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
int count = -1;
while (--index >= 0)
{
@@ -463,7 +468,8 @@ int GetIndexDeltaOfNextCheckPageUp(int index)
return 0;
}
-bool32 unref_sub_81CB16C(void)
+// Unused
+static bool32 HasRematchEntry(void)
{
int i;
@@ -488,7 +494,7 @@ bool32 unref_sub_81CB16C(void)
static bool32 ShouldDoNearbyMessage(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
int selection = PokenavList_GetSelectedIndex();
if (!state->matchCallEntries[selection].isSpecialTrainer)
{