Fix auto-signpost textprinter (#8833)

Co-authored-by: Hedara <hedara90@gmail.com>
This commit is contained in:
hedara90 2026-01-09 00:34:44 +01:00 committed by GitHub
parent 7ccac14584
commit c5921cedad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 2 deletions

View File

@ -181,6 +181,7 @@ extern u8 gDisableTextPrinters;
extern struct TextGlyph gCurGlyph;
void DeactivateAllTextPrinters(void);
void DeactivateSingleTextPrinter(u32 id, enum TextPrinterType type);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
u16 AddSpriteTextPrinterParametrerized(u8 spriteId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
void AddSpriteTextPrinterParameterized3(u8 spriteId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);

View File

@ -4398,8 +4398,7 @@ bool32 CheckPartyHasSpecies(u32 givenSpecies)
void UseBlankMessageToCancelPokemonPic(void)
{
u8 t = EOS;
AddTextPrinterParameterized(0, FONT_NORMAL, &t, 0, 1, 0, NULL);
DeactivateSingleTextPrinter(0, WINDOW_TEXT_PRINTER);
ScriptMenu_HidePokemonPic();
}

View File

@ -2743,3 +2743,38 @@ static void FreeFinishedTextPrinters(void)
}
}
}
void DeactivateSingleTextPrinter(u32 id, enum TextPrinterType type)
{
struct TextPrinter *currentPrinter = sFirstTextPrinter;
while (currentPrinter != NULL)
{
switch (type)
{
case WINDOW_TEXT_PRINTER:
if (currentPrinter->printerTemplate.type == WINDOW_TEXT_PRINTER && currentPrinter->printerTemplate.windowId == id)
{
currentPrinter->isInUse = FALSE;
currentPrinter = NULL;
}
else
{
currentPrinter = currentPrinter->nextPrinter;
}
break;
case SPRITE_TEXT_PRINTER:
if (currentPrinter->printerTemplate.type == SPRITE_TEXT_PRINTER && currentPrinter->printerTemplate.spriteId == id)
{
currentPrinter->isInUse = FALSE;
currentPrinter = NULL;
}
else
{
currentPrinter = currentPrinter->nextPrinter;
}
break;
}
}
FreeFinishedTextPrinters();
}