Dayz Explorer 1.29.162510
Loading...
Searching...
No Matches
warmthnotfr.c
Go to the documentation of this file.
1class WarmthNotfr: NotifierBase
2{
3 private const float DEC_TRESHOLD_LOW = -0.01;
4 private const float DEC_TRESHOLD_MED = -0.12;
5 private const float DEC_TRESHOLD_HIGH = -0.25;
6 private const float INC_TRESHOLD_LOW = 0.01;
7 private const float INC_TRESHOLD_MED = 0.12;
8 private const float INC_TRESHOLD_HIGH = 0.25;
9
10 protected ref SimpleMovingAverage<float> m_AverageHeatComfortDeltaBuffer;
11
12 void WarmthNotfr(NotifiersManager manager)
13 {
14 m_AverageHeatComfortDeltaBuffer = new SimpleMovingAverage<float>(6, 0.0);
15 }
16
17 override int GetNotifierType()
18 {
19 return eNotifiers.NTF_WARMTH;
20 }
21
22 protected DSLevelsTemp DetermineLevelEx()
23 {
24 float value = m_Player.GetStatHeatComfort().Get();
25 DSLevelsTemp level = DSLevelsTemp.NORMAL;
26
27 if (value < 0)
28 {
29 if (value < PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_WARNING)
30 level = DSLevelsTemp.WARNING_MINUS;
31 if (value < PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL)
32 level = DSLevelsTemp.CRITICAL_MINUS;
33 if (value <= PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_EMPTY)
34 level = DSLevelsTemp.BLINKING_MINUS;
35 }
36 else
37 {
38 if (value > PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_WARNING)
39 level = DSLevelsTemp.WARNING_PLUS;
40 if (value > PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL)
41 level = DSLevelsTemp.CRITICAL_PLUS;
42 if (value >= PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_EMPTY)
43 level = DSLevelsTemp.BLINKING_PLUS;
44 }
45
46 return level;
47 }
48
49 override void DisplayTendency(float delta)
50 {
51 int tendency = CalculateTendency(
53 INC_TRESHOLD_LOW,
54 INC_TRESHOLD_MED,
55 INC_TRESHOLD_HIGH,
56 DEC_TRESHOLD_LOW,
57 DEC_TRESHOLD_MED,
58 DEC_TRESHOLD_HIGH,
59 );
60
61 DSLevelsTemp level = DetermineLevelEx();
62
63 DisplayElementTendency displayElement = DisplayElementTendency.Cast(GetVirtualHud().GetElement(eDisplayElements.DELM_TDCY_TEMPERATURE));
64
65 if (displayElement)
66 {
67 displayElement.SetTendency(tendency);
68 displayElement.SetSeriousnessLevel(level);
69 }
70 }
71
72 override protected float GetObservedValue()
73 {
74 return m_AverageHeatComfortDeltaBuffer.Add(m_Player.m_Environment.GetTargetHeatComfort() - m_Player.GetStatHeatComfort().Get());
75 }
76
77 [Obsolete("replaced by DetermineLevelEx")]
78 protected DSLevelsTemp DetermineLevel(float value, float m_warning_treshold, float m_critical_treshold, float m_empty_treshold, float p_warning_treshold, float p_critical_treshold, float p_empty_treshold )
79 {
80 DSLevelsTemp level = DSLevelsTemp.NORMAL;
81
82 if (value < 0)
83 {
84 if (value < m_warning_treshold)
85 level = DSLevelsTemp.WARNING_MINUS;
86 if (value < m_critical_treshold)
87 level = DSLevelsTemp.CRITICAL_MINUS;
88 if (value <= m_empty_treshold)
89 level = DSLevelsTemp.BLINKING_MINUS;
90 }
91 else
92 {
93 if (value > p_warning_treshold)
94 level = DSLevelsTemp.WARNING_PLUS;
95 if (value > p_critical_treshold)
96 level = DSLevelsTemp.CRITICAL_PLUS;
97 if (value >= p_empty_treshold)
98 level = DSLevelsTemp.BLINKING_PLUS;
99 }
100
101 return level;
102 }
103}
int CalculateTendency(float delta, float inctresholdlow, float inctresholdmed, float inctresholdhigh, float dectresholdlow, float dectresholdmed, float dectresholdhigh)
ref SimpleMovingAverage< float > m_AverageHeatComfortDeltaBuffer
Definition warmthnotfr.c:10
DSLevelsTemp DetermineLevelEx()
Definition warmthnotfr.c:22
void WarmthNotfr(NotifiersManager manager)
replaces the original delta of values from NotifierBase
Definition warmthnotfr.c:12
DSLevelsTemp DetermineLevel(float value, float m_warning_treshold, float m_critical_treshold, float m_empty_treshold, float p_warning_treshold, float p_critical_treshold, float p_empty_treshold)
Definition warmthnotfr.c:78
float GetObservedValue()
Definition warmthnotfr.c:72
override void DisplayTendency(float delta)
Definition warmthnotfr.c:49
override int GetNotifierType()
Definition warmthnotfr.c:17
DisplayElementBase GetElement(eDisplayElements element_id)
void Obsolete(string msg="")
Definition enscript.c:371
eNotifiers