From 0eda6d14e9eabd2e5ac4013ca0b02ad9a43014ea Mon Sep 17 00:00:00 2001 From: Estellar <137097857+estellarc@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:54:19 -0400 Subject: [PATCH] Add TextPrinterCallback (#2306) --- include/menu.h | 6 +++--- include/text.h | 10 ++++++---- src/easy_chat.c | 2 +- src/menu.c | 8 ++++---- src/text.c | 6 +++--- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/include/menu.h b/include/menu.h index f83ae6852c..054c3b4596 100644 --- a/include/menu.h +++ b/include/menu.h @@ -49,7 +49,7 @@ u16 RunTextPrintersAndIsPrinter0Active(void); void LoadMessageBoxAndBorderGfx(void); void DrawDialogueFrame(u8 windowId, bool8 copyToVram); void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram); -u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); +bool16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, TextPrinterCallback callback, u8 fgColor, u8 bgColor, u8 shadowColor); void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram); @@ -57,7 +57,7 @@ void DisplayYesNoMenuDefaultYes(void); u32 GetPlayerTextSpeed(void); u8 GetPlayerTextSpeedDelay(void); void Menu_LoadStdPalAt(u16 offset); -void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)); +void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, TextPrinterCallback callback); void BgDmaFill(u32 bg, u8 value, int offset, int size); void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram); @@ -106,7 +106,7 @@ void BufferSaveMenuText(u8 textId, u8 *dest, u8 color); void RemoveMapNamePopUpWindow(void); u8 GetMapNamePopUpWindowId(void); u8 AddMapNamePopUpWindow(void); -void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); +void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, TextPrinterCallback callback, u8 letterSpacing, u8 lineSpacing); void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); void AddValToTilemapBuffer(void *ptr, int delta, int width, int height, bool32 isAffine); void EraseFieldMessageBox(bool8 copyToVram); diff --git a/include/text.h b/include/text.h index db2415fd6d..26edd7878c 100644 --- a/include/text.h +++ b/include/text.h @@ -78,11 +78,13 @@ struct TextPrinterTemplate u8 shadowColor:4; }; +typedef void (*TextPrinterCallback)(struct TextPrinterTemplate *printerTemplate, u16 renderCmd); + struct TextPrinter { struct TextPrinterTemplate printerTemplate; - void (*callback)(struct TextPrinterTemplate *, u16); // 0x10 + TextPrinterCallback callback; // 0x10 u8 subStructFields[7]; // always cast to struct TextPrinterSubStruct... so why bother u8 active; @@ -132,12 +134,12 @@ struct TextGlyph extern TextFlags gTextFlags; -extern u8 gDisableTextPrinters; +extern bool8 gDisableTextPrinters; extern struct TextGlyph gCurGlyph; void DeactivateAllTextPrinters(void); -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); -bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); +bool16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, TextPrinterCallback callback); +bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, TextPrinterCallback callback); void RunTextPrinters(void); bool16 IsTextPrinterActive(u8 id); void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); diff --git a/src/easy_chat.c b/src/easy_chat.c index 3ec6d34703..2527553451 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -3952,7 +3952,7 @@ static void PrintTitle(void) CopyWindowToVram(WIN_TITLE, COPYWIN_FULL); } -static void PrintEasyChatText(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) +static void PrintEasyChatText(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, TextPrinterCallback callback) { AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback); } diff --git a/src/menu.c b/src/menu.c index 090e4e9e3f..094ccd7aa3 100644 --- a/src/menu.c +++ b/src/menu.c @@ -166,7 +166,7 @@ u16 RunTextPrintersAndIsPrinter0Active(void) return IsTextPrinterActive(0); } -u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor) +bool16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, TextPrinterCallback callback, u8 fgColor, u8 bgColor, u8 shadowColor) { struct TextPrinterTemplate printer; @@ -190,7 +190,7 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress) { - void (*callback)(struct TextPrinterTemplate *, u16) = NULL; + TextPrinterCallback callback = NULL; gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress; AddTextPrinterParameterized2(0, FONT_NORMAL, gStringVar4, GetPlayerTextSpeedDelay(), callback, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); } @@ -539,7 +539,7 @@ void RemoveMapNamePopUpWindow(void) } } -void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)) +void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, TextPrinterCallback callback) { gTextFlags.canABSpeedUpPrint = canSpeedUp; AddTextPrinterParameterized2(0, FONT_NORMAL, gStringVar4, GetPlayerTextSpeedDelay(), callback, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); @@ -1956,7 +1956,7 @@ void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 left, u8 top, u8 le AddTextPrinter(&printer, speed, NULL); } -void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing) +void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, TextPrinterCallback callback, u8 letterSpacing, u8 lineSpacing) { struct TextPrinterTemplate printer; diff --git a/src/text.c b/src/text.c index 261f9666ad..a77c2da706 100644 --- a/src/text.c +++ b/src/text.c @@ -44,7 +44,7 @@ static u16 sLastTextFgColor; static u16 sLastTextShadowColor; COMMON_DATA const struct FontInfo *gFonts = NULL; -COMMON_DATA bool8 gDisableTextPrinters = 0; +COMMON_DATA bool8 gDisableTextPrinters = FALSE; COMMON_DATA struct TextGlyph gCurGlyph = {0}; COMMON_DATA TextFlags gTextFlags = {0}; @@ -248,7 +248,7 @@ void DeactivateAllTextPrinters(void) sTextPrinters[printer].active = FALSE; } -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) +bool16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, TextPrinterCallback callback) { struct TextPrinterTemplate printerTemplate; @@ -268,7 +268,7 @@ u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 return AddTextPrinter(&printerTemplate, speed, callback); } -bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) +bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, TextPrinterCallback callback) { int i; u16 j;