diff --git a/src/openttd.cpp b/src/openttd.cpp --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1312,16 +1312,10 @@ bool AfterLoadGame() /* Update all waypoints */ if (CheckSavegameVersion(12)) FixOldWaypoints(); - UpdateAllWaypointSigns(); - /* in version 2.2 of the savegame, we have new airports */ if (CheckSavegameVersionOldStyle(2, 2)) UpdateOldAircraft(); - UpdateAllStationVirtCoord(); - - /* Setup town coords */ AfterLoadTown(); - UpdateAllSignVirtCoords(); /* make sure there is a town in the game */ if (_game_mode == GM_NORMAL && !ClosestTownFromTile(0, (uint)-1)) { @@ -1815,19 +1809,6 @@ bool AfterLoadGame() if (!CheckSavegameVersion(27)) AfterLoadStations(); - { - /* Set up the engine count for all players */ - Player *players[MAX_PLAYERS]; - const Vehicle *v; - - for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) players[i] = GetPlayer(i); - - FOR_ALL_VEHICLES(v) { - if (!IsEngineCountable(v)) continue; - players[v->owner]->num_engines[v->engine_type]++; - } - } - /* Time starts at 0 instead of 1920. * Account for this in older games by adding an offset */ if (CheckSavegameVersion(31)) { @@ -2205,6 +2186,12 @@ bool AfterLoadGame() DoZoomInOutWindow(ZOOM_NONE, w); // update button status MarkWholeScreenDirty(); + /* Update coordinates of the signs. */ + UpdateAllStationVirtCoord(); + UpdateAllSignVirtCoords(); + UpdateAllTownVirtCoords(); + UpdateAllWaypointSigns(); + /* Recalculate */ Group *g; FOR_ALL_GROUPS(g) { @@ -2218,6 +2205,17 @@ bool AfterLoadGame() } } + /* Set up the engine count for all players */ + Player *players[MAX_PLAYERS]; + const Vehicle *v; + + for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) players[i] = GetPlayer(i); + + FOR_ALL_VEHICLES(v) { + if (!IsEngineCountable(v)) continue; + players[v->owner]->num_engines[v->engine_type]++; + } + return true; } diff --git a/src/town.h b/src/town.h --- a/src/town.h +++ b/src/town.h @@ -207,6 +207,7 @@ VARDEF HouseSpec _house_specs[HOUSE_MAX] uint32 GetWorldPopulation(); void UpdateTownVirtCoord(Town *t); +void UpdateAllTownVirtCoords(); void InitializeTown(); void ShowTownViewWindow(TownID town); void ExpandTown(Town *t); diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -311,6 +311,15 @@ void UpdateTownVirtCoord(Town *t) MarkTownSignDirty(t); } +/** Update the virtual coords needed to draw the town sign for all towns. */ +void UpdateAllTownVirtCoords() +{ + Town *t; + FOR_ALL_TOWNS(t) { + UpdateTownVirtCoord(t); + } +} + /** * Change the towns population * @param t Town which polulation has changed @@ -2521,7 +2530,6 @@ void AfterLoadTown() Town *t; FOR_ALL_TOWNS(t) { UpdateTownRadius(t); - UpdateTownVirtCoord(t); } _town_sort_dirty = true; }