From 675d173266df9261df74915d75e6c16bfb8e58d2 Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Mon, 18 Jan 2016 14:41:57 -0600 Subject: [PATCH] set civzone number when constructing a civzone --- library/modules/Buildings.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 0ceaeb819..58c1a87f9 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -887,6 +887,21 @@ static int getMaxStockpileId() return max_id; } +static int getMaxCivzoneId() +{ + auto &vec = world->buildings.other[buildings_other_id::ANY_ZONE]; + int max_id = 0; + + for (size_t i = 0; i < vec.size(); i++) + { + auto bld = strict_virtual_cast(vec[i]); + if (bld) + max_id = std::max(max_id, bld->zone_num); + } + + return max_id; +} + bool Buildings::constructAbstract(df::building *bld) { CHECK_NULL_POINTER(bld); @@ -903,6 +918,11 @@ bool Buildings::constructAbstract(df::building *bld) stock->stockpile_number = getMaxStockpileId() + 1; break; + case building_type::Civzone: + if (auto zone = strict_virtual_cast(bld)) + zone->zone_num = getMaxCivzoneId() + 1; + break; + default: break; }