DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ Cooling()

void Cooling ( )
protected

См. определение в файле FireplaceBase.c строка 1996

1997 {
1998 float temperature = GetTemperature();
1999 float temperatureModifier = 0;
2000
2001 if (IsOpen() && !IsOven())
2003
2004 //should never be true!
2005 if (IsBurning())
2006 {
2007 StopCooling();
2008 return;
2009 }
2010
2011 float target = Math.Max(g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this),10);
2012
2013 if (temperature > target)
2014 {
2015 //set wetness and alter temperature modifier (which will lower temperature increase because of soaking)
2016 float rain = g_Game.GetWeather().GetRain().GetActual();
2017 float combinedWindAndSnowfall = MiscGameplayFunctions.GetCombinedSnowfallWindValue();
2018
2019 if ((rain >= RAIN_EFFECT_LIMIT || combinedWindAndSnowfall >= SNOWFALL_EFFECT_LIMIT) && !IsRoofAbove() && IsOpen() && !IsOven())
2020 {
2021 if (rain > combinedWindAndSnowfall)
2022 {
2024 temperatureModifier = PARAM_TEMPERATURE_DECREASE * rain;
2025 }
2026 else
2027 {
2028 AddWetnessToFireplace(SNOWFALL_WETNESS_INCREASE * combinedWindAndSnowfall);
2029 temperatureModifier = PARAM_TEMPERATURE_DECREASE * combinedWindAndSnowfall;
2030 }
2031 }
2032 else //subtract wetness
2033 {
2035 }
2036
2037 //calculate already obtained wetness (e.g. extinguished by water)
2038 float wetness = GetWet();
2039 temperatureModifier = temperatureModifier + (PARAM_TEMPERATURE_DECREASE * wetness);
2040
2041 // COMBINED temperature decrease
2042 target = g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this);
2043 //FLAT for wetness
2044 float flatWetTarget = GetTemperature() - temperatureModifier;
2045 flatWetTarget = Math.Clamp(flatWetTarget,target,GetTemperatureMax());
2046 SetTemperatureDirect(flatWetTarget);
2047 //INTERPOLATED for regular cooling
2048 SetTemperatureEx(new TemperatureDataInterpolated(target,ETemperatureAccessTypes.ACCESS_FIREPLACE,TIMER_COOLING_UPDATE_INTERVAL,GameConstants.TEMP_COEF_FIREPLACE_COOLING));
2049 m_UTSLFireplace.SetFuelCount(GetFuelCount());
2050 m_UTSLFireplace.UpdateFireplaceTemperature(m_UTSSettings);
2052
2053 //get newly changed temperature
2054 temperature = GetTemperature();
2055
2056 //damage cargo items
2058
2059 //cook with equipment if temperature of equipment is still high
2061 {
2062 float cookEquipTemp = m_CookingEquipment.GetTemperature();
2063
2064 if (cookEquipTemp >= PARAM_COOKING_TEMP_THRESHOLD)
2065 {
2066 //cook
2068 }
2069 }
2070
2071 float cookingItemTemperature;
2072 int i;
2073
2074 // manage cooking on direct cooking slots
2076 {
2077 for (i = 0; i < DIRECT_COOKING_SLOT_COUNT; i++)
2078 {
2079 if (m_DirectCookingSlots[i])
2080 CookOnDirectSlot(m_DirectCookingSlots[i], cookingItemTemperature, temperature);
2081 }
2082 }
2083
2084 // manage smoking slots
2085 if (SmokingSlotsInUse())
2086 {
2087 for (i = 0; i < SMOKING_SLOT_COUNT; i++)
2088 {
2089 if (m_SmokingSlots[i])
2090 SmokeOnSmokingSlot(m_SmokingSlots[i], cookingItemTemperature, temperature);
2091 }
2092 }
2093 }
2094 else
2095 {
2096 StopCooling();
2097 }
2098 }
DayZGame g_Game
Определения DayZGame.c:4074
override bool IsOpen()
Определения FireplaceBase.c:2421
ref UniversalTemperatureSourceSettings m_UTSSettings
Определения FireplaceBase.c:222
bool SmokingSlotsInUse()
Определения FireplaceBase.c:639
bool DirectCookingSlotsInUse()
Определения FireplaceBase.c:627
const int DIRECT_COOKING_SLOT_COUNT
direct cooking slots
Определения FireplaceBase.c:77
const int TIMER_HEATING_UPDATE_INTERVAL
timer constants
Определения FireplaceBase.c:74
const int TIMER_COOLING_UPDATE_INTERVAL
update interval duration of heating process (seconds)
Определения FireplaceBase.c:75
const float PARAM_TEMPERATURE_DECREASE
how much will temperature increase when fireplace is burning (degree Celsius per second)
Определения FireplaceBase.c:46
void StopCooling()
Определения FireplaceBase.c:2100
void BurnItemsInFireplace()
Определения FireplaceBase.c:2192
void CookOnDirectSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2169
void CookWithEquipment()
Определения FireplaceBase.c:2153
const float SNOWFALL_EFFECT_LIMIT
rain level that triggers fireplace to start soaking
Определения FireplaceBase.c:88
const float PARAM_WET_COOLING_DECREASE_COEF
value for calculating wetness loss during heating process
Определения FireplaceBase.c:52
const int SMOKING_SLOT_COUNT
Определения FireplaceBase.c:78
bool IsBurning()
Определения FireplaceBase.c:1639
void SmokeOnSmokingSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2177
const float SNOWFALL_WETNESS_INCREASE
value for calculating of wetness that fireplace gain when raining
Определения FireplaceBase.c:90
ItemBase m_DirectCookingSlots[DIRECT_COOKING_SLOT_COUNT]
Определения FireplaceBase.c:102
ref UniversalTemperatureSourceLambdaFireplace m_UTSLFireplace
Определения FireplaceBase.c:223
ref UniversalTemperatureSource m_UTSource
Определения FireplaceBase.c:221
bool IsOven()
Определения FireplaceBase.c:1669
ItemBase m_CookingEquipment
Определения FireplaceBase.c:101
ItemBase m_SmokingSlots[SMOKING_SLOT_COUNT]
Определения FireplaceBase.c:103
int GetFuelCount()
Returns count of all fuel type items (define in 'm_FuelTypes') attached to fireplace.
Определения FireplaceBase.c:1557
const float RAIN_WETNESS_INCREASE
snowfall level that triggers fireplace to start soaking
Определения FireplaceBase.c:89
const float PARAM_COOKING_TEMP_THRESHOLD
cooking
Определения FireplaceBase.c:72
const float RAIN_EFFECT_LIMIT
Определения FireplaceBase.c:87
void AddWetnessToFireplace(float amount)
Определения FireplaceBase.c:2323
override void CheckForRoofLimited(float timeTresholdMS=3000)
Roof check for entity, limited by time (anti-spam solution)
Определения ItemBase.c:4060
override float GetWet()
Определения ItemBase.c:3717
ETemperatureAccessTypes
Определения TemperatureAccessConstants.c:2
Определения EnMath.c:7
const float TEMP_COEF_FIREPLACE_COOLING
Определения 3_Game/DayZ/constants.c:1005
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.

Перекрестные ссылки AddWetnessToFireplace(), BurnItemsInFireplace(), CheckForRoofLimited(), Math::Clamp(), CookOnDirectSlot(), CookWithEquipment(), DIRECT_COOKING_SLOT_COUNT, DirectCookingSlotsInUse(), g_Game, GetFuelCount(), GetWet(), IsBurning(), FireplaceBase::IsOpen(), IsOven(), m_CookingEquipment, m_DirectCookingSlots, m_SmokingSlots, m_UTSLFireplace, m_UTSource, m_UTSSettings, Math::Max(), PARAM_COOKING_TEMP_THRESHOLD, PARAM_TEMPERATURE_DECREASE, PARAM_WET_COOLING_DECREASE_COEF, RAIN_EFFECT_LIMIT, RAIN_WETNESS_INCREASE, SmokeOnSmokingSlot(), SMOKING_SLOT_COUNT, SmokingSlotsInUse(), SNOWFALL_EFFECT_LIMIT, SNOWFALL_WETNESS_INCREASE, StopCooling(), GameConstants::TEMP_COEF_FIREPLACE_COOLING, TIMER_COOLING_UPDATE_INTERVAL и TIMER_HEATING_UPDATE_INTERVAL.