From be29ee40a18ae341e3d63f496cff448432b825c1 Mon Sep 17 00:00:00 2001 From: alberth Date: Sat, 19 Dec 2009 16:02:29 +0000 Subject: [PATCH] (svn r18539) -Codechange: Re-use cargolist drawing in StationViewWindow::DrawAcceptedCargo() --- src/station_gui.cpp | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/src/station_gui.cpp b/src/station_gui.cpp index 1b991b6866..9d2dfb26a1 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -996,37 +996,14 @@ struct StationViewWindow : public Window { */ void DrawAcceptedCargo(const Rect &r) const { - char string[512]; - char *b = string; - bool first = true; - - 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.