mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-22 10:15:22 -05:00
97 lines
2.5 KiB
C
97 lines
2.5 KiB
C
#ifndef POKEPLATINUM_RENDER_TEXT_H
|
|
#define POKEPLATINUM_RENDER_TEXT_H
|
|
|
|
#include "bg_window.h"
|
|
#include "charcode.h"
|
|
#include "strbuf.h"
|
|
|
|
#define COLOR_CACHE_OFFSET 100
|
|
#define COLOR_CACHE_RANGE 7
|
|
#define COLOR_CACHE_MAX (COLOR_CACHE_OFFSET + COLOR_CACHE_RANGE)
|
|
#define COLOR_CACHE_IS_VALID(param) (param >= COLOR_CACHE_OFFSET && param < COLOR_CACHE_MAX)
|
|
#define CHAR_CONTROL_SET_COLOR_FROM_CACHE 0xFF
|
|
|
|
typedef struct TextGlyph {
|
|
u8 gfx[128];
|
|
u8 width;
|
|
u8 height;
|
|
} TextGlyph;
|
|
|
|
union StringToPrint {
|
|
const charcode_t *raw;
|
|
const Strbuf *strbuf;
|
|
};
|
|
|
|
typedef struct TextPrinterTemplate {
|
|
union StringToPrint toPrint;
|
|
Window *window;
|
|
u8 dummy08;
|
|
u8 fontID;
|
|
u8 x;
|
|
u8 y;
|
|
u16 currX;
|
|
u16 currY;
|
|
u16 letterSpacing;
|
|
u16 lineSpacing;
|
|
u8 dummy14;
|
|
u8 fgColor;
|
|
u8 bgColor;
|
|
u8 shadowColor;
|
|
u16 glyphTable;
|
|
u8 dummy1A;
|
|
u8 cacheColor;
|
|
} TextPrinterTemplate;
|
|
|
|
typedef BOOL (*TextPrinterCallback)(TextPrinterTemplate *, u16);
|
|
|
|
typedef struct TextPrinterSubstruct {
|
|
u8 fontID : 4;
|
|
u8 speedUp : 1;
|
|
u8 dummy : 3;
|
|
u8 scrollArrowDelay : 5;
|
|
u8 scrollArrowYPosIdx : 2;
|
|
u8 fontIDSet : 1;
|
|
u8 autoScrollDelay : 8;
|
|
} TextPrinterSubstruct;
|
|
|
|
typedef struct TextPrinter {
|
|
TextPrinterTemplate template;
|
|
TextPrinterCallback callback;
|
|
u8 substruct[7];
|
|
u8 active;
|
|
u8 state;
|
|
u8 textSpeedBottom : 7;
|
|
u8 textSpeedTop : 1;
|
|
u8 delayCounter;
|
|
u8 scrollDistance;
|
|
u8 id;
|
|
u8 callbackResult;
|
|
u16 callbackParam;
|
|
void *iconGfx;
|
|
} TextPrinter;
|
|
|
|
enum RenderResult {
|
|
RENDER_PRINT,
|
|
RENDER_FINISH,
|
|
RENDER_REPEAT, // Run render function again, if e.g. a control code is encountered.
|
|
RENDER_UPDATE,
|
|
};
|
|
|
|
enum RenderResult RenderText(TextPrinter *printer);
|
|
void TextPrinter_SetScrollArrowBaseTile(u16 tile);
|
|
void TextPrinter_InitScrollArrowAnim(TextPrinter *printer);
|
|
void TextPrinter_DrawScrollArrow(TextPrinter *printer);
|
|
void TextPrinter_ClearScrollArrow(TextPrinter *printer);
|
|
BOOL TextPrinter_WaitAutoMode(TextPrinter *printer);
|
|
BOOL TextPrinter_WaitWithScrollArrow(TextPrinter *printer);
|
|
BOOL TextPrinter_Wait(TextPrinter *printer);
|
|
void RenderControlFlags_SetCanABSpeedUpPrint(BOOL val);
|
|
void RenderControlFlags_SetAutoScrollFlags(int flags);
|
|
void RenderControlFlags_SetSpeedUpOnTouch(BOOL val);
|
|
u8 RenderControlFlags_GetSpeedUpBattle(void);
|
|
void RenderControlFlags_ZeroSpeedUpBattle(void);
|
|
u8 RenderControlFlags_GetWaitBattle(void);
|
|
void RenderControlFlags_ZeroWaitBattle(void);
|
|
|
|
#endif // POKEPLATINUM_RENDER_TEXT_H
|