From ced17a74e848b10f1c3c4b3f3d08e80e4b5dde6c Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 22 Jan 2024 23:22:09 +0000 Subject: [PATCH] Do not update viewport signs when running headlessly --- src/saveload/afterload.cpp | 1 + src/signs.cpp | 2 ++ src/station_cmd.cpp | 2 ++ src/town_cmd.cpp | 2 ++ src/viewport.cpp | 2 +- src/waypoint_cmd.cpp | 1 + 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 20bd183bf1..23c5c6fe6a 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -236,6 +236,7 @@ static inline RailType UpdateRailType(RailType rt, RailType min) */ void UpdateAllVirtCoords() { + if (IsHeadless()) return; UpdateAllStationVirtCoords(); UpdateAllSignVirtCoords(); UpdateAllTownVirtCoords(); diff --git a/src/signs.cpp b/src/signs.cpp index 7e212b1fb3..9fc3dc691e 100644 --- a/src/signs.cpp +++ b/src/signs.cpp @@ -15,6 +15,7 @@ #include "strings_func.h" #include "core/pool_func.hpp" #include "viewport_kdtree.h" +#include "network/network.h" #include "table/strings.h" @@ -45,6 +46,7 @@ Sign::~Sign() */ void Sign::UpdateVirtCoord() { + if (IsHeadless()) return; Point pt = RemapCoords(this->x, this->y, this->z); if (_viewport_sign_kdtree_valid && this->sign.kdtree_valid) _viewport_sign_kdtree.Remove(ViewportSignKdtreeItem::MakeSign(this->index)); diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 2e324ab0e8..ff9f333301 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -508,6 +508,7 @@ void Station::UpdateCargoHistory() */ void Station::UpdateVirtCoord() { + if (IsHeadless()) return; Point pt = RemapCoords2(TileX(this->xy) * TILE_SIZE, TileY(this->xy) * TILE_SIZE); pt.y -= 32 * ZOOM_LVL_BASE; @@ -546,6 +547,7 @@ void Station::MoveSign(TileIndex new_xy) /** Update the virtual coords needed to draw the station sign for all stations. */ void UpdateAllStationVirtCoords() { + if (IsHeadless()) return; for (BaseStation *st : BaseStation::Iterate()) { st->UpdateVirtCoord(); } diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index e70691028d..0478eae99b 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -533,6 +533,7 @@ static bool IsCloseToTown(TileIndex tile, uint dist) /** Resize the sign (label) of the town after it changes population. */ void Town::UpdateVirtCoord() { + if (IsHeadless()) return; this->UpdateLabel(); Point pt = RemapCoords2(TileX(this->xy) * TILE_SIZE, TileY(this->xy) * TILE_SIZE); @@ -550,6 +551,7 @@ void Town::UpdateVirtCoord() /** Update the virtual coords needed to draw the town sign for all towns. */ void UpdateAllTownVirtCoords() { + if (IsHeadless()) return; for (Town *t : Town::Iterate()) { t->UpdateVirtCoord(); } diff --git a/src/viewport.cpp b/src/viewport.cpp index 35c1a9ab5e..325fee79c8 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -5037,7 +5037,7 @@ void RebuildViewportKdtree() /* Reset biggest size sign seen */ _viewport_sign_maxwidth = 0; - if (_network_dedicated) { + if (IsHeadless()) { _viewport_sign_kdtree_valid = false; _viewport_sign_kdtree.Build(nullptr, nullptr); return; diff --git a/src/waypoint_cmd.cpp b/src/waypoint_cmd.cpp index 102197d3b2..1ee75f0728 100644 --- a/src/waypoint_cmd.cpp +++ b/src/waypoint_cmd.cpp @@ -40,6 +40,7 @@ */ void Waypoint::UpdateVirtCoord() { + if (IsHeadless()) return; Point pt = RemapCoords2(TileX(this->xy) * TILE_SIZE, TileY(this->xy) * TILE_SIZE); if (_viewport_sign_kdtree_valid && this->sign.kdtree_valid) _viewport_sign_kdtree.Remove(ViewportSignKdtreeItem::MakeWaypoint(this->index));