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

◆ Cooling()

void Cooling ( )
protected

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

1981 {
1982 float temperature = GetTemperature();
1983 float temperatureModifier = 0;
1984
1985 if (IsOpen() && !IsOven())
1987
1988 //should never be true!
1989 if (IsBurning())
1990 {
1991 StopCooling();
1992 return;
1993 }
1994
1995 float target = Math.Max(g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this),10);
1996
1997 if (temperature > target)
1998 {
1999 //set wetness and alter temperature modifier (which will lower temperature increase because of soaking)
2000 float rain = g_Game.GetWeather().GetRain().GetActual();
2001 float combinedWindAndSnowfall = MiscGameplayFunctions.GetCombinedSnowfallWindValue();
2002
2003 if ((rain >= RAIN_EFFECT_LIMIT || combinedWindAndSnowfall >= SNOWFALL_EFFECT_LIMIT) && !IsRoofAbove() && IsOpen() && !IsOven())
2004 {
2005 if (rain > combinedWindAndSnowfall)
2006 {
2008 temperatureModifier = PARAM_TEMPERATURE_DECREASE * rain;
2009 }
2010 else
2011 {
2012 AddWetnessToFireplace(SNOWFALL_WETNESS_INCREASE * combinedWindAndSnowfall);
2013 temperatureModifier = PARAM_TEMPERATURE_DECREASE * combinedWindAndSnowfall;
2014 }
2015 }
2016 else //subtract wetness
2017 {
2019 }
2020
2021 //calculate already obtained wetness (e.g. extinguished by water)
2022 float wetness = GetWet();
2023 temperatureModifier = temperatureModifier + (PARAM_TEMPERATURE_DECREASE * wetness);
2024
2025 // COMBINED temperature decrease
2026 target = g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this);
2027 //FLAT for wetness
2028 float flatWetTarget = GetTemperature() - temperatureModifier;
2029 flatWetTarget = Math.Clamp(flatWetTarget,target,GetTemperatureMax());
2030 SetTemperatureDirect(flatWetTarget);
2031 //INTERPOLATED for regular cooling
2032 SetTemperatureEx(new TemperatureDataInterpolated(target,ETemperatureAccessTypes.ACCESS_FIREPLACE,TIMER_COOLING_UPDATE_INTERVAL,GameConstants.TEMP_COEF_FIREPLACE_COOLING));
2033 m_UTSLFireplace.SetFuelCount(GetFuelCount());
2034 m_UTSLFireplace.UpdateFireplaceTemperature(m_UTSSettings);
2036
2037 //get newly changed temperature
2038 temperature = GetTemperature();
2039
2040 //damage cargo items
2042
2043 //cook with equipment if temperature of equipment is still high
2045 {
2046 float cookEquipTemp = m_CookingEquipment.GetTemperature();
2047
2048 if (cookEquipTemp >= PARAM_COOKING_TEMP_THRESHOLD)
2049 {
2050 //cook
2052 }
2053 }
2054
2055 float cookingItemTemperature;
2056 int i;
2057
2058 // manage cooking on direct cooking slots
2060 {
2061 for (i = 0; i < DIRECT_COOKING_SLOT_COUNT; i++)
2062 {
2063 if (m_DirectCookingSlots[i])
2064 CookOnDirectSlot(m_DirectCookingSlots[i], cookingItemTemperature, temperature);
2065 }
2066 }
2067
2068 // manage smoking slots
2069 if (SmokingSlotsInUse())
2070 {
2071 for (i = 0; i < SMOKING_SLOT_COUNT; i++)
2072 {
2073 if (m_SmokingSlots[i])
2074 SmokeOnSmokingSlot(m_SmokingSlots[i], cookingItemTemperature, temperature);
2075 }
2076 }
2077 }
2078 else
2079 {
2080 StopCooling();
2081 }
2082 }
DayZGame g_Game
Определения DayZGame.c:3942
float GetTemperature()
Определения Environment.c:500
override bool IsOpen()
Определения FireplaceBase.c:2405
ref UniversalTemperatureSourceSettings m_UTSSettings
Определения FireplaceBase.c:221
bool SmokingSlotsInUse()
Определения FireplaceBase.c:625
bool DirectCookingSlotsInUse()
Определения FireplaceBase.c:613
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:2084
void BurnItemsInFireplace()
Определения FireplaceBase.c:2176
void CookOnDirectSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2153
void CookWithEquipment()
Определения FireplaceBase.c:2137
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:1623
void SmokeOnSmokingSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2161
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:222
ref UniversalTemperatureSource m_UTSource
Определения FireplaceBase.c:220
bool IsOven()
Определения FireplaceBase.c:1653
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:1541
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:2307
override void CheckForRoofLimited(float timeTresholdMS=3000)
Roof check for entity, limited by time (anti-spam solution)
Определения ItemBase.c:8971
override float GetWet()
Определения ItemBase.c:8621
ETemperatureAccessTypes
Определения TemperatureAccessConstants.c:2
Определения EnMath.c:7
const float TEMP_COEF_FIREPLACE_COOLING
Определения 3_Game/DayZ/constants.c:947
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(), GetTemperature(), 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.