From 7cd00468d6f6bbe81dba02761c0b3110596ef0c3 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 12 Jul 2007 13:40:24 +0000 Subject: [PATCH] (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them. --- src/airport_gui.cpp | 2 +- src/dock_gui.cpp | 2 +- src/gui.h | 8 +++++++- src/misc_gui.cpp | 16 +++++++++++----- src/rail_gui.cpp | 2 +- src/road_gui.cpp | 2 +- 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index e663b8ffbd..bdbdcc4013 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -183,7 +183,7 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e) DrawWindowWidgets(w); // strings such as 'Size' and 'Coverage Area' // 'Coverage Area' - DrawStationCoverageAreaText(2, 206, (uint)-1, rad); + DrawStationCoverageAreaText(2, 206, SCT_ALL, rad); break; } diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 2e608af550..ffb8a79757 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -250,7 +250,7 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e) SetTileSelectSize(1, 1); } - DrawStationCoverageAreaText(4, 50, (uint)-1, rad); + DrawStationCoverageAreaText(4, 50, SCT_ALL, rad); break; } diff --git a/src/gui.h b/src/gui.h index cfe9fa5b99..34ba64f5ca 100644 --- a/src/gui.h +++ b/src/gui.h @@ -108,7 +108,13 @@ void ShowPlayerCompany(PlayerID player); void ShowEstimatedCostOrIncome(Money cost, int x, int y); void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y); -void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad); +enum StationCoverageType { + SCT_PASSENGERS_ONLY, + SCT_NON_PASSENGERS_ONLY, + SCT_ALL +}; + +void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad); void CheckRedrawStationCoverage(const Window *w); void ShowSmallMap(); diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 7abe9ac37e..f3b14639cc 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -751,16 +751,22 @@ void GuiShowTooltipsWithArgs(StringID str, uint paramcount, const uint64 params[ static void DrawStationCoverageText(const AcceptedCargo accepts, - int str_x, int str_y, uint mask) + int str_x, int str_y, StationCoverageType sct) { char *b = _userstring; bool first = true; b = InlineString(b, STR_000D_ACCEPTS); - for (CargoID i = 0; i < NUM_CARGO; i++, mask >>= 1) { + for (CargoID i = 0; i < NUM_CARGO; i++) { if (b >= lastof(_userstring) - 5) break; - if (accepts[i] >= 8 && mask & 1) { + switch (sct) { + case SCT_PASSENGERS_ONLY: if (!IsCargoInClass(i, CC_PASSENGERS)) continue; break; + case SCT_NON_PASSENGERS_ONLY: if (IsCargoInClass(i, CC_PASSENGERS)) continue; break; + case SCT_ALL: break; + default: NOT_REACHED(); + } + if (accepts[i] >= 8) { if (first) { first = false; } else { @@ -779,12 +785,12 @@ static void DrawStationCoverageText(const AcceptedCargo accepts, DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144); } -void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) { +void DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad) { TileIndex tile = TileVirtXY(_thd.pos.x, _thd.pos.y); AcceptedCargo accepts; if (tile < MapSize()) { GetAcceptanceAroundTiles(accepts, tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE , rad); - DrawStationCoverageText(accepts, sx, sy, mask); + DrawStationCoverageText(accepts, sx, sy, sct); } } diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index cecebf246f..b595d5c500 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -778,7 +778,7 @@ static void StationBuildWndProc(Window *w, WindowEvent *e) DrawStringCentered(74, 101 + y_offset, STR_3004_PLATFORM_LENGTH, 0); DrawStringCentered(74, 141 + y_offset, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0); - DrawStationCoverageAreaText(2, 166 + y_offset, (uint)-1, rad); + DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad); if (newstations) { uint16 i; diff --git a/src/road_gui.cpp b/src/road_gui.cpp index 405f7a4dcf..43c5e5b80d 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -579,7 +579,7 @@ static void RoadStationPickerWndProc(Window *w, WindowEvent *e) StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, _cur_roadtype, image + 1); DrawStationCoverageAreaText(2, 146, - ((w->window_class == WC_BUS_STATION) ? (1 << CT_PASSENGERS) : ~(1 << CT_PASSENGERS)), + (w->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY, 3); } break;