| 288 | { |
| 289 | public: |
| 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; |
nothing calls this directly
no test coverage detected