MCPcopy Create free account
hub / github.com/DFHack/dfhack / load_engines

Function load_engines

plugins/siege-engine.cpp:450–513  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

448}
449
450static void load_engines()
451{
452 clear_engines();
453
454 std::vector<PersistentDataItem> vec;
455
456 World::GetPersistentData(&vec, "siege-engine/target/", true);
457 for (auto it = vec.begin(); it != vec.end(); ++it)
458 {
459 auto engine = find_engine(df::building::find(it->ival(0)), true);
460 if (!engine) continue;
461 engine->target.first = df::coord(it->ival(1), it->ival(2), it->ival(3));
462 engine->target.second = df::coord(it->ival(4), it->ival(5), it->ival(6));
463 }
464
465 World::GetPersistentData(&vec, "siege-engine/ammo/", true);
466 for (auto it = vec.begin(); it != vec.end(); ++it)
467 {
468 auto engine = find_engine(df::building::find(it->ival(0)), true);
469 if (!engine) continue;
470 engine->ammo_vector_id = (df::job_item_vector_id)it->ival(1);
471 engine->ammo_item_type = (df::item_type)it->ival(2);
472 }
473
474 World::GetPersistentData(&vec, "siege-engine/stockpiles/", true);
475 for (auto it = vec.begin(); it != vec.end(); ++it)
476 {
477 auto engine = find_engine(df::building::find(it->ival(0)), true);
478 if (!engine)
479 continue;
480 auto pile = df::building::find(it->ival(1));
481 if (!pile || pile->getType() != building_type::Stockpile)
482 {
483 World::DeletePersistentData(*it);
484 continue;;
485 }
486
487 engine->stockpiles.insert(it->ival(1));
488 }
489
490 World::GetPersistentData(&vec, "siege-engine/profiles/", true);
491 for (auto it = vec.begin(); it != vec.end(); ++it)
492 {
493 auto engine = find_engine(df::building::find(it->ival(0)), true);
494 if (!engine) continue;
495 engine->profile.min_level = it->ival(1);
496 engine->profile.max_level = it->ival(2);
497 }
498
499 World::GetPersistentData(&vec, "siege-engine/profile-workers/", true);
500 for (auto it = vec.begin(); it != vec.end(); ++it)
501 {
502 auto engine = find_engine(df::building::find(it->ival(0)), true);
503 if (!engine)
504 continue;
505 auto unit = df::unit::find(it->ival(1));
506 if (!unit || !Units::isCitizen(unit))
507 {

Callers 1

enable_hooksFunction · 0.85

Calls 8

clear_enginesFunction · 0.85
find_engineFunction · 0.85
ivalMethod · 0.80
getTypeMethod · 0.80
findFunction · 0.50
beginMethod · 0.45
endMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected