changeset 13997:fe669c716006 draft

(svn r18539) -Codechange: Re-use cargolist drawing in StationViewWindow::DrawAcceptedCargo()
author alberth <alberth@openttd.org>
date Sat, 19 Dec 2009 16:02:29 +0000
parents 3f141ce0d4ec
children 3d6fd0265851
files src/station_gui.cpp
diffstat 1 files changed, 5 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -996,37 +996,14 @@
 	 */
 	void DrawAcceptedCargo(const Rect &r) const
 	{
-		char string[512];
-		char *b = string;
-		bool first = true;
+		const Station *st = Station::Get(this->window_number);
 
-		b = InlineString(b, STR_STATION_VIEW_ACCEPTS_CARGO);
-
-		const Station *st = Station::Get(this->window_number);
+		uint32 cargo_mask = 0;
 		for (CargoID i = 0; i < NUM_CARGO; i++) {
-			if (b >= lastof(string) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
-			if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) {
-				if (first) {
-					first = false;
-				} else {
-					/* Add a comma if this is not the first item */
-					*b++ = ',';
-					*b++ = ' ';
-				}
-				b = InlineString(b, CargoSpec::Get(i)->name);
-			}
+			if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) SetBit(cargo_mask, i);
 		}
-
-		/* If first is still true then no cargo is accepted */
-		if (first) b = InlineString(b, STR_JUST_NOTHING);
-
-		*b = '\0';
-
-		/* Make sure we detect any buffer overflow */
-		assert(b < endof(string));
-
-		SetDParamStr(0, string);
-		DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, STR_JUST_RAW_STRING);
+		Rect s = {r.left + WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, r.right - WD_FRAMERECT_RIGHT, r.bottom - WD_FRAMERECT_BOTTOM};
+		DrawCargoListText(cargo_mask, s, STR_STATION_VIEW_ACCEPTS_CARGO);
 	}
 
 	/** Draw cargo ratings in the #SVW_ACCEPTLIST widget.