summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/airport_gui.cpp2
-rw-r--r--src/dock_gui.cpp2
-rw-r--r--src/gui.h8
-rw-r--r--src/misc_gui.cpp16
-rw-r--r--src/rail_gui.cpp2
-rw-r--r--src/road_gui.cpp2
6 files changed, 22 insertions, 10 deletions
diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp
index e663b8ffb..bdbdcc401 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 2e608af55..ffb8a7975 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 cfe9fa5b9..34ba64f5c 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 7abe9ac37..f3b14639c 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 cecebf246..b595d5c50 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 405f7a4dc..43c5e5b80 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;