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

Method get_labor

plugins/autolabor/joblabormapper.cpp:290–405  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288{
289public:
290 df::unit_labor get_labor(df::job* j)
291 {
292 if (j->flags.bits.item_lost)
293 return df::unit_labor::NONE;
294
295 df::building* bld = get_building_from_job(j);
296 switch (bld->getType())
297 {
298 case df::building_type::NONE:
299 return df::unit_labor::NONE;
300 case df::building_type::Hive:
301 return df::unit_labor::BEEKEEPING;
302 case df::building_type::Workshop:
303 {
304 df::building_workshopst* ws = (df::building_workshopst*) bld;
305 if (ws->design && !ws->design->flags.bits.designed)
306 return df::unit_labor::ARCHITECT;
307 if (ws->type == df::workshop_type::Custom)
308 {
309 df::building_def* def = df::building_def::find(ws->custom_type);
310 return def->build_labors[0];
311 }
312 else
313 return workshop_build_labor[ws->type];
314 }
315 break;
316 case df::building_type::Furnace:
317 {
318 df::building_furnacest* frn = (df::building_furnacest*) bld;
319 if (frn->design && !frn->design->flags.bits.designed)
320 return df::unit_labor::ARCHITECT;
321 if (frn->type == df::furnace_type::Custom)
322 {
323 df::building_def* def = df::building_def::find(frn->custom_type);
324 return def->build_labors[0];
325 }
326 else
327 // cast to building_actual should be safe here because at this point the building has been designed
328 return construction_build_labor((df::building_actual*)bld);
329 }
330 break;
331 case df::building_type::Construction:
332 return df::unit_labor::BUILD_CONSTRUCTION;
333 case df::building_type::TradeDepot:
334 case df::building_type::Bridge:
335 case df::building_type::ArcheryTarget:
336 case df::building_type::WaterWheel:
337 case df::building_type::RoadPaved:
338 case df::building_type::Well:
339 case df::building_type::ScrewPump:
340 case df::building_type::Wagon:
341 case df::building_type::Shop:
342 case df::building_type::Support:
343 case df::building_type::Windmill:
344 {
345 df::building_actual* b = (df::building_actual*) bld;
346 if (b->design && !b->design->flags.bits.designed)
347 return df::unit_labor::ARCHITECT;

Callers

nothing calls this directly

Calls 7

get_building_from_jobFunction · 0.85
construction_build_laborFunction · 0.85
debugFunction · 0.85
debug_pauseFunction · 0.85
getTypeMethod · 0.80
c_strMethod · 0.80
findFunction · 0.50

Tested by

no test coverage detected