using Content.Server.Temperature.Systems;
namespace Content.Server.Temperature.Components;
///
/// Entity has an internal temperature which conducts heat from its surface.
/// Requires to function.
///
///
/// Currently this is only used for cooking but animal metabolism could use it too.
/// Too hot? Suffering heatstroke, start sweating to cool off and increase thirst.
/// Too cold? Suffering hypothermia, start shivering to warm up and increase hunger.
///
[RegisterComponent, Access(typeof(TemperatureSystem))]
public sealed partial class InternalTemperatureComponent : Component
{
///
/// Internal temperature which is modified by surface temperature.
/// This gets set to on mapinit.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float Temperature;
///
/// Thermal conductivity of the material in W/m/K.
/// Higher conductivity means its insides will heat up faster.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float Conductivity = 0.5f;
///
/// Average thickness between the surface and the inside.
/// For meats and such this is constant.
/// Thicker materials take longer for heat to dissipate.
///
[DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
public float Thickness;
///
/// Surface area in m^2 for the purpose of conducting surface temperature to the inside.
/// Larger surface area means it takes longer to heat up/cool down
///
///
/// For meats etc this should just be the area of the cooked surface not the whole thing as it's only getting heat from one side usually.
///
[DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
public float Area;
}