diff --git a/include/sact.h b/include/sact.h index be5aed2..9592f2a 100644 --- a/include/sact.h +++ b/include/sact.h @@ -104,6 +104,7 @@ int sact_TRANS_Begin(int type); int sact_TRANS_Update(float rate); int sact_TRANS_End(void); +extern struct text_metrics text_sprite_tm; bool StoatSpriteEngine_SP_SetTextSprite(int sp_no, struct string *text); void StoatSpriteEngine_SP_SetTextSpriteType(int type); void StoatSpriteEngine_SP_SetTextSpriteSize(int size); diff --git a/src/hll/ChipmunkSpriteEngine.c b/src/hll/ChipmunkSpriteEngine.c index ac8d7b0..40fae27 100644 --- a/src/hll/ChipmunkSpriteEngine.c +++ b/src/hll/ChipmunkSpriteEngine.c @@ -14,6 +14,9 @@ * along with this program; if not, see . */ +#include "system4/string.h" +#include "system4/utfsjis.h" + #include "asset_manager.h" #include "input.h" #include "sact.h" @@ -52,7 +55,18 @@ HLL_WARN_UNIMPLEMENTED(keep_previous_view, bool, ChipmunkSpriteEngine, KeepPrevi //static int ChipmunkSpriteEngine_Sprite_GetTextureFilterType(int sp_no); //static bool ChipmunkSpriteEngine_SP_RenderView(int sp_no); //static bool ChipmunkSpriteEngine_SP_GetFontDescent(int *descent); -//static bool ChipmunkSpriteEngine_SP_GetFontWidth(struct string *text, int *width); + +static bool ChipmunkSpriteEngine_SP_GetFontWidth(struct string *text, int *width) +{ + if (!text || !text->size) { + *width = 0; + return true; + } + + *width = SJIS_2BYTE(text->text[0]) ? text_sprite_tm.size : text_sprite_tm.size / 2; + return true; +} + //static bool ChipmunkSpriteEngine_SP_SetAlphaClipperSpriteNumber(int sp_no, int ac_sp_no); //static int ChipmunkSpriteEngine_SP_GetAlphaClipperSpriteNumber(int sp_no); //static int CG_GetFormat(int cg_no); @@ -119,7 +133,7 @@ HLL_LIBRARY(ChipmunkSpriteEngine, HLL_EXPORT(SP_SetTextSpriteEdgeWeight, StoatSpriteEngine_SP_SetTextSpriteEdgeWeight), HLL_EXPORT(SP_SetTextSpriteEdgeColor, StoatSpriteEngine_SP_SetTextSpriteEdgeColor), HLL_TODO_EXPORT(SP_GetFontDescent, ChipmunkSpriteEngine_SP_GetFontDescent), - HLL_TODO_EXPORT(SP_GetFontWidth, ChipmunkSpriteEngine_SP_GetFontWidth), + HLL_EXPORT(SP_GetFontWidth, ChipmunkSpriteEngine_SP_GetFontWidth), HLL_EXPORT(SP_SetDashTextSprite, StoatSpriteEngine_SP_SetDashTextSprite), HLL_TODO_EXPORT(SP_SetAlphaClipperSpriteNumber, ChipmunkSpriteEngine_SP_SetAlphaClipperSpriteNumber), HLL_TODO_EXPORT(SP_GetAlphaClipperSpriteNumber, ChipmunkSpriteEngine_SP_GetAlphaClipperSpriteNumber), diff --git a/src/hll/StoatSpriteEngine.c b/src/hll/StoatSpriteEngine.c index 08ad3e2..1adeb6e 100644 --- a/src/hll/StoatSpriteEngine.c +++ b/src/hll/StoatSpriteEngine.c @@ -56,7 +56,7 @@ HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, SetVolumeMixerSEGroupNum, int HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, SetVolumeMixerBGMGroupNum, int n); HLL_WARN_UNIMPLEMENTED(0, int, StoatSpriteEngine, Sound_GetGroupNumFromDataNum, int n); -static struct text_metrics text_sprite_tm = { +struct text_metrics text_sprite_tm = { .color = { .r = 255, .g = 255, .b = 255, .a = 255 }, .outline_color = { .r = 0, .g = 0, .b = 0, .a = 255 }, .size = 16,