|
|
|
@ -200,8 +200,6 @@ static df::building* get_building_from_job(df::job* j)
|
|
|
|
|
|
|
|
|
|
static df::unit_labor construction_build_labor(df::building_actual* b)
|
|
|
|
|
{
|
|
|
|
|
if (b->getType() == df::building_type::RoadPaved)
|
|
|
|
|
return df::unit_labor::BUILD_ROAD;
|
|
|
|
|
// Find last item in building with use mode appropriate to the building's constructions state
|
|
|
|
|
// For screw pumps contained_items[0] = pipe, 1 corkscrew, 2 block
|
|
|
|
|
// For wells 0 mechanism, 1 rope, 2 bucket, 3 block
|
|
|
|
@ -313,14 +311,27 @@ public:
|
|
|
|
|
return workshop_build_labor[ws->type];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::Furnace:
|
|
|
|
|
{
|
|
|
|
|
df::building_furnacest* frn = (df::building_furnacest*) bld;
|
|
|
|
|
if (frn->design && !frn->design->flags.bits.designed)
|
|
|
|
|
return df::unit_labor::ARCHITECT;
|
|
|
|
|
if (frn->type == df::furnace_type::Custom)
|
|
|
|
|
{
|
|
|
|
|
df::building_def* def = df::building_def::find(frn->custom_type);
|
|
|
|
|
return def->build_labors[0];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
// cast to building_actual should be safe here because at this point the building has been designed
|
|
|
|
|
return construction_build_labor((df::building_actual*)bld);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::Construction:
|
|
|
|
|
return df::unit_labor::BUILD_CONSTRUCTION;
|
|
|
|
|
case df::building_type::Furnace:
|
|
|
|
|
case df::building_type::TradeDepot:
|
|
|
|
|
case df::building_type::Bridge:
|
|
|
|
|
case df::building_type::ArcheryTarget:
|
|
|
|
|
case df::building_type::WaterWheel:
|
|
|
|
|
case df::building_type::RoadPaved:
|
|
|
|
|
case df::building_type::Well:
|
|
|
|
|
case df::building_type::ScrewPump:
|
|
|
|
|
case df::building_type::Wagon:
|
|
|
|
@ -334,6 +345,8 @@ public:
|
|
|
|
|
return construction_build_labor(b);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::RoadPaved:
|
|
|
|
|
return df::unit_labor::BUILD_ROAD;
|
|
|
|
|
case df::building_type::FarmPlot:
|
|
|
|
|
return df::unit_labor::PLANT;
|
|
|
|
|
case df::building_type::Chair:
|
|
|
|
@ -418,15 +431,26 @@ public:
|
|
|
|
|
return workshop_build_labor[ws->type];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::Furnace:
|
|
|
|
|
{
|
|
|
|
|
df::building_furnacest* frn = (df::building_furnacest*) bld;
|
|
|
|
|
if (frn->type == df::furnace_type::Custom)
|
|
|
|
|
{
|
|
|
|
|
df::building_def* def = df::building_def::find(frn->custom_type);
|
|
|
|
|
return def->build_labors[0];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
// can't destroy a building if doesn't actually exist
|
|
|
|
|
return construction_build_labor((df::building_actual*)bld);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::Construction:
|
|
|
|
|
return df::unit_labor::REMOVE_CONSTRUCTION;
|
|
|
|
|
case df::building_type::Furnace:
|
|
|
|
|
case df::building_type::TradeDepot:
|
|
|
|
|
case df::building_type::Wagon:
|
|
|
|
|
case df::building_type::Bridge:
|
|
|
|
|
case df::building_type::ScrewPump:
|
|
|
|
|
case df::building_type::ArcheryTarget:
|
|
|
|
|
case df::building_type::RoadPaved:
|
|
|
|
|
case df::building_type::Shop:
|
|
|
|
|
case df::building_type::Support:
|
|
|
|
|
case df::building_type::WaterWheel:
|
|
|
|
@ -437,6 +461,8 @@ public:
|
|
|
|
|
return construction_build_labor(b);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case df::building_type::RoadPaved:
|
|
|
|
|
return df::unit_labor::BUILD_ROAD;
|
|
|
|
|
case df::building_type::FarmPlot:
|
|
|
|
|
return df::unit_labor::PLANT;
|
|
|
|
|
case df::building_type::Trap:
|
|
|
|
|