MCPcopy Create free account
hub / github.com/DFHack/dfhack / command_result plugin_load_site_data

Function command_result plugin_load_site_data

plugins/buildingplan/buildingplan.cpp:284–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

282}
283
284DFhackCExport command_result plugin_load_site_data (color_ostream &out) {
285 cycle_timestamp = 0;
286 walkability_timestamp = -1;
287 config = World::GetPersistentSiteData(CONFIG_KEY);
288
289 if (!config.isValid()) {
290 DEBUG(control,out).print("no config found in this save; initializing\n");
291 config = World::AddPersistentSiteData(CONFIG_KEY);
292 }
293 if (config.get_int(CONFIG_RECONSTRUCT) == -1)
294 config.set_bool(CONFIG_RECONSTRUCT, true);
295 validate_materials_config(out);
296
297 DEBUG(control,out).print("loading persisted state\n");
298
299 planned_buildings.clear();
300 tasks.clear();
301 reset_filters(out);
302
303 vector<PersistentDataItem> filter_configs;
304 World::GetPersistentSiteData(&filter_configs, FILTER_CONFIG_KEY);
305 for (auto &cfg : filter_configs) {
306 BuildingTypeKey key = DefaultItemFilters::getKey(cfg);
307 cur_item_filters.emplace(key, DefaultItemFilters(out, cfg, get_job_items(out, key)));
308 }
309
310 vector<PersistentDataItem> building_configs;
311 World::GetPersistentSiteData(&building_configs, BLD_CONFIG_KEY);
312 const size_t num_building_configs = building_configs.size();
313 bool unsuspend_on_finalize = !is_suspendmanager_enabled(out);
314 for (size_t idx = 0; idx < num_building_configs; ++idx) {
315 PlannedBuilding pb(out, building_configs[idx]);
316 df::building *bld = df::building::find(pb.id);
317 if (!bld) {
318 DEBUG(control,out).print("building {} no longer exists; skipping\n", pb.id);
319 pb.remove(out);
320 continue;
321 }
322 BuildingTypeKey key(bld->getType(), get_subtype(bld), bld->getCustomType());
323 if (pb.item_filters.size() != get_item_filters(out, key).getItemFilters().size()) {
324 WARN(control).print("loaded state for building {} doesn't match world\n", pb.id);
325 pb.remove(out);
326 continue;
327 }
328 registerPlannedBuilding(out, pb, unsuspend_on_finalize);
329 }
330
331 return CR_OK;
332}
333
334static bool cycle_requested = false;
335

Callers

nothing calls this directly

Calls 14

reset_filtersFunction · 0.85
DefaultItemFiltersClass · 0.85
get_subtypeFunction · 0.85
get_item_filtersFunction · 0.85
registerPlannedBuildingFunction · 0.85
getTypeMethod · 0.80
findFunction · 0.50
isValidMethod · 0.45
printMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected