|
|
|
@ -49,31 +49,35 @@ using namespace std;
|
|
|
|
|
using namespace DFHack;
|
|
|
|
|
|
|
|
|
|
#include "DataDefs.h"
|
|
|
|
|
#include "df/world.h"
|
|
|
|
|
#include "df/ui.h"
|
|
|
|
|
#include "df/ui_look_list.h"
|
|
|
|
|
#include "df/d_init.h"
|
|
|
|
|
#include "df/item.h"
|
|
|
|
|
#include "df/unit.h"
|
|
|
|
|
#include "df/job.h"
|
|
|
|
|
#include "df/job_item.h"
|
|
|
|
|
#include "df/general_ref_building_holderst.h"
|
|
|
|
|
#include "df/buildings_other_id.h"
|
|
|
|
|
#include "df/building_design.h"
|
|
|
|
|
#include "df/building_def.h"
|
|
|
|
|
#include "df/building_axle_horizontalst.h"
|
|
|
|
|
#include "df/building_trapst.h"
|
|
|
|
|
#include "df/building_bars_floorst.h"
|
|
|
|
|
#include "df/building_bars_verticalst.h"
|
|
|
|
|
#include "df/building_bridgest.h"
|
|
|
|
|
#include "df/building_coffinst.h"
|
|
|
|
|
#include "df/building_civzonest.h"
|
|
|
|
|
#include "df/building_stockpilest.h"
|
|
|
|
|
#include "df/building_coffinst.h"
|
|
|
|
|
#include "df/building_def.h"
|
|
|
|
|
#include "df/building_design.h"
|
|
|
|
|
#include "df/building_floodgatest.h"
|
|
|
|
|
#include "df/building_furnacest.h"
|
|
|
|
|
#include "df/building_workshopst.h"
|
|
|
|
|
#include "df/building_grate_floorst.h"
|
|
|
|
|
#include "df/building_grate_wallst.h"
|
|
|
|
|
#include "df/building_rollersst.h"
|
|
|
|
|
#include "df/building_screw_pumpst.h"
|
|
|
|
|
#include "df/building_stockpilest.h"
|
|
|
|
|
#include "df/building_trapst.h"
|
|
|
|
|
#include "df/building_water_wheelst.h"
|
|
|
|
|
#include "df/building_wellst.h"
|
|
|
|
|
#include "df/building_rollersst.h"
|
|
|
|
|
#include "df/building_floodgatest.h"
|
|
|
|
|
#include "df/building_workshopst.h"
|
|
|
|
|
#include "df/buildings_other_id.h"
|
|
|
|
|
#include "df/d_init.h"
|
|
|
|
|
#include "df/general_ref_building_holderst.h"
|
|
|
|
|
#include "df/item.h"
|
|
|
|
|
#include "df/job.h"
|
|
|
|
|
#include "df/job_item.h"
|
|
|
|
|
#include "df/ui.h"
|
|
|
|
|
#include "df/ui_look_list.h"
|
|
|
|
|
#include "df/unit.h"
|
|
|
|
|
#include "df/world.h"
|
|
|
|
|
|
|
|
|
|
using namespace df::enums;
|
|
|
|
|
using df::global::ui;
|
|
|
|
@ -347,32 +351,58 @@ df::building *Buildings::allocInstance(df::coord pos, df::building_type type, in
|
|
|
|
|
{
|
|
|
|
|
case building_type::Well:
|
|
|
|
|
{
|
|
|
|
|
auto obj = (df::building_wellst*)bld;
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_wellst, bld))
|
|
|
|
|
obj->bucket_z = bld->z;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::Furnace:
|
|
|
|
|
{
|
|
|
|
|
auto obj = (df::building_furnacest*)bld;
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_furnacest, bld))
|
|
|
|
|
obj->melt_remainder.resize(df::inorganic_raw::get_vector().size(), 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::Coffin:
|
|
|
|
|
{
|
|
|
|
|
auto obj = (df::building_coffinst*)bld;
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_coffinst, bld))
|
|
|
|
|
obj->initBurialFlags(); // DF has this copy&pasted
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::Trap:
|
|
|
|
|
{
|
|
|
|
|
auto obj = (df::building_trapst*)bld;
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_trapst, bld))
|
|
|
|
|
{
|
|
|
|
|
if (obj->trap_type == trap_type::PressurePlate)
|
|
|
|
|
obj->ready_timeout = 500;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::Floodgate:
|
|
|
|
|
{
|
|
|
|
|
auto obj = (df::building_floodgatest*)bld;
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_floodgatest, bld))
|
|
|
|
|
obj->gate_flags.bits.closed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::GrateWall:
|
|
|
|
|
{
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_grate_wallst, bld))
|
|
|
|
|
obj->gate_flags.bits.closed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::GrateFloor:
|
|
|
|
|
{
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_grate_floorst, bld))
|
|
|
|
|
obj->gate_flags.bits.closed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::BarsVertical:
|
|
|
|
|
{
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_bars_verticalst, bld))
|
|
|
|
|
obj->gate_flags.bits.closed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case building_type::BarsFloor:
|
|
|
|
|
{
|
|
|
|
|
if (VIRTUAL_CAST_VAR(obj, df::building_bars_floorst, bld))
|
|
|
|
|
obj->gate_flags.bits.closed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|