From b2de1ff66fadb7787027d3f1ca30c9fdf3641ba0 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 14 Jul 2025 17:25:53 +0100 Subject: [PATCH] Fix #14433: Broken road stop drawing due to incorrect modes conversion. (#14434) The mask was treated as a single RoadStopDrawMode instead of a RoadStopDrawModes bitset. --- src/newgrf/newgrf_act0_roadstops.cpp | 4 ++-- src/newgrf_roadstop.cpp | 2 +- src/station_cmd.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/newgrf/newgrf_act0_roadstops.cpp b/src/newgrf/newgrf_act0_roadstops.cpp index df930ff267..0fc897b565 100644 --- a/src/newgrf/newgrf_act0_roadstops.cpp +++ b/src/newgrf/newgrf_act0_roadstops.cpp @@ -105,8 +105,8 @@ static ChangeInfoResult RoadStopChangeInfo(uint first, uint last, int prop, Byte AddStringForMapping(GRFStringID{buf.ReadWord()}, [rs = rs.get()](StringID str) { RoadStopClass::Get(rs->class_index)->name = str; }); break; - case 0x0C: // The draw mode - rs->draw_mode = static_cast(buf.ReadByte()); + case 0x0C: // The draw modes + rs->draw_mode = static_cast(buf.ReadByte()); break; case 0x0D: // Cargo types for random triggers diff --git a/src/newgrf_roadstop.cpp b/src/newgrf_roadstop.cpp index 02db3fa33d..ad0cc06a8b 100644 --- a/src/newgrf_roadstop.cpp +++ b/src/newgrf_roadstop.cpp @@ -298,7 +298,7 @@ void DrawRoadStopTile(int x, int y, RoadType roadtype, const RoadStopSpec *spec, RoadStopDrawModes draw_mode; if (spec->flags.Test(RoadStopSpecFlag::DrawModeRegister)) { - draw_mode = static_cast(object.GetRegister(0x100)); + draw_mode = static_cast(object.GetRegister(0x100)); } else { draw_mode = spec->draw_mode; } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index a28153602f..2fce47d5d2 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -3331,7 +3331,7 @@ draw_default_foundation: auto result = GetRoadStopLayout(ti, stopspec, st, type, view, regs100); if (result.has_value()) { if (stopspec->flags.Test(RoadStopSpecFlag::DrawModeRegister)) { - stop_draw_mode = static_cast(regs100[0]); + stop_draw_mode = static_cast(regs100[0]); } if (type == StationType::RoadWaypoint && stop_draw_mode.Test(RoadStopDrawMode::WaypGround)) { draw_ground = true;