|
|
@ -1357,18 +1357,21 @@ static void delete_civzone_squad_links(df::building_civzonest* zone)
|
|
|
|
//do not use anything that touches anything other than the pointer value
|
|
|
|
//do not use anything that touches anything other than the pointer value
|
|
|
|
//this means also that if dwarf fortress reuses a memory allocation, we will end up with duplicates
|
|
|
|
//this means also that if dwarf fortress reuses a memory allocation, we will end up with duplicates
|
|
|
|
//this vector is also not sorted by id
|
|
|
|
//this vector is also not sorted by id
|
|
|
|
|
|
|
|
//it also turns out that multiple units eg (solely?) spouses can point to one room
|
|
|
|
static void delete_assigned_unit_links(df::building_civzonest* zone)
|
|
|
|
static void delete_assigned_unit_links(df::building_civzonest* zone)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (zone->assigned_unit_id == -1)
|
|
|
|
//not clear if this is always true
|
|
|
|
return;
|
|
|
|
/*if (zone->assigned_unit_id == -1)
|
|
|
|
|
|
|
|
return;*/
|
|
|
|
df::unit* unit = zone->assigned_unit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (df::unit* unit : world->units.active)
|
|
|
|
|
|
|
|
{
|
|
|
|
for (int i=(int)unit->owned_buildings.size() - 1; i >= 0; i--)
|
|
|
|
for (int i=(int)unit->owned_buildings.size() - 1; i >= 0; i--)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (unit->owned_buildings[i] == zone)
|
|
|
|
if (unit->owned_buildings[i] == zone)
|
|
|
|
unit->owned_buildings.erase(unit->owned_buildings.begin() + i);
|
|
|
|
unit->owned_buildings.erase(unit->owned_buildings.begin() + i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void on_civzone_delete(df::building_civzonest* civzone)
|
|
|
|
static void on_civzone_delete(df::building_civzonest* civzone)
|
|
|
|