From 00fa5da4f26b8af7166086d8635c39ab4cba62ed Mon Sep 17 00:00:00 2001 From: Rebmiami <59275598+Rebmiami@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:08:58 -0500 Subject: [PATCH] Added PAPR (currently clone of WOOD) --- src/simulation/elements/PAPR.cpp | 81 +++++++++++++++++++++++++++++ src/simulation/elements/meson.build | 1 + 2 files changed, 82 insertions(+) create mode 100644 src/simulation/elements/PAPR.cpp diff --git a/src/simulation/elements/PAPR.cpp b/src/simulation/elements/PAPR.cpp new file mode 100644 index 000000000..b7ef6e17c --- /dev/null +++ b/src/simulation/elements/PAPR.cpp @@ -0,0 +1,81 @@ +#include "simulation/ElementCommon.h" + +static int update(UPDATE_FUNC_ARGS); +static int graphics(GRAPHICS_FUNC_ARGS); + +void Element::Element_PAPR() +{ + Identifier = "DEFAULT_PT_PAPR"; + Name = "PAPR"; + Colour = 0xF3F3CA_rgb; + MenuVisible = 1; + MenuSection = SC_SOLIDS; + Enabled = 1; + + Advection = 0.0f; + AirDrag = 0.00f * CFDS; + AirLoss = 0.90f; + Loss = 0.00f; + Collision = 0.0f; + Gravity = 0.0f; + Diffusion = 0.00f; + HotAir = 0.000f * CFDS; + Falldown = 0; + + Flammable = 20; + Explosive = 0; + Meltable = 0; + Hardness = 15; + + Weight = 100; + + HeatConduct = 164; + Description = "Paper. Flammable, readable, writable."; + + Properties = TYPE_SOLID | PROP_NEUTPENETRATE; + + LowPressure = IPL; + LowPressureTransition = NT; + HighPressure = IPH; + HighPressureTransition = NT; + LowTemperature = ITL; + LowTemperatureTransition = NT; + HighTemperature = 873.0f; + HighTemperatureTransition = PT_FIRE; + + Update = &update; + Graphics = &graphics; +} + +static int update(UPDATE_FUNC_ARGS) +{ + if (parts[i].temp > 450 && parts[i].temp > parts[i].tmp) + parts[i].tmp = (int)parts[i].temp; + + if (parts[i].temp > 773.0f && sim->pv[y/CELL][x/CELL] <= -10.0f) + { + float temp = parts[i].temp; + sim->create_part(i, x, y, PT_BCOL); + parts[i].temp = temp; + } + + return 0; +} + +static int graphics(GRAPHICS_FUNC_ARGS) +{ + float maxtemp = std::max((float)cpart->tmp, cpart->temp); + if (maxtemp > 400) + { + *colr -= (int)restrict_flt((maxtemp-400)/3,0,172); + *colg -= (int)restrict_flt((maxtemp-400)/4,0,140); + *colb -= (int)restrict_flt((maxtemp-400)/20,0,44); + } + if (maxtemp < 273) + { + *colr -= (int)restrict_flt((273-maxtemp)/5,0,40); + *colg += (int)restrict_flt((273-maxtemp)/4,0,40); + *colb += (int)restrict_flt((273-maxtemp)/1.5,0,150); + } + return 0; +} diff --git a/src/simulation/elements/meson.build b/src/simulation/elements/meson.build index 05cc5792f..f8ac7d7cf 100644 --- a/src/simulation/elements/meson.build +++ b/src/simulation/elements/meson.build @@ -191,6 +191,7 @@ simulation_elem_names = [ 'VSNS', 'ROCK', 'LITH', + 'PAPR', ] simulation_elem_src = []