summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-10-23 18:13:24 +0000
committerpeter1138 <peter1138@openttd.org>2006-10-23 18:13:24 +0000
commit61611711e39630308b0742fb890a2fc240d6ddc7 (patch)
tree16abfe336e37ba9af9b92ca92f778be77e7c68a0
parentba60e4ac3428f20f74e635ea9ac1f729e1aa16a9 (diff)
downloadopenttd-61611711e39630308b0742fb890a2fc240d6ddc7.tar.xz
(svn r6908) - Codechange: Modify DrawStringMultiLine() to return the number of pixel lines used, and use it for drawing NewGRF additional text (mart3p)
-rw-r--r--gfx.c7
-rw-r--r--gfx.h2
-rw-r--r--vehicle_gui.c7
-rw-r--r--vehicle_gui.h2
4 files changed, 11 insertions, 7 deletions
diff --git a/gfx.c b/gfx.c
index d7b66f05d..e54680453 100644
--- a/gfx.c
+++ b/gfx.c
@@ -500,11 +500,13 @@ 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)
{
char buffer[512];
uint32 tmp;
int num, mt;
+ uint total_height;
const char *src;
byte c;
@@ -514,6 +516,7 @@ void DrawStringMultiLine(int x, int y, StringID str, int maxw)
num = GB(tmp, 0, 16);
mt = GetCharacterHeight(GB(tmp, 16, 16));
+ total_height = (num + 1) * mt;
src = buffer;
@@ -527,7 +530,7 @@ void DrawStringMultiLine(int x, int y, StringID str, int maxw)
y += mt;
if (--num < 0) {
_cur_fontsize = FS_NORMAL;
- return;
+ return total_height;
}
break;
} else if (c == ASCII_SETX) {
diff --git a/gfx.h b/gfx.h
index 9c7f91012..0976f4a0e 100644
--- a/gfx.h
+++ b/gfx.h
@@ -70,7 +70,7 @@ void GfxDrawLine(int left, int top, int right, int bottom, int color);
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);
diff --git a/vehicle_gui.c b/vehicle_gui.c
index 9d8faa19a..b1b455b65 100644
--- a/vehicle_gui.c
+++ b/vehicle_gui.c
@@ -482,13 +482,14 @@ void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order)
}
/* 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);
}
diff --git a/vehicle_gui.h b/vehicle_gui.h
index 733a14042..1b23a6399 100644
--- a/vehicle_gui.h
+++ b/vehicle_gui.h
@@ -50,7 +50,7 @@ void ShowBuildVehicleWindow(TileIndex tile, byte type);
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);