Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
outdoorthermometer.c
Go to the documentation of this file.
2{
3 private static float TIME_BETWEEN_UPDATE = 1;
4 private static float LIMIT_FOR_UPDATE_ALL_THERMOMETERS = 100;
5 private static ref array<OutdoorThermometer> m_Thermometers;
6 private static int m_LastCheckIndex;
7 private static float m_TimeToUpdate;
8 //How many thermomethers will be set per update.
9 private static int m_NumUpdate = 1;
10
11 static void Init()
12 {
13 m_Thermometers = new array<OutdoorThermometer>;
14 m_LastCheckIndex = 0;
15 m_TimeToUpdate = 0;
16 }
17
18 static void Cleanup()
19 {
20 m_Thermometers = null;
21 m_LastCheckIndex = 0;
22 }
23
24 static void Add(OutdoorThermometer thermometer)
25 {
26 if (m_Thermometers)
27 {
28 m_Thermometers.Insert(thermometer);
29
30 m_NumUpdate = Math.Ceil((m_Thermometers.Count() * TIME_BETWEEN_UPDATE) / LIMIT_FOR_UPDATE_ALL_THERMOMETERS);
31 }
32 }
33
34 static void Remove(OutdoorThermometer thermometer)
35 {
36 if (m_Thermometers)
37 {
38 m_Thermometers.RemoveItem(thermometer);
39
40 m_NumUpdate = Math.Ceil((m_Thermometers.Count() * TIME_BETWEEN_UPDATE) / LIMIT_FOR_UPDATE_ALL_THERMOMETERS);
41 }
42 }
43
44 static void Update(float timeslice)
45 {
46 int count = m_Thermometers.Count();
47 if (count)
48 {
49 if (m_TimeToUpdate < 0)
50 {
51 for (int i = 0; i < m_NumUpdate; i++)
52 {
53 if (m_LastCheckIndex >= count)
54 m_LastCheckIndex = 0;
55
56 m_Thermometers[m_LastCheckIndex].UpdateTemperature();
57 m_LastCheckIndex++;
58 }
59
60 m_TimeToUpdate = TIME_BETWEEN_UPDATE;
61 }
62 else
63 m_TimeToUpdate -= timeslice;
64 }
65 }
66}
67
68class OutdoorThermometer : House
69{
70 protected float m_MaxValue = 50;
71 protected float m_MinValue = -20;
72
74 {
76
77 GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(LateInit, 250);
78 }
79
81 {
82 OutdoorThermometerManager.Remove(this);
83 }
84
86 {
87 float temperature = g_Game.GetMission().GetWorldData().GetTemperature(this, EEnvironmentTemperatureComponent.ALTITUDE|EEnvironmentTemperatureComponent.OVERCAST|EEnvironmentTemperatureComponent.FOG);
88 float temperature01 = (temperature - m_MinValue) / (m_MaxValue - m_MinValue);
89
90 temperature01 = Math.Clamp(temperature01, 0.0, 1.0);
91
92 SetAnimationPhase("ThermoGauge", temperature01);
93 }
94
95 private void LateInit()
96 {
97 GetGame().RegisterNetworkStaticObject(this);
99 }
100}
101
102class Land_OutsideThermometer : OutdoorThermometer
103{
104 void Land_OutsideThermometer()
105 {
106 m_MinValue = -40.0;
107 m_MaxValue = 50.0;
108 }
109}
110
111class Land_OutsideThermometer_1 : OutdoorThermometer
112{
113 void Land_OutsideThermometer_1()
115 m_MinValue = -30.0;
116 m_MaxValue = 50;
117 }
118}
119
120class Land_OutsideThermometer_2 : OutdoorThermometer
121{
122 void Land_OutsideThermometer_2()
123 {
124 m_MinValue = -35.0;
125 m_MaxValue = 55.0;
126 }
127}
128
129class Land_OutsideThermometer_2_wall : Land_OutsideThermometer_2
130{
131}
Definition enmath.c:7
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3868
proto native CGame GetGame()
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8
void ~OutdoorThermometer()
void UpdateTemperature()
float m_MinValue
class OutdoorThermometerManager m_MaxValue
void OutdoorThermometer()
class PlayerStatBase m_MinValue
T m_MaxValue