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

◆ TickState()

void TickState ( )
protected

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

57 {
58 m_TimeElapsed += UPDATE_RATE * 0.001;
59
60 #ifdef DIAG_DEVELOPER
61 bool diagEnabled;
62 float diagTimeInterval;
63 float diagTimeDuration;
64
65 GeyserDebugData geyserDebugData = g_Game.m_GeyserDiagData;
66 if (geyserDebugData)
67 {
68 diagEnabled = geyserDebugData.m_DiagEnabled;
69 diagTimeInterval = geyserDebugData.m_DiagTimeInterval;
70 diagTimeDuration = geyserDebugData.m_DiagTimeDuration;
71 }
72
73 float logInterval = m_RandomizedInterval;
74 if (diagEnabled)
75 {
76 logInterval = diagTimeInterval;
77 }
78
79 #ifdef GEYSER_LOGGING
80 ErrorEx("Geyser state=" + typename.EnumToString(EGeyserState, m_GeyserTrigger.GetGeyserState()) + " | Bits=" + m_GeyserTrigger.GetGeyserState() + " | Interval=" + logInterval + " | Time Elapsed=" + m_TimeElapsed, ErrorExSeverity.INFO);
81 #endif
82 #endif
83
84 if (m_GeyserTrigger.CheckGeyserState(EGeyserState.DORMANT))
85 {
87 {
88 #ifdef ENABLE_LOGGING
89 #ifdef GEYSER_LOGGING
90 #ifndef DIAG_DEVELOPER
91 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + m_RandomizedInterval + " sec");
92 #else
93 if (!diagEnabled)
94 {
95 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + m_RandomizedInterval + " sec");
96 }
97 else
98 {
99 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + diagTimeInterval + " sec");
100 }
101 #endif
102 #endif
103 #endif
104
105 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTION_SOON);
106
107 m_TimeElapsed = 0;
108 }
109 }
110 else if (m_GeyserTrigger.CheckGeyserState(EGeyserState.ERUPTION_SOON))
111 {
112 #ifndef DIAG_DEVELOPER
114 #else
115 if (!diagEnabled && m_TimeElapsed >= m_RandomizedInterval || diagEnabled && m_TimeElapsed >= diagTimeInterval)
116 #endif
117 {
118 #ifdef ENABLE_LOGGING
119 #ifdef GEYSER_LOGGING
120 #ifndef DIAG_DEVELOPER
121 Debug.Log(m_Name + ": ERUPTING_PRIMARY, interval: " + m_RandomizedDuration + " sec");
122 #else
123 if (!diagEnabled)
124 {
125 Debug.Log(m_Name + ": ERUPTING_PRIMARY, interval: " + m_RandomizedDuration + " sec");
126 }
127 else
128 {
129 Debug.Log(m_Name + ": ERUPTING_PRIMARY, interval: " + diagTimeDuration + " sec");
130 }
131 #endif
132 #endif
133 #endif
134
135 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTION_SOON);
136 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_PRIMARY);
137
139
141 m_SecondaryActive = false;
142 m_TimeElapsed = 0;
143 }
144 }
145 else if (m_GeyserTrigger.CheckGeyserState(EGeyserState.ERUPTING_PRIMARY))
146 {
147 #ifndef DIAG_DEVELOPER
149 #else
150 if (!diagEnabled && m_TimeElapsed >= m_RandomizedDuration || diagEnabled && m_TimeElapsed >= diagTimeDuration)
151 #endif
152 {
154
155 #ifdef ENABLE_LOGGING
156 #ifdef GEYSER_LOGGING
157 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + m_RandomizedInterval + " sec");
158 #endif
159 #endif
160
161 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_PRIMARY);
162 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_SECONDARY);
163 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTION_SOON);
164
165 m_TimeElapsed = 0;
166 }
167 #ifndef DIAG_DEVELOPER
168 else if (Math.IsInRange(m_TimeElapsed, ERUPTION_TALL_DELAY, m_RandomizedDuration - ERUPTION_TALL_DURATION)) // Ensure burst do not overlap with state transitions
169 #else
170 else if (!diagEnabled && Math.IsInRange(m_TimeElapsed, ERUPTION_TALL_DELAY, m_RandomizedDuration - ERUPTION_TALL_DURATION) || diagEnabled && Math.IsInRange(m_TimeElapsed, ERUPTION_TALL_DELAY, diagTimeDuration - ERUPTION_TALL_DURATION)) // Ensure burst do not overlap with state transitions
171 #endif
172 {
174 {
175 if (Math.RandomBool()) // 50% chance to start secondary eruption every update
176 {
177 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_SECONDARY);
178
180 m_SecondaryActive = true;
181 }
182 }
183 else if (m_TimeSecondaryElapsed >= 0)
184 {
186
188 {
189 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_SECONDARY);
190 m_SecondaryActive = false;
191 }
193 {
195 }
196 }
197 }
198 }
199 }
string m_Name
Определения 3_Game/DayZ/InventoryItemType.c:34
DayZGame g_Game
Определения DayZGame.c:4074
bool m_SecondaryActive
Определения GeyserArea.c:18
GeyserTrigger m_GeyserTrigger
Определения GeyserArea.c:24
void RandomizeIntervals()
Определения GeyserArea.c:201
int m_TimeElapsed
Определения GeyserArea.c:20
int m_TimeSecondaryElapsed
Определения GeyserArea.c:21
void KillEntitiesInArea()
Определения GeyserArea.c:207
float m_RandomizedInterval
Определения GeyserArea.c:22
const float ERUPTION_TALL_DURATION
Определения GeyserArea.c:15
float m_RandomizedDuration
Определения GeyserArea.c:23
const float ERUPTION_TALL_DELAY
Определения GeyserArea.c:16
const float PRE_ERUPTION_DURATION
Определения GeyserArea.c:14
enum EGeyserState UPDATE_RATE
EGeyserState
Определения GeyserArea.c:4
static void Log(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message with normal prio.
Определения 3_Game/DayZ/tools/Debug.c:183
Определения 3_Game/DayZ/tools/Debug.c:2
Определения EnMath.c:7
ErrorExSeverity
Определения EnDebug.c:62
enum ShapeType ErrorEx
static proto bool IsInRange(float v, float min, float max)
Returns if value is between min and max (inclusive)
static bool RandomBool()
Returns a random bool .
Определения EnMath.c:73

Перекрестные ссылки ErrorEx, ERUPTION_TALL_DELAY, ERUPTION_TALL_DURATION, g_Game, Math::IsInRange(), KillEntitiesInArea(), Debug::Log(), m_GeyserTrigger, m_Name, m_RandomizedDuration, m_RandomizedInterval, m_SecondaryActive, m_TimeElapsed, m_TimeSecondaryElapsed, PRE_ERUPTION_DURATION, Math::RandomBool(), RandomizeIntervals() и UPDATE_RATE.

Используется в InitZoneServer().