Codefix: restore _generating_world and nearest town cache when failing to fund a random town (#13042)

This commit is contained in:
Loïc Guilloux 2024-10-29 19:56:15 +01:00 committed by GitHub
parent 883be19865
commit 9dae626237
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2170,17 +2170,19 @@ std::tuple<CommandCost, Money, TownID> CmdFoundTown(DoCommandFlag flags, TileInd
Town *t;
if (random_location) {
t = CreateRandomTown(20, townnameparts, size, city, layout);
if (t == nullptr) return { CommandCost(STR_ERROR_NO_SPACE_FOR_TOWN), 0, INVALID_TOWN };
} else {
t = new Town(tile);
DoCreateTown(t, tile, townnameparts, size, city, layout, true);
}
new_town = t->index;
UpdateNearestTownForRoadTiles(false);
old_generating_world.Restore();
if (t != nullptr && !text.empty()) {
if (t == nullptr) return { CommandCost(STR_ERROR_NO_SPACE_FOR_TOWN), 0, INVALID_TOWN };
new_town = t->index;
if (!text.empty()) {
t->name = text;
t->UpdateVirtCoord();
}