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

◆ Cooling()

void Cooling ( )
protected

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

1979 {
1980 float temperature = GetTemperature();
1981 float temperatureModifier = 0;
1982
1983 if (IsOpen() && !IsOven())
1985
1986 //should never be true!
1987 if (IsBurning())
1988 {
1989 StopCooling();
1990 return;
1991 }
1992
1993 float target = Math.Max(g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this),10);
1994
1995 if (temperature > target)
1996 {
1997 //set wetness and alter temperature modifier (which will lower temperature increase because of soaking)
1998 float rain = GetGame().GetWeather().GetRain().GetActual();
1999 float combinedWindAndSnowfall = MiscGameplayFunctions.GetCombinedSnowfallWindValue();
2000
2001 if ((rain >= RAIN_EFFECT_LIMIT || combinedWindAndSnowfall >= SNOWFALL_EFFECT_LIMIT) && !IsRoofAbove() && IsOpen() && !IsOven())
2002 {
2003 if (rain > combinedWindAndSnowfall)
2004 {
2006 temperatureModifier = PARAM_TEMPERATURE_DECREASE * rain;
2007 }
2008 else
2009 {
2010 AddWetnessToFireplace(SNOWFALL_WETNESS_INCREASE * combinedWindAndSnowfall);
2011 temperatureModifier = PARAM_TEMPERATURE_DECREASE * combinedWindAndSnowfall;
2012 }
2013 }
2014 else //subtract wetness
2015 {
2017 }
2018
2019 //calculate already obtained wetness (e.g. extinguished by water)
2020 float wetness = GetWet();
2021 temperatureModifier = temperatureModifier + (PARAM_TEMPERATURE_DECREASE * wetness);
2022
2023 // COMBINED temperature decrease
2024 target = g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this);
2025 //FLAT for wetness
2026 float flatWetTarget = GetTemperature() - temperatureModifier;
2027 flatWetTarget = Math.Clamp(flatWetTarget,target,GetTemperatureMax());
2028 SetTemperatureDirect(flatWetTarget);
2029 //INTERPOLATED for regular cooling
2030 SetTemperatureEx(new TemperatureDataInterpolated(target,ETemperatureAccessTypes.ACCESS_FIREPLACE,TIMER_COOLING_UPDATE_INTERVAL,GameConstants.TEMP_COEF_FIREPLACE_COOLING));
2031 m_UTSLFireplace.SetFuelCount(GetFuelCount());
2032 m_UTSLFireplace.UpdateFireplaceTemperature(m_UTSSettings);
2034
2035 //get newly changed temperature
2036 temperature = GetTemperature();
2037
2038 //damage cargo items
2040
2041 //cook with equipment if temperature of equipment is still high
2043 {
2044 float cookEquipTemp = m_CookingEquipment.GetTemperature();
2045
2046 if (cookEquipTemp >= PARAM_COOKING_TEMP_THRESHOLD)
2047 {
2048 //cook
2050 }
2051 }
2052
2053 float cookingItemTemperature;
2054 int i;
2055
2056 // manage cooking on direct cooking slots
2058 {
2059 for (i = 0; i < DIRECT_COOKING_SLOT_COUNT; i++)
2060 {
2061 if (m_DirectCookingSlots[i])
2062 CookOnDirectSlot(m_DirectCookingSlots[i], cookingItemTemperature, temperature);
2063 }
2064 }
2065
2066 // manage smoking slots
2067 if (SmokingSlotsInUse())
2068 {
2069 for (i = 0; i < SMOKING_SLOT_COUNT; i++)
2070 {
2071 if (m_SmokingSlots[i])
2072 SmokeOnSmokingSlot(m_SmokingSlots[i], cookingItemTemperature, temperature);
2073 }
2074 }
2075 }
2076 else
2077 {
2078 StopCooling();
2079 }
2080 }
DayZGame g_Game
Определения DayZGame.c:3868
float GetTemperature()
Определения Environment.c:497
override bool IsOpen()
Определения FireplaceBase.c:2403
ref UniversalTemperatureSourceSettings m_UTSSettings
Определения FireplaceBase.c:220
bool SmokingSlotsInUse()
Определения FireplaceBase.c:623
bool DirectCookingSlotsInUse()
Определения FireplaceBase.c:611
const int DIRECT_COOKING_SLOT_COUNT
direct cooking slots
Определения FireplaceBase.c:76
const int TIMER_HEATING_UPDATE_INTERVAL
timer constants
Определения FireplaceBase.c:73
const int TIMER_COOLING_UPDATE_INTERVAL
update interval duration of heating process (seconds)
Определения FireplaceBase.c:74
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:2082
void BurnItemsInFireplace()
Определения FireplaceBase.c:2174
void CookOnDirectSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2151
void CookWithEquipment()
Определения FireplaceBase.c:2135
const float SNOWFALL_EFFECT_LIMIT
rain level that triggers fireplace to start soaking
Определения FireplaceBase.c:87
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:77
bool IsBurning()
Определения FireplaceBase.c:1621
void SmokeOnSmokingSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2159
const float SNOWFALL_WETNESS_INCREASE
value for calculating of wetness that fireplace gain when raining
Определения FireplaceBase.c:89
ItemBase m_DirectCookingSlots[DIRECT_COOKING_SLOT_COUNT]
Определения FireplaceBase.c:101
ref UniversalTemperatureSourceLambdaFireplace m_UTSLFireplace
Определения FireplaceBase.c:221
ref UniversalTemperatureSource m_UTSource
Определения FireplaceBase.c:219
bool IsOven()
Определения FireplaceBase.c:1651
ItemBase m_CookingEquipment
Определения FireplaceBase.c:100
ItemBase m_SmokingSlots[SMOKING_SLOT_COUNT]
Определения FireplaceBase.c:102
int GetFuelCount()
Returns count of all fuel type items (define in 'm_FuelTypes') attached to fireplace.
Определения FireplaceBase.c:1539
const float RAIN_WETNESS_INCREASE
snowfall level that triggers fireplace to start soaking
Определения FireplaceBase.c:88
const float PARAM_COOKING_TEMP_THRESHOLD
cooking
Определения FireplaceBase.c:71
const float RAIN_EFFECT_LIMIT
Определения FireplaceBase.c:86
void AddWetnessToFireplace(float amount)
Определения FireplaceBase.c:2305
override void CheckForRoofLimited(float timeTresholdMS=3000)
Roof check for entity, limited by time (anti-spam solution)
Определения ItemBase.c:8871
override float GetWet()
Определения ItemBase.c:8516
ETemperatureAccessTypes
Определения TemperatureAccessConstants.c:2
proto native Weather GetWeather()
Returns weather controller object.
Определения EnMath.c:7
proto native Rain GetRain()
Returns a rain phenomenon object.
proto native float GetActual()
proto native CGame GetGame()
const float TEMP_COEF_FIREPLACE_COOLING
Определения 3_Game/constants.c:944
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, WeatherPhenomenon::GetActual(), GetFuelCount(), GetGame(), Weather::GetRain(), GetTemperature(), CGame::GetWeather(), 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.