fix for battle ui for add to party menu (#6229) (#6240)

This commit is contained in:
Zatsu 2025-02-12 21:02:25 +00:00 committed by GitHub
parent 0f0c8325c5
commit 4f3326f3f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 105 additions and 7 deletions

View File

@ -3,6 +3,7 @@
void ReshowBattleScreenDummy(void);
void ReshowBattleScreenAfterMenu(void);
void ReshowBlankBattleScreenAfterMenu(void);
void CreateBattlerSprite(u32 battler);
#endif // GUARD_RESHOW_BATTLE_SCREEN_H

View File

@ -16356,12 +16356,13 @@ static void Cmd_trygivecaughtmonnick(void)
{
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
FreeAllWindowBuffers();
MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2;
DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES),
GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]),
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_PERSONALITY, NULL),
ReshowBattleScreenAfterMenu);
callback);
gBattleCommunication[MULTIUSE_STATE]++;
}

View File

@ -7183,14 +7183,11 @@ static u8 GetPartyLayoutFromBattleType(void)
void OpenPartyMenuInBattle(u8 partyAction)
{
u8 partyMessage;
if (partyAction == PARTY_ACTION_SEND_MON_TO_BOX)
partyMessage = PARTY_MSG_CHOOSE_MON_FOR_BOX;
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, PARTY_MSG_CHOOSE_MON_FOR_BOX, Task_HandleChooseMonInput, ReshowBlankBattleScreenAfterMenu);
else
partyMessage = PARTY_MSG_CHOOSE_MON;
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, partyMessage, Task_HandleChooseMonInput, CB2_SetUpReshowBattleScreenAfterMenu);
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_SetUpReshowBattleScreenAfterMenu);
ReshowBattleScreenDummy();
UpdatePartyToBattleOrder();
}

View File

@ -18,9 +18,11 @@
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
static void CB2_ReshowBlankBattleScreenAfterMenu(void);
static bool8 LoadBattlerSpriteGfx(u32 battler);
static void CreateHealthboxSprite(u32 battler);
static void ClearBattleBgCntBaseBlocks(void);
static void CreateCaughtMonSprite(void);
void ReshowBattleScreenDummy(void)
{
@ -168,6 +170,89 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
gBattleScripting.reshowMainState++;
}
void ReshowBlankBattleScreenAfterMenu(void)
{
gPaletteFade.bufferTransferDisabled = 1;
SetHBlankCallback(NULL);
SetVBlankCallback(NULL);
SetGpuReg(REG_OFFSET_MOSAIC, 0);
gBattleScripting.reshowMainState = 0;
gBattleScripting.reshowHelperState = 0;
SetMainCallback2(CB2_ReshowBlankBattleScreenAfterMenu);
}
static void CB2_ReshowBlankBattleScreenAfterMenu(void)
{
switch (gBattleScripting.reshowMainState)
{
case 0:
ScanlineEffect_Clear();
BattleInitBgsAndWindows();
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
ShowBg(0);
ShowBg(1);
ShowBg(2);
ShowBg(3);
ResetPaletteFade();
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
gBattle_BG3_X = 255;
gBattle_BG3_Y = 0;
break;
case 1:
CpuFastFill(0, (void *)(VRAM), VRAM_SIZE);
break;
case 2:
LoadBattleTextboxAndBackground();
break;
case 3:
ResetSpriteData();
break;
case 4:
FreeAllSpritePalettes();
gReservedSpritePaletteCount = MAX_BATTLERS_COUNT;
break;
case 5:
ClearSpritesHealthboxAnimData();
break;
case 6:
if (!LoadBattlerSpriteGfx(0))
gBattleScripting.reshowMainState--;
break;
case 7:
if (!LoadBattlerSpriteGfx(1))
gBattleScripting.reshowMainState--;
break;
case 8:
if (!LoadBattlerSpriteGfx(2))
gBattleScripting.reshowMainState--;
break;
case 9:
if (!LoadBattlerSpriteGfx(3))
gBattleScripting.reshowMainState--;
break;
case 10:
if (gBattleScripting.monCaught)
CreateCaughtMonSprite(); // displays the caught mon for the switch into party feature
break;
default:
SetVBlankCallback(VBlankCB_Battle);
ClearBattleBgCntBaseBlocks();
BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
gPaletteFade.bufferTransferDisabled = 0;
SetMainCallback2(BattleMainCB2);
FillAroundBattleWindows();
break;
}
gBattleScripting.reshowMainState++;
}
static void ClearBattleBgCntBaseBlocks(void)
{
vBgCnt *regBgcnt1, *regBgcnt2;
@ -311,3 +396,17 @@ static void CreateHealthboxSprite(u32 battler)
}
}
}
static void CreateCaughtMonSprite(void)
{
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget));
gBattlerSpriteIds[gBattlerTarget] = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, GetBattlerSpriteSubpriority(gBattlerTarget));
gSprites[gBattlerSpriteIds[gBattlerTarget]].oam.paletteNum = gBattlerTarget;
gSprites[gBattlerSpriteIds[gBattlerTarget]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[gBattlerTarget]].data[0] = gBattlerTarget;
gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]], 0);
gSprites[gBattlerSpriteIds[gBattlerTarget]].invisible = FALSE;
}