Mercurial > hg > openttd
changeset 4928:9181476e1153 draft
(svn r6908) - Codechange: Modify DrawStringMultiLine() to return the number of pixel lines used, and use it for drawing NewGRF additional text (mart3p)
author | peter1138 <peter1138@openttd.org> |
---|---|
date | Mon, 23 Oct 2006 18:13:24 +0000 |
parents | 29521f1b6ab5 |
children | acd18d8cb136 |
files | gfx.c gfx.h vehicle_gui.c vehicle_gui.h |
diffstat | 4 files changed, 11 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/gfx.c +++ b/gfx.c @@ -500,11 +500,13 @@ } } -void DrawStringMultiLine(int x, int y, StringID str, int maxw) + +uint DrawStringMultiLine(int x, int y, StringID str, int maxw) { char buffer[512]; uint32 tmp; int num, mt; + uint total_height; const char *src; byte c; @@ -514,6 +516,7 @@ num = GB(tmp, 0, 16); mt = GetCharacterHeight(GB(tmp, 16, 16)); + total_height = (num + 1) * mt; src = buffer; @@ -527,7 +530,7 @@ y += mt; if (--num < 0) { _cur_fontsize = FS_NORMAL; - return; + return total_height; } break; } else if (c == ASCII_SETX) {
--- a/gfx.h +++ b/gfx.h @@ -70,7 +70,7 @@ BoundingRect GetStringBoundingBox(const char *str); void LoadStringWidthTable(void); void DrawStringMultiCenter(int x, int y, StringID str, int maxw); -void DrawStringMultiLine(int x, int y, StringID str, int maxw); +uint DrawStringMultiLine(int x, int y, StringID str, int maxw); void DrawDirtyBlocks(void); void SetDirtyBlocks(int left, int top, int right, int bottom); void MarkWholeScreenDirty(void);
--- a/vehicle_gui.c +++ b/vehicle_gui.c @@ -482,13 +482,14 @@ } /* Display additional text from NewGRF in the purchase information window */ -int ShowAdditionalText(int x, int y, int w, EngineID engine) +uint ShowAdditionalText(int x, int y, int w, EngineID engine) { uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL); if (callback == CALLBACK_FAILED) return 0; - DrawStringTruncated(x, y, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback), 16, w); - return 10; + // STR_02BD is used to start the string with {BLACK} + SetDParam(0, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback)); + return DrawStringMultiLine(x, y, STR_02BD, w); }
--- a/vehicle_gui.h +++ b/vehicle_gui.h @@ -50,7 +50,7 @@ void ChangeVehicleViewWindow(const Vehicle *from_v, const Vehicle *to_v); -int ShowAdditionalText(int x, int y, int w, EngineID engine); +uint ShowAdditionalText(int x, int y, int w, EngineID engine); void ShowVehicleListWindow(PlayerID player, StationID station, byte vehicle_type); void ShowVehWithSharedOrders(Vehicle *v, byte vehicle_type);