mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
Pret merge (19th of June, 2025) (#7163)
This commit is contained in:
commit
c7e744d713
|
|
@ -27,6 +27,28 @@ enum {
|
|||
SCROLL_ARROW_DOWN
|
||||
};
|
||||
|
||||
// For ListMenuGet/SetTemplateField
|
||||
enum ListMenuFields
|
||||
{
|
||||
LISTFIELD_MOVECURSORFUNC = 0,
|
||||
LISTFIELD_MOVECURSORFUNC2,
|
||||
LISTFIELD_TOTALITEMS,
|
||||
LISTFIELD_MAXSHOWED,
|
||||
LISTFIELD_WINDOWID,
|
||||
LISTFIELD_HEADERX,
|
||||
LISTFIELD_ITEMX,
|
||||
LISTFIELD_CURSORX,
|
||||
LISTFIELD_UPTEXTY,
|
||||
LISTFIELD_CURSORPAL,
|
||||
LISTFIELD_FILLVALUE,
|
||||
LISTFIELD_CURSORSHADOWPAL,
|
||||
LISTFIELD_LETTERSPACING,
|
||||
LISTFIELD_ITEMVERTICALPADDING,
|
||||
LISTFIELD_SCROLLMULTIPLE,
|
||||
LISTFIELD_FONTID,
|
||||
LISTFIELD_CURSORKIND,
|
||||
};
|
||||
|
||||
struct ListMenu;
|
||||
|
||||
struct ListMenuItem
|
||||
|
|
@ -121,8 +143,8 @@ void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
|
|||
u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
|
||||
void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
|
||||
void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
|
||||
s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field);
|
||||
void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value);
|
||||
s32 ListMenuGetTemplateField(u8 taskId, u8 field);
|
||||
void ListMenuSetTemplateField(u8 taskId, u8 field, s32 value);
|
||||
u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *scrollOffset);
|
||||
u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
|
||||
void RemoveScrollIndicatorArrowPair(u8 taskId);
|
||||
|
|
|
|||
|
|
@ -4595,20 +4595,18 @@ static void AnimPresent(struct Sprite *sprite)
|
|||
|
||||
static void AnimKnockOffOpponentsItem(struct Sprite *sprite)
|
||||
{
|
||||
int zero;
|
||||
sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]);
|
||||
zero = 0;
|
||||
if (sprite->data[0] > 0x7F)
|
||||
{
|
||||
sprite->data[1]++;
|
||||
sprite->data[0] = zero;
|
||||
sprite->data[0] = 0;
|
||||
}
|
||||
|
||||
sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
|
||||
if (moveAlongLinearPath(sprite))
|
||||
{
|
||||
sprite->y2 = zero;
|
||||
sprite->data[0] = zero;
|
||||
sprite->y2 = 0;
|
||||
sprite->data[0] = 0;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
|
@ -4686,13 +4684,11 @@ static void AnimItemSteal(struct Sprite *sprite)
|
|||
|
||||
static void AnimItemSteal_Step3(struct Sprite *sprite)
|
||||
{
|
||||
int zero;
|
||||
sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]);
|
||||
zero = 0;
|
||||
if (sprite->data[0] > 127)
|
||||
{
|
||||
sprite->data[1]++;
|
||||
sprite->data[0] = zero;
|
||||
sprite->data[0] = 0;
|
||||
}
|
||||
|
||||
sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
|
||||
|
|
|
|||
|
|
@ -2062,7 +2062,7 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
|
|||
priority = gTasks[taskId].data[3];
|
||||
subpriority = gTasks[taskId].data[4];
|
||||
|
||||
for (i = 0; i < POKEBALL_COUNT; i++)
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
|
|
|
|||
|
|
@ -1331,7 +1331,7 @@ static void Task_BeginItemSwap(u8 taskId)
|
|||
|
||||
tListPos = gPyramidBagMenuState.scrollPosition + gPyramidBagMenuState.cursorPosition;
|
||||
gPyramidBagMenu->toSwapPos = tListPos;
|
||||
ListMenuSetUnkIndicatorsStructField(tListTaskId, 0x10, 1);
|
||||
ListMenuSetTemplateField(tListTaskId, LISTFIELD_CURSORKIND, CURSOR_INVISIBLE);
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][tListPos], gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
|
||||
FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
|
||||
|
|
|
|||
12
src/berry.c
12
src/berry.c
|
|
@ -2047,15 +2047,9 @@ static u8 GetNumStagesWateredByBerryTreeId(u8 id)
|
|||
return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id));
|
||||
}
|
||||
|
||||
// Berries can be watered at 4 stages of growth. This function is likely meant
|
||||
// to divide the berry yield range equally into quartiles. If you watered the
|
||||
// tree n times, your yield is a random number in the nth quartile.
|
||||
//
|
||||
// However, this function actually skews towards higher berry yields, because
|
||||
// it rounds `extraYield` to the nearest whole number.
|
||||
//
|
||||
// See resulting yields: https://gist.github.com/hondew/2a099dbe54aa91414decdbfaa524327d,
|
||||
// and bug fix: https://gist.github.com/hondew/0f0164e5b9dadfd72d24f30f2c049a0b.
|
||||
// Berries can be watered at 4 stages of growth. The distribution is largely
|
||||
// even but slightly prefers middle berry yields, since it uniformly draws from
|
||||
// a subset of the total yield range.
|
||||
static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
|
||||
{
|
||||
u32 randMin;
|
||||
|
|
|
|||
|
|
@ -1458,7 +1458,7 @@ static void StartItemSwap(u8 taskId)
|
|||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
ListMenuSetUnkIndicatorsStructField(tListTaskId, 16, 1);
|
||||
ListMenuSetTemplateField(tListTaskId, LISTFIELD_CURSORKIND, CURSOR_INVISIBLE);
|
||||
tListPosition = gBagPosition.scrollPosition[gBagPosition.pocket] + gBagPosition.cursorPosition[gBagPosition.pocket];
|
||||
gBagMenu->toSwapPos = tListPosition;
|
||||
CopyItemName(BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, tListPosition), gStringVar1);
|
||||
|
|
|
|||
163
src/list_menu.c
163
src/list_menu.c
|
|
@ -17,29 +17,6 @@
|
|||
// This allows them to have idle animations. Cursors prior to this are simply printed text.
|
||||
#define CURSOR_OBJECT_START CURSOR_RED_OUTLINE
|
||||
|
||||
struct UnkIndicatorsStruct
|
||||
{
|
||||
u8 field_0;
|
||||
u16 *field_4;
|
||||
u16 field_8;
|
||||
u16 field_A;
|
||||
u16 field_C;
|
||||
u16 field_E;
|
||||
u8 field_10;
|
||||
u8 field_11;
|
||||
u8 field_12;
|
||||
u8 field_13;
|
||||
u8 field_14_0:4;
|
||||
u8 field_14_1:4;
|
||||
u8 field_15_0:4;
|
||||
u8 field_15_1:4;
|
||||
u8 field_16_0:3;
|
||||
u8 field_16_1:3;
|
||||
u8 field_16_2:2;
|
||||
u8 field_17_0:6;
|
||||
u8 field_17_1:2;
|
||||
};
|
||||
|
||||
struct ScrollIndicatorPair
|
||||
{
|
||||
u8 field_0;
|
||||
|
|
@ -916,104 +893,104 @@ void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu
|
|||
}
|
||||
|
||||
// unused
|
||||
s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field)
|
||||
s32 ListMenuGetTemplateField(u8 taskId, u8 field)
|
||||
{
|
||||
struct UnkIndicatorsStruct *data = (void *) gTasks[taskId].data;
|
||||
struct ListMenu *data = (void *) gTasks[taskId].data;
|
||||
|
||||
switch (field)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
return (s32)(data->field_4);
|
||||
case 2:
|
||||
return data->field_C;
|
||||
case 3:
|
||||
return data->field_E;
|
||||
case 4:
|
||||
return data->field_10;
|
||||
case 5:
|
||||
return data->field_11;
|
||||
case 6:
|
||||
return data->field_12;
|
||||
case 7:
|
||||
return data->field_13;
|
||||
case 8:
|
||||
return data->field_14_0;
|
||||
case 9:
|
||||
return data->field_14_1;
|
||||
case 10:
|
||||
return data->field_15_0;
|
||||
case 11:
|
||||
return data->field_15_1;
|
||||
case 12:
|
||||
return data->field_16_0;
|
||||
case 13:
|
||||
return data->field_16_1;
|
||||
case 14:
|
||||
return data->field_16_2;
|
||||
case 15:
|
||||
return data->field_17_0;
|
||||
case 16:
|
||||
return data->field_17_1;
|
||||
case LISTFIELD_MOVECURSORFUNC:
|
||||
case LISTFIELD_MOVECURSORFUNC2:
|
||||
return (s32)(data->template.moveCursorFunc);
|
||||
case LISTFIELD_TOTALITEMS:
|
||||
return data->template.totalItems;
|
||||
case LISTFIELD_MAXSHOWED:
|
||||
return data->template.maxShowed;
|
||||
case LISTFIELD_WINDOWID:
|
||||
return data->template.windowId;
|
||||
case LISTFIELD_HEADERX:
|
||||
return data->template.header_X;
|
||||
case LISTFIELD_ITEMX:
|
||||
return data->template.item_X;
|
||||
case LISTFIELD_CURSORX:
|
||||
return data->template.cursor_X;
|
||||
case LISTFIELD_UPTEXTY:
|
||||
return data->template.upText_Y;
|
||||
case LISTFIELD_CURSORPAL:
|
||||
return data->template.cursorPal;
|
||||
case LISTFIELD_FILLVALUE:
|
||||
return data->template.fillValue;
|
||||
case LISTFIELD_CURSORSHADOWPAL:
|
||||
return data->template.cursorShadowPal;
|
||||
case LISTFIELD_LETTERSPACING:
|
||||
return data->template.lettersSpacing;
|
||||
case LISTFIELD_ITEMVERTICALPADDING:
|
||||
return data->template.itemVerticalPadding;
|
||||
case LISTFIELD_SCROLLMULTIPLE:
|
||||
return data->template.scrollMultiple;
|
||||
case LISTFIELD_FONTID:
|
||||
return data->template.fontId;
|
||||
case LISTFIELD_CURSORKIND:
|
||||
return data->template.cursorKind;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value)
|
||||
void ListMenuSetTemplateField(u8 taskId, u8 field, s32 value)
|
||||
{
|
||||
struct UnkIndicatorsStruct *data = (void *) &gTasks[taskId].data;
|
||||
struct ListMenu *data = (void *) &gTasks[taskId].data;
|
||||
|
||||
switch (field)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
data->field_4 = (void *)(value);
|
||||
case LISTFIELD_MOVECURSORFUNC:
|
||||
case LISTFIELD_MOVECURSORFUNC2:
|
||||
data->template.moveCursorFunc = (void *)value;
|
||||
break;
|
||||
case 2:
|
||||
data->field_C = value;
|
||||
case LISTFIELD_TOTALITEMS:
|
||||
data->template.totalItems = value;
|
||||
break;
|
||||
case 3:
|
||||
data->field_E = value;
|
||||
case LISTFIELD_MAXSHOWED:
|
||||
data->template.maxShowed = value;
|
||||
break;
|
||||
case 4:
|
||||
data->field_10 = value;
|
||||
case LISTFIELD_WINDOWID:
|
||||
data->template.windowId = value;
|
||||
break;
|
||||
case 5:
|
||||
data->field_11 = value;
|
||||
case LISTFIELD_HEADERX:
|
||||
data->template.header_X = value;
|
||||
break;
|
||||
case 6:
|
||||
data->field_12 = value;
|
||||
case LISTFIELD_ITEMX:
|
||||
data->template.item_X = value;
|
||||
break;
|
||||
case 7:
|
||||
data->field_13 = value;
|
||||
case LISTFIELD_CURSORX:
|
||||
data->template.cursor_X = value;
|
||||
break;
|
||||
case 8:
|
||||
data->field_14_0 = value;
|
||||
case LISTFIELD_UPTEXTY:
|
||||
data->template.upText_Y = value;
|
||||
break;
|
||||
case 9:
|
||||
data->field_14_1 = value;
|
||||
case LISTFIELD_CURSORPAL:
|
||||
data->template.cursorPal = value;
|
||||
break;
|
||||
case 10:
|
||||
data->field_15_0 = value;
|
||||
case LISTFIELD_FILLVALUE:
|
||||
data->template.fillValue = value;
|
||||
break;
|
||||
case 11:
|
||||
data->field_15_1 = value;
|
||||
case LISTFIELD_CURSORSHADOWPAL:
|
||||
data->template.cursorShadowPal = value;
|
||||
break;
|
||||
case 12:
|
||||
data->field_16_0 = value;
|
||||
case LISTFIELD_LETTERSPACING:
|
||||
data->template.lettersSpacing = value;
|
||||
break;
|
||||
case 13:
|
||||
data->field_16_1 = value;
|
||||
case LISTFIELD_ITEMVERTICALPADDING:
|
||||
data->template.itemVerticalPadding = value;
|
||||
break;
|
||||
case 14:
|
||||
data->field_16_2 = value;
|
||||
case LISTFIELD_SCROLLMULTIPLE:
|
||||
data->template.scrollMultiple = value;
|
||||
break;
|
||||
case 15:
|
||||
data->field_17_0 = value;
|
||||
case LISTFIELD_FONTID:
|
||||
data->template.fontId = value;
|
||||
break;
|
||||
case 16:
|
||||
data->field_17_1 = value;
|
||||
case LISTFIELD_CURSORKIND:
|
||||
data->template.cursorKind = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ static EWRAM_DATA struct {
|
|||
u16 listOffset;
|
||||
u16 listRow;
|
||||
bool8 showContestInfo;
|
||||
} sMoveRelearnerMenuSate = {0};
|
||||
} sMoveRelearnerMenuState = {0};
|
||||
|
||||
EWRAM_DATA u8 gOriginSummaryScreenPage = 0; // indicates summary screen page that the move relearner was opened from (if opened from PSS)
|
||||
|
||||
|
|
@ -404,9 +404,9 @@ void CB2_InitLearnMove(void)
|
|||
InitMoveRelearnerBackgroundLayers();
|
||||
InitMoveRelearnerWindows(gOriginSummaryScreenPage == PSS_PAGE_CONTEST_MOVES);
|
||||
|
||||
sMoveRelearnerMenuSate.listOffset = 0;
|
||||
sMoveRelearnerMenuSate.listRow = 0;
|
||||
sMoveRelearnerMenuSate.showContestInfo = gOriginSummaryScreenPage == PSS_PAGE_CONTEST_MOVES;
|
||||
sMoveRelearnerMenuState.listOffset = 0;
|
||||
sMoveRelearnerMenuState.listRow = 0;
|
||||
sMoveRelearnerMenuState.showContestInfo = gOriginSummaryScreenPage == PSS_PAGE_CONTEST_MOVES;
|
||||
|
||||
CreateLearnableMovesList();
|
||||
|
||||
|
|
@ -414,7 +414,7 @@ void CB2_InitLearnMove(void)
|
|||
LoadSpritePalette(&sMoveRelearnerPalette);
|
||||
CreateUISprites();
|
||||
|
||||
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
|
||||
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuState.listOffset, sMoveRelearnerMenuState.listRow);
|
||||
SetBackdropFromColor(RGB_BLACK);
|
||||
SetMainCallback2(CB2_MoveRelearnerMain);
|
||||
}
|
||||
|
|
@ -432,14 +432,14 @@ static void CB2_InitLearnMoveReturnFromSelectMove(void)
|
|||
SetVBlankCallback(VBlankCB_MoveRelearner);
|
||||
|
||||
InitMoveRelearnerBackgroundLayers();
|
||||
InitMoveRelearnerWindows(sMoveRelearnerMenuSate.showContestInfo);
|
||||
InitMoveRelearnerWindows(sMoveRelearnerMenuState.showContestInfo);
|
||||
CreateLearnableMovesList();
|
||||
|
||||
LoadSpriteSheet(&sMoveRelearnerSpriteSheet);
|
||||
LoadSpritePalette(&sMoveRelearnerPalette);
|
||||
CreateUISprites();
|
||||
|
||||
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
|
||||
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuState.listOffset, sMoveRelearnerMenuState.listRow);
|
||||
SetBackdropFromColor(RGB_BLACK);
|
||||
SetMainCallback2(CB2_MoveRelearnerMain);
|
||||
}
|
||||
|
|
@ -541,11 +541,11 @@ static void DoMoveRelearnerMain(void)
|
|||
}
|
||||
else if (selection == MENU_B_PRESSED || selection == 1)
|
||||
{
|
||||
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
|
||||
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
|
||||
}
|
||||
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
|
||||
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
|
||||
}
|
||||
|
|
@ -570,11 +570,11 @@ static void DoMoveRelearnerMain(void)
|
|||
}
|
||||
else if (selection == MENU_B_PRESSED || selection == 1)
|
||||
{
|
||||
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
|
||||
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
|
||||
}
|
||||
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
|
||||
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
|
||||
}
|
||||
|
|
@ -630,11 +630,11 @@ static void DoMoveRelearnerMain(void)
|
|||
else if (selection == MENU_B_PRESSED || selection == 1)
|
||||
{
|
||||
// What's the point? It gets set to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT, anyway.
|
||||
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
|
||||
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
|
||||
}
|
||||
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
|
||||
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
|
||||
}
|
||||
|
|
@ -646,11 +646,11 @@ static void DoMoveRelearnerMain(void)
|
|||
if (!MoveRelearnerRunTextPrinters())
|
||||
{
|
||||
FillWindowPixelBuffer(RELEARNERWIN_MSG, 0x11);
|
||||
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
|
||||
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
|
||||
}
|
||||
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
|
||||
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
|
||||
{
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
|
||||
}
|
||||
|
|
@ -713,11 +713,11 @@ static void DoMoveRelearnerMain(void)
|
|||
case MENU_STATE_FADE_FROM_SUMMARY_SCREEN:
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
|
||||
sMoveRelearnerStruct->state++;
|
||||
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
|
||||
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
|
||||
{
|
||||
HideHeartSpritesAndShowTeachMoveText(TRUE);
|
||||
}
|
||||
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
|
||||
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
|
||||
{
|
||||
ShowTeachMoveText(TRUE);
|
||||
}
|
||||
|
|
@ -783,7 +783,7 @@ static void DoMoveRelearnerMain(void)
|
|||
static void FreeMoveRelearnerResources(void)
|
||||
{
|
||||
RemoveScrollArrows();
|
||||
DestroyListMenuTask(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
|
||||
DestroyListMenuTask(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuState.listOffset, &sMoveRelearnerMenuState.listRow);
|
||||
FreeAllWindowBuffers();
|
||||
FREE_AND_SET_NULL(sMoveRelearnerStruct);
|
||||
ResetSpriteData();
|
||||
|
|
@ -810,7 +810,7 @@ static void HideHeartSpritesAndShowTeachMoveText(bool8 onlyHideSprites)
|
|||
static void HandleInput(bool8 showContest)
|
||||
{
|
||||
s32 itemId = ListMenu_ProcessInput(sMoveRelearnerStruct->moveListMenuTask);
|
||||
ListMenuGetScrollAndRow(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
|
||||
ListMenuGetScrollAndRow(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuState.listOffset, &sMoveRelearnerMenuState.listRow);
|
||||
|
||||
switch (itemId)
|
||||
{
|
||||
|
|
@ -824,13 +824,13 @@ static void HandleInput(bool8 showContest)
|
|||
{
|
||||
PutWindowTilemap(RELEARNERWIN_DESC_CONTEST);
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
|
||||
sMoveRelearnerMenuSate.showContestInfo = TRUE;
|
||||
sMoveRelearnerMenuState.showContestInfo = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PutWindowTilemap(RELEARNERWIN_DESC_BATTLE);
|
||||
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
|
||||
sMoveRelearnerMenuSate.showContestInfo = FALSE;
|
||||
sMoveRelearnerMenuState.showContestInfo = FALSE;
|
||||
}
|
||||
|
||||
ScheduleBgCopyTilemapToVram(1);
|
||||
|
|
@ -859,7 +859,7 @@ static void HandleInput(bool8 showContest)
|
|||
|
||||
static s32 GetCurrentSelectedMove(void)
|
||||
{
|
||||
return sMoveRelearnerStruct->menuItems[sMoveRelearnerMenuSate.listRow + sMoveRelearnerMenuSate.listOffset].id;
|
||||
return sMoveRelearnerStruct->menuItems[sMoveRelearnerMenuState.listRow + sMoveRelearnerMenuState.listOffset].id;
|
||||
}
|
||||
|
||||
// Theory: This used to make the heart sprites visible again (i.e.
|
||||
|
|
@ -915,7 +915,7 @@ static void AddScrollArrows(void)
|
|||
{
|
||||
gTempScrollArrowTemplate = sMoveListScrollArrowsTemplate;
|
||||
gTempScrollArrowTemplate.fullyDownThreshold = sMoveRelearnerStruct->numMenuChoices - sMoveRelearnerStruct->numToShowAtOnce;
|
||||
sMoveRelearnerStruct->moveListScrollArrowTask = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sMoveRelearnerMenuSate.listOffset);
|
||||
sMoveRelearnerStruct->moveListScrollArrowTask = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sMoveRelearnerMenuState.listOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -960,7 +960,7 @@ void MoveRelearnerShowHideHearts(s32 move)
|
|||
u16 numHearts;
|
||||
u16 i;
|
||||
|
||||
if (!sMoveRelearnerMenuSate.showContestInfo || move == LIST_CANCEL)
|
||||
if (!sMoveRelearnerMenuState.showContestInfo || move == LIST_CANCEL)
|
||||
{
|
||||
for (i = 0; i < 16; i++)
|
||||
gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;
|
||||
|
|
@ -999,7 +999,7 @@ void MoveRelearnerShowHideHearts(s32 move)
|
|||
|
||||
void MoveRelearnerShowHideCategoryIcon(s32 moveId)
|
||||
{
|
||||
if (sMoveRelearnerMenuSate.showContestInfo || moveId == LIST_CANCEL)
|
||||
if (sMoveRelearnerMenuState.showContestInfo || moveId == LIST_CANCEL)
|
||||
{
|
||||
if (sMoveRelearnerStruct->categoryIconSpriteId != 0xFF)
|
||||
DestroySprite(&gSprites[sMoveRelearnerStruct->categoryIconSpriteId]);
|
||||
|
|
|
|||
|
|
@ -1284,7 +1284,7 @@ static void ItemStorage_ExitItemList(u8 taskId)
|
|||
static void ItemStorage_StartItemSwap(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
ListMenuSetUnkIndicatorsStructField(tListTaskId, 16, 1);
|
||||
ListMenuSetTemplateField(tListTaskId, LISTFIELD_CURSORKIND, CURSOR_INVISIBLE);
|
||||
sItemStorageMenu->toSwapPos = gPlayerPCItemPageInfo.itemsAbove + gPlayerPCItemPageInfo.cursorPos;
|
||||
ItemStorage_SetSwapArrow(tListTaskId, 0, 0);
|
||||
ItemStorage_UpdateSwapLinePos(sItemStorageMenu->toSwapPos);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user