summaryrefslogtreecommitdiff
path: root/src/pokenav_unk_1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokenav_unk_1.c')
-rw-r--r--src/pokenav_unk_1.c417
1 files changed, 232 insertions, 185 deletions
diff --git a/src/pokenav_unk_1.c b/src/pokenav_unk_1.c
index 8bf3ebd2a..44176176d 100644
--- a/src/pokenav_unk_1.c
+++ b/src/pokenav_unk_1.c
@@ -9,50 +9,92 @@ struct Pokenav1Struct
{
u16 menuType;
s16 cursorPos;
- u16 descriptionId;
+ u16 currMenuItem;
u16 helpBarIndex;
u32 unk8;
u32 (*callback)(struct Pokenav1Struct*);
};
-static bool32 sub_81C9814(struct Pokenav1Struct *a0);
-static void sub_81C97F8(struct Pokenav1Struct *a0);
-static void sub_81C97C0(struct Pokenav1Struct *a0);
-static u32 sub_81C97BC(struct Pokenav1Struct *a0);
-static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1);
-static u32 sub_81C97A4(struct Pokenav1Struct *a0);
-static u32 sub_81C9798(struct Pokenav1Struct *a0);
-static u32 sub_81C96FC(struct Pokenav1Struct *a0);
-static u32 sub_81C963C(struct Pokenav1Struct *a0);
-static u32 sub_81C9600(struct Pokenav1Struct *a0);
-static u32 sub_81C9588(struct Pokenav1Struct *a0);
-static u32 sub_81C9520(struct Pokenav1Struct *a0);
-static u32 sub_81C943C(struct Pokenav1Struct *a0);
-static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*);
-static void sub_81C939C(struct Pokenav1Struct *state);
-
-static const u8 sLastCursorPositions[] = {2, 3, 4, 2, 5};
-
-static const u8 sDescriptionIds[][6] =
+static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state);
+static void ReturnToConditionMenu(struct Pokenav1Struct *state);
+static void ReturnToMainMenu(struct Pokenav1Struct *state);
+static u32 sub_81C97BC(struct Pokenav1Struct *state);
+static void sub_81C97B0(struct Pokenav1Struct *state, u32 a1);
+static u32 CB2_ReturnToConditionMenu(struct Pokenav1Struct *state);
+static u32 CB2_ReturnToMainMenu(struct Pokenav1Struct *state);
+static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state);
+static u32 HandleConditionMenuInput(struct Pokenav1Struct *state);
+static u32 HandleCantOpenRibbonsInput(struct Pokenav1Struct *state);
+static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state);
+static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state);
+static u32 HandleMainMenuInput(struct Pokenav1Struct *state);
+static u32 (*GetMainMenuInputHandler(void))(struct Pokenav1Struct*);
+static void SetMenuInputHandler(struct Pokenav1Struct *state);
+
+// Number of entries - 1 for that menu type
+static const u8 sLastCursorPositions[] =
{
- { 0, 1, 4, 4, 4, 4 },
- { 0, 1, 2, 4, 4, 4 },
- { 0, 1, 2, 3, 4, 4 },
- { 5, 6, 7, 4, 4, 4 },
- { 8, 9, 10, 11, 12, 13 },
+ [POKENAV_MENU_TYPE_DEFAULT] = 2,
+ [POKENAV_MENU_TYPE_UNLOCK_MC] = 3,
+ [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] = 4,
+ [POKENAV_MENU_TYPE_CONDITION] = 2,
+ [POKENAV_MENU_TYPE_CONDITION_SEARCH] = 5
+};
+
+static const u8 sMenuItems[][6] =
+{
+ [POKENAV_MENU_TYPE_DEFAULT] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
+ [2 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
+ },
+ [POKENAV_MENU_TYPE_UNLOCK_MC] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
+ POKENAV_MENUITEM_MATCH_CALL,
+ [3 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
+ },
+ [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
+ POKENAV_MENUITEM_MATCH_CALL,
+ POKENAV_MENUITEM_RIBBONS,
+ [4 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
+ },
+ [POKENAV_MENU_TYPE_CONDITION] =
+ {
+ POKENAV_MENUITEM_CONDITION_PARTY,
+ POKENAV_MENUITEM_CONDITION_SEARCH,
+ POKENAV_MENUITEM_CONDITION_CANCEL,
+ [3 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
+ },
+ [POKENAV_MENU_TYPE_CONDITION_SEARCH] =
+ {
+ POKENAV_MENUITEM_CONDITION_SEARCH_COOL,
+ POKENAV_MENUITEM_CONDITION_SEARCH_BEAUTY,
+ POKENAV_MENUITEM_CONDITION_SEARCH_CUTE,
+ POKENAV_MENUITEM_CONDITION_SEARCH_SMART,
+ POKENAV_MENUITEM_CONDITION_SEARCH_TOUGH,
+ POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL
+ },
};
static u8 GetPokenavMainMenuType(void)
{
- u8 retVal = 0;
+ u8 menuType = POKENAV_MENU_TYPE_DEFAULT;
+
if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV))
{
- retVal = 1;
+ menuType = POKENAV_MENU_TYPE_UNLOCK_MC;
+
if (FlagGet(FLAG_SYS_RIBBON_GET))
- retVal = 2;
+ menuType = POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS;
}
- return retVal;
+ return menuType;
}
bool32 PokenavCallback_Init_0(void)
@@ -63,9 +105,9 @@ bool32 PokenavCallback_Init_0(void)
state->menuType = GetPokenavMainMenuType();
state->cursorPos = 0;
- state->descriptionId = 0;
+ state->currMenuItem = POKENAV_MENUITEM_MAP;
state->helpBarIndex = HELPBAR_NONE;
- sub_81C939C(state);
+ SetMenuInputHandler(state);
return TRUE;
}
@@ -77,9 +119,9 @@ bool32 PokenavCallback_Init_4(void)
state->menuType = GetPokenavMainMenuType();
state->cursorPos = 2;
- state->descriptionId = 2;
+ state->currMenuItem = POKENAV_MENUITEM_MATCH_CALL;
state->helpBarIndex = HELPBAR_NONE;
- sub_81C939C(state);
+ SetMenuInputHandler(state);
return TRUE;
}
@@ -91,8 +133,8 @@ bool32 PokenavCallback_Init_5(void)
state->menuType = GetPokenavMainMenuType();
state->cursorPos = 3;
- state->descriptionId = 3;
- sub_81C939C(state);
+ state->currMenuItem = POKENAV_MENUITEM_RIBBONS;
+ SetMenuInputHandler(state);
return TRUE;
}
@@ -102,11 +144,11 @@ bool32 PokenavCallback_Init_2(void)
if (!state)
return FALSE;
- state->menuType = 3;
+ state->menuType = POKENAV_MENU_TYPE_CONDITION;
state->cursorPos = 0;
- state->descriptionId = 5;
+ state->currMenuItem = POKENAV_MENUITEM_CONDITION_PARTY;
state->helpBarIndex = HELPBAR_NONE;
- sub_81C939C(state);
+ SetMenuInputHandler(state);
return TRUE;
}
@@ -116,45 +158,45 @@ bool32 PokenavCallback_Init_3(void)
if (!state)
return FALSE;
- state->menuType = 4;
- state->cursorPos = sub_81C76AC();
- state->descriptionId = state->cursorPos + 8;
+ state->menuType = POKENAV_MENU_TYPE_CONDITION_SEARCH;
+ state->cursorPos = GetSelectedConditionSearch();
+ state->currMenuItem = state->cursorPos + POKENAV_MENUITEM_CONDITION_SEARCH_COOL;
state->helpBarIndex = HELPBAR_NONE;
- sub_81C939C(state);
+ SetMenuInputHandler(state);
return TRUE;
}
-static void sub_81C939C(struct Pokenav1Struct *state)
+static void SetMenuInputHandler(struct Pokenav1Struct *state)
{
switch (state->menuType)
{
- case 0:
+ case POKENAV_MENU_TYPE_DEFAULT:
SetPokenavMode(POKENAV_MODE_NORMAL);
// fallthrough
- case 1:
- case 2:
- state->callback = sub_81C93EC();
+ case POKENAV_MENU_TYPE_UNLOCK_MC:
+ case POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS:
+ state->callback = GetMainMenuInputHandler();
break;
- case 3:
- state->callback = sub_81C963C;
+ case POKENAV_MENU_TYPE_CONDITION:
+ state->callback = HandleConditionMenuInput;
break;
- case 4:
- state->callback = sub_81C96FC;
+ case POKENAV_MENU_TYPE_CONDITION_SEARCH:
+ state->callback = HandleConditionSearchMenuInput;
break;
}
}
-static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*)
+static u32 (*GetMainMenuInputHandler(void))(struct Pokenav1Struct*)
{
switch (GetPokenavMode())
{
default:
case POKENAV_MODE_NORMAL:
- return sub_81C943C;
+ return HandleMainMenuInput;
case POKENAV_MODE_FORCE_CALL_READY:
- return sub_81C9520;
+ return HandleMainMenuInputTutorial;
case POKENAV_MODE_FORCE_CALL_EXIT:
- return sub_81C9588;
+ return HandleMainMenuInputEndTutorial;
}
}
@@ -169,42 +211,42 @@ void sub_81C9430(void)
FreePokenavSubstruct(1);
}
-static u32 sub_81C943C(struct Pokenav1Struct *a0)
+static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
{
- if (sub_81C9814(a0))
- return 1;
+ if (UpdateMenuCursorPos(state))
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
if (gMain.newKeys & A_BUTTON)
{
- switch (sDescriptionIds[a0->menuType][a0->cursorPos])
+ switch (sMenuItems[state->menuType][state->cursorPos])
{
- case 0:
- a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? HELPBAR_MAP_ZOOMED_IN : HELPBAR_MAP_ZOOMED_OUT;
- sub_81C97B0(a0, POKENAV_MENU_6);
- return 8;
- case 1:
- a0->menuType = 3;
- a0->cursorPos = 0;
- a0->descriptionId = sDescriptionIds[3][0];
- a0->callback = sub_81C963C;
- return 2;
- case 2:
- a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(a0, POKENAV_MENU_B);
- return 8;
- case 3:
+ case POKENAV_MENUITEM_MAP:
+ state->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? HELPBAR_MAP_ZOOMED_IN : HELPBAR_MAP_ZOOMED_OUT;
+ sub_81C97B0(state, POKENAV_MENU_6);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
+ case POKENAV_MENUITEM_CONDITION:
+ state->menuType = POKENAV_MENU_TYPE_CONDITION;
+ state->cursorPos = 0;
+ state->currMenuItem = sMenuItems[POKENAV_MENU_TYPE_CONDITION][0];
+ state->callback = HandleConditionMenuInput;
+ return POKENAV_MENU_FUNC_OPEN_CONDITION;
+ case POKENAV_MENUITEM_MATCH_CALL:
+ state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
+ sub_81C97B0(state, POKENAV_MENU_B);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
+ case POKENAV_MENUITEM_RIBBONS:
if (CanViewRibbonsMenu())
{
- a0->helpBarIndex = HELPBAR_RIBBONS_MON_LIST;
- sub_81C97B0(a0, POKENAV_MENU_C);
- return 8;
+ state->helpBarIndex = HELPBAR_RIBBONS_MON_LIST;
+ sub_81C97B0(state, POKENAV_MENU_C);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
{
- a0->callback = sub_81C9600;
- return 6;
+ state->callback = HandleCantOpenRibbonsInput;
+ return POKENAV_MENU_FUNC_NO_RIBBON_WINNERS;
}
- case 4:
+ case POKENAV_MENUITEM_SWITCH_OFF:
return -1;
}
}
@@ -212,56 +254,58 @@ static u32 sub_81C943C(struct Pokenav1Struct *a0)
if (gMain.newKeys & B_BUTTON)
return -1;
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C9520(struct Pokenav1Struct *a0)
+// Force the player to select Match Call during the call Mr. Stone pokenav tutorial
+static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state)
{
- if (sub_81C9814(a0))
- return 1;
+ if (UpdateMenuCursorPos(state))
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
if (gMain.newKeys & A_BUTTON)
{
- if (sDescriptionIds[a0->menuType][a0->cursorPos] == 2)
+ if (sMenuItems[state->menuType][state->cursorPos] == POKENAV_MENUITEM_MATCH_CALL)
{
- a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(a0, POKENAV_MENU_B);
- return 8;
+ state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
+ sub_81C97B0(state, POKENAV_MENU_B);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
{
PlaySE(SE_HAZURE);
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
}
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_HAZURE);
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C9588(struct Pokenav1Struct *a0)
+// After calling Mr. Stone during the pokenav tutorial, force player to exit or use Match Call again
+static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state)
{
- if (sub_81C9814(a0))
- return 1;
+ if (UpdateMenuCursorPos(state))
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
if (gMain.newKeys & A_BUTTON)
{
- u32 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
- if (v0 != 2 && v0 != 4)
+ u32 menuItem = sMenuItems[state->menuType][state->cursorPos];
+ if (menuItem != POKENAV_MENUITEM_MATCH_CALL && menuItem != POKENAV_MENUITEM_SWITCH_OFF)
{
PlaySE(SE_HAZURE);
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
- else if (v0 == 2)
+ else if (menuItem == POKENAV_MENUITEM_MATCH_CALL)
{
- a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(a0, POKENAV_MENU_B);
- return 8;
+ state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
+ sub_81C97B0(state, POKENAV_MENU_B);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
{
@@ -272,167 +316,168 @@ static u32 sub_81C9588(struct Pokenav1Struct *a0)
{
return -1;
}
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C9600(struct Pokenav1Struct *a0)
+// Handles input after selecting Ribbons when there are no ribbon winners left
+// Selecting it again just reprints the Ribbon description to replace the "No Ribbon winners" message
+static u32 HandleCantOpenRibbonsInput(struct Pokenav1Struct *state)
{
- if (sub_81C9814(a0))
+ if (UpdateMenuCursorPos(state))
{
- a0->callback = sub_81C93EC();
- return 1;
+ state->callback = GetMainMenuInputHandler();
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
}
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- a0->callback = sub_81C93EC();
- return 7;
+ state->callback = GetMainMenuInputHandler();
+ return POKENAV_MENU_FUNC_RESHOW_DESCRIPTION;
}
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C963C(struct Pokenav1Struct *a0)
+static u32 HandleConditionMenuInput(struct Pokenav1Struct *state)
{
- u32 v0 = sub_81C9814(a0);
- if (v0)
- return 1;
+ if (UpdateMenuCursorPos(state))
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
if (gMain.newKeys & A_BUTTON)
{
- switch (sDescriptionIds[a0->menuType][a0->cursorPos])
+ switch (sMenuItems[state->menuType][state->cursorPos])
{
- case 6:
- a0->menuType = 4;
- a0->cursorPos = v0;
- a0->descriptionId = sDescriptionIds[4][0];
- a0->callback = sub_81C96FC;
- return 4;
- case 5:
- a0->helpBarIndex = v0;
- sub_81C97B0(a0, POKENAV_MENU_7);
- return 8;
- case 7:
+ case POKENAV_MENUITEM_CONDITION_SEARCH:
+ state->menuType = POKENAV_MENU_TYPE_CONDITION_SEARCH;
+ state->cursorPos = 0;
+ state->currMenuItem = sMenuItems[POKENAV_MENU_TYPE_CONDITION_SEARCH][0];
+ state->callback = HandleConditionSearchMenuInput;
+ return POKENAV_MENU_FUNC_OPEN_CONDITION_SEARCH;
+ case POKENAV_MENUITEM_CONDITION_PARTY:
+ state->helpBarIndex = 0;
+ sub_81C97B0(state, POKENAV_MENU_7);
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
+ case POKENAV_MENUITEM_CONDITION_CANCEL:
PlaySE(SE_SELECT);
- sub_81C97C0(a0);
- return 3;
+ ReturnToMainMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_MAIN;
}
}
if (gMain.newKeys & B_BUTTON)
{
- if (a0->cursorPos != sLastCursorPositions[a0->menuType])
+ if (state->cursorPos != sLastCursorPositions[state->menuType])
{
- a0->cursorPos = sLastCursorPositions[a0->menuType];
- a0->callback = sub_81C9798;
- return 1;
+ state->cursorPos = sLastCursorPositions[state->menuType];
+ state->callback = CB2_ReturnToMainMenu;
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
}
else
{
PlaySE(SE_SELECT);
- sub_81C97C0(a0);
- return 3;
+ ReturnToMainMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_MAIN;
}
}
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C96FC(struct Pokenav1Struct *a0)
+static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state)
{
- if (sub_81C9814(a0))
- return 1;
+ if (UpdateMenuCursorPos(state))
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
if (gMain.newKeys & A_BUTTON)
{
- u8 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
- if (v0 != 13)
+ u8 menuItem = sMenuItems[state->menuType][state->cursorPos];
+ if (menuItem != POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL)
{
- sub_81C7694(v0 - 8);
- sub_81C97B0(a0, POKENAV_MENU_8);
- a0->helpBarIndex = HELPBAR_CONDITION_MON_LIST;
- return 8;
+ SetSelectedConditionSearch(menuItem - POKENAV_MENUITEM_CONDITION_SEARCH_COOL);
+ sub_81C97B0(state, POKENAV_MENU_8);
+ state->helpBarIndex = HELPBAR_CONDITION_MON_LIST;
+ return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
{
PlaySE(SE_SELECT);
- sub_81C97F8(a0);
- return 5;
+ ReturnToConditionMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_CONDITION;
}
}
if (gMain.newKeys & B_BUTTON)
{
- if (a0->cursorPos != sLastCursorPositions[a0->menuType])
+ if (state->cursorPos != sLastCursorPositions[state->menuType])
{
- a0->cursorPos = sLastCursorPositions[a0->menuType];
- a0->callback = sub_81C97A4;
- return 1;
+ state->cursorPos = sLastCursorPositions[state->menuType];
+ state->callback = CB2_ReturnToConditionMenu;
+ return POKENAV_MENU_FUNC_MOVE_CURSOR;
}
else
{
PlaySE(SE_SELECT);
- sub_81C97F8(a0);
- return 5;
+ ReturnToConditionMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_CONDITION;
}
}
- return 0;
+ return POKENAV_MENU_FUNC_NONE;
}
-static u32 sub_81C9798(struct Pokenav1Struct *a0)
+static u32 CB2_ReturnToMainMenu(struct Pokenav1Struct *state)
{
- sub_81C97C0(a0);
- return 3;
+ ReturnToMainMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_MAIN;
}
-static u32 sub_81C97A4(struct Pokenav1Struct *a0)
+static u32 CB2_ReturnToConditionMenu(struct Pokenav1Struct *state)
{
- sub_81C97F8(a0);
- return 5;
+ ReturnToConditionMenu(state);
+ return POKENAV_MENU_FUNC_RETURN_TO_CONDITION;
}
-static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1)
+static void sub_81C97B0(struct Pokenav1Struct *state, u32 a1)
{
- a0->unk8 = a1;
- a0->callback = sub_81C97BC;
+ state->unk8 = a1;
+ state->callback = sub_81C97BC;
}
-static u32 sub_81C97BC(struct Pokenav1Struct *a0)
+static u32 sub_81C97BC(struct Pokenav1Struct *state)
{
- return a0->unk8;
+ return state->unk8;
}
-static void sub_81C97C0(struct Pokenav1Struct *a0)
+static void ReturnToMainMenu(struct Pokenav1Struct *state)
{
- a0->menuType = GetPokenavMainMenuType();
- a0->cursorPos = 1;
- a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
- a0->callback = sub_81C943C;
+ state->menuType = GetPokenavMainMenuType();
+ state->cursorPos = 1;
+ state->currMenuItem = sMenuItems[state->menuType][state->cursorPos];
+ state->callback = HandleMainMenuInput;
}
-static void sub_81C97F8(struct Pokenav1Struct *a0)
+static void ReturnToConditionMenu(struct Pokenav1Struct *state)
{
- a0->menuType = 3;
- a0->cursorPos = 1;
- a0->descriptionId = sDescriptionIds[3][1];
- a0->callback = sub_81C963C;
+ state->menuType = POKENAV_MENU_TYPE_CONDITION;
+ state->cursorPos = 1;
+ state->currMenuItem = sMenuItems[POKENAV_MENU_TYPE_CONDITION][1];
+ state->callback = HandleConditionMenuInput;
}
-static bool32 sub_81C9814(struct Pokenav1Struct *a0)
+static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state)
{
if (gMain.newKeys & DPAD_UP)
{
- if (--a0->cursorPos < 0)
- a0->cursorPos = sLastCursorPositions[a0->menuType];
+ if (--state->cursorPos < 0)
+ state->cursorPos = sLastCursorPositions[state->menuType];
- a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
+ state->currMenuItem = sMenuItems[state->menuType][state->cursorPos];
return TRUE;
}
else if (gMain.newKeys & DPAD_DOWN)
{
- a0->cursorPos++;
- if (a0->cursorPos > sLastCursorPositions[a0->menuType])
- a0->cursorPos = 0;
+ state->cursorPos++;
+ if (state->cursorPos > sLastCursorPositions[state->menuType])
+ state->cursorPos = 0;
- a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
+ state->currMenuItem = sMenuItems[state->menuType][state->cursorPos];
return TRUE;
}
else
@@ -441,22 +486,24 @@ static bool32 sub_81C9814(struct Pokenav1Struct *a0)
}
}
-int sub_81C9894(void)
+int GetPokenavMenuType(void)
{
struct Pokenav1Struct *state = GetSubstructPtr(1);
return state->menuType;
}
-int sub_81C98A4(void)
+// Position of cursor relative to number of current menu options
+int GetPokenavCursorPos(void)
{
struct Pokenav1Struct *state = GetSubstructPtr(1);
return state->cursorPos;
}
-int sub_81C98B4(void)
+// ID of menu item the cursor is currently on
+int GetCurrentMenuItemId(void)
{
struct Pokenav1Struct *state = GetSubstructPtr(1);
- return state->descriptionId;
+ return state->currMenuItem;
}
u16 GetHelpBarTextId(void)