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

◆ Cooling()

void Cooling ( )
protected

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

1971 {
1972 float temperature = GetTemperature();
1973 float temperatureModifier = 0;
1974
1975 if (IsOpen() && !IsOven())
1977
1978 //should never be true!
1979 if (IsBurning())
1980 {
1981 StopCooling();
1982 return;
1983 }
1984
1985 //float target = g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this);
1986 float target = 10;
1987
1988 if (temperature > target)
1989 {
1990 //set wetness and alter temperature modifier (which will lower temperature increase because of soaking)
1991 float rain = GetGame().GetWeather().GetRain().GetActual();
1992 float combinedWindAndSnowfall = MiscGameplayFunctions.GetCombinedSnowfallWindValue();
1993
1994 if ((rain >= RAIN_EFFECT_LIMIT || combinedWindAndSnowfall >= SNOWFALL_EFFECT_LIMIT) && !IsRoofAbove() && IsOpen() && !IsOven())
1995 {
1996 if (rain > combinedWindAndSnowfall)
1997 {
1999 temperatureModifier = PARAM_TEMPERATURE_DECREASE * rain;
2000 }
2001 else
2002 {
2003 AddWetnessToFireplace(SNOWFALL_WETNESS_INCREASE * combinedWindAndSnowfall);
2004 temperatureModifier = PARAM_TEMPERATURE_DECREASE * combinedWindAndSnowfall;
2005 }
2006 }
2007 else //subtract wetness
2008 {
2010 }
2011
2012 //calculate already obtained wetness (e.g. extinguished by water)
2013 float wetness = GetWet();
2014 temperatureModifier = temperatureModifier + (PARAM_TEMPERATURE_DECREASE * wetness);
2015
2016 // COMBINED temperature decrease
2017 target = g_Game.GetMission().GetWorldData().GetBaseEnvTemperatureAtObject(this);
2018 //FLAT for wetness
2019 float flatWetTarget = GetTemperature() - temperatureModifier;
2020 flatWetTarget = Math.Clamp(flatWetTarget,target,GetTemperatureMax());
2021 SetTemperatureDirect(flatWetTarget);
2022 //INTERPOLATED for regular cooling
2023 SetTemperatureEx(new TemperatureDataInterpolated(target,ETemperatureAccessTypes.ACCESS_FIREPLACE,TIMER_COOLING_UPDATE_INTERVAL,GameConstants.TEMP_COEF_FIREPLACE_COOLING));
2024 m_UTSLFireplace.SetFuelCount(GetFuelCount());
2025 m_UTSLFireplace.UpdateFireplaceTemperature(m_UTSSettings);
2027
2028 //get newly changed temperature
2029 temperature = GetTemperature();
2030
2031 //damage cargo items
2033
2034 //cook with equipment if temperature of equipment is still high
2036 {
2037 float cookEquipTemp = m_CookingEquipment.GetTemperature();
2038
2039 if (cookEquipTemp >= PARAM_COOKING_TEMP_THRESHOLD)
2040 {
2041 //cook
2043 }
2044 }
2045
2046 float cookingItemTemperature;
2047 int i;
2048
2049 // manage cooking on direct cooking slots
2051 {
2052 for (i = 0; i < DIRECT_COOKING_SLOT_COUNT; i++)
2053 {
2054 if (m_DirectCookingSlots[i])
2055 CookOnDirectSlot(m_DirectCookingSlots[i], cookingItemTemperature, temperature);
2056 }
2057 }
2058
2059 // manage smoking slots
2060 if (SmokingSlotsInUse())
2061 {
2062 for (i = 0; i < SMOKING_SLOT_COUNT; i++)
2063 {
2064 if (m_SmokingSlots[i])
2065 SmokeOnSmokingSlot(m_SmokingSlots[i], cookingItemTemperature, temperature);
2066 }
2067 }
2068 }
2069 else
2070 {
2071 StopCooling();
2072 }
2073 }
DayZGame g_Game
Определения DayZGame.c:3868
override bool IsOpen()
Определения FireplaceBase.c:2396
ref UniversalTemperatureSourceSettings m_UTSSettings
Определения FireplaceBase.c:220
bool SmokingSlotsInUse()
Определения FireplaceBase.c:621
bool DirectCookingSlotsInUse()
Определения FireplaceBase.c:609
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:2075
void BurnItemsInFireplace()
Определения FireplaceBase.c:2167
void CookOnDirectSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2144
void CookWithEquipment()
Определения FireplaceBase.c:2128
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:1619
void SmokeOnSmokingSlot(ItemBase slot_item, float temp_equip, float temp_ext)
Определения FireplaceBase.c:2152
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:1643
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:1537
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:2298
override void CheckForRoofLimited(float timeTresholdMS=3000)
Roof check for entity, limited by time (anti-spam solution)
Определения ItemBase.c:8729
override float GetWet()
Определения ItemBase.c:8374
ETemperatureAccessTypes
Определения TemperatureAccessConstants.c:2
proto native Weather GetWeather()
Returns weather controller object.
Определения constants.c:659
Определения 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
Определения constants.c:942
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(), CGame::GetWeather(), GetWet(), IsBurning(), FireplaceBase::IsOpen(), IsOven(), m_CookingEquipment, m_DirectCookingSlots, m_SmokingSlots, m_UTSLFireplace, m_UTSource, m_UTSSettings, 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.