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

Method removeWorker

library/modules/Job.cpp:448–479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

446}
447
448bool DFHack::Job::removeWorker(df::job *job, int cooldown)
449{
450 CHECK_NULL_POINTER(job);
451
452 if (job->flags.bits.special)
453 return false;
454
455 auto holder = getHolder(job);
456 if (!holder || linear_index(holder->jobs,job) < 0)
457 return false;
458
459 for (size_t i = 0; i < job->general_refs.size(); i++)
460 {
461 df::general_ref *ref = job->general_refs[i];
462 if (ref->getType() != general_ref_type::UNIT_WORKER)
463 continue;
464
465 auto worker = ref->getUnit();
466 if (!worker || worker->job.current_job != job)
467 return false;
468
469 setJobCooldown(holder, worker, cooldown);
470
471 vector_erase_at(job->general_refs, i);
472 worker->job.current_job = NULL;
473 delete ref;
474
475 return true;
476 }
477
478 return false;
479}
480
481void DFHack::Job::checkBuildingsNow()
482{

Callers

nothing calls this directly

Calls 4

vector_erase_atFunction · 0.85
getTypeMethod · 0.80
linear_indexFunction · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected