‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
flag_shared.csc
Go to the documentation of this file.
1 #using scripts\shared\util_shared;
2 
3 #insert scripts\shared\shared.gsh;
4 
5 #namespace flag;
6 
17 function ‪init( str_flag, b_val = false, b_is_trigger = false )
18 {
19  ‪DEFAULT( self.flag, [] );
20 
21  /#
22 
23  if ( !isdefined( level.first_frame ) )
24  {
25  Assert( !isdefined( self.flag[ str_flag ] ), "Attempt to reinitialize existing flag '" + str_flag + "' on entity." );
26  }
27 
28  #/
29 
30  self.flag[ str_flag ] = b_val;
31 }
32 
43 function ‪exists( str_flag )
44 {
45  return ( isdefined( self.flag ) && isdefined( self.flag[ str_flag ] ) );
46 }
47 
58 function ‪set( str_flag )
59 {
60 /#
61  Assert( ‪exists( str_flag ), "Attempting to set a flag '" + str_flag + "' that's not initialized." );
62 #/
63 
64  self.flag[ str_flag ] = true;
65  self notify( str_flag );
66 }
67 
80 function ‪delay_set( n_delay, str_flag, str_cancel )
81 {
82  self thread ‪_delay_set( n_delay, str_flag, str_cancel );
83 }
84 
85 function ‪_delay_set( n_delay, str_flag, str_cancel )
86 {
87  if ( isdefined( str_cancel ) )
88  {
89  self endon( str_cancel );
90  }
91 
92  self endon( "death" );
93 
94  wait n_delay;
95 
96  ‪set( str_flag );
97 }
98 
110 function ‪set_for_time( n_time, str_flag )
111 {
112  self notify( "__flag::set_for_time__" + str_flag );
113  self endon( "__flag::set_for_time__" + str_flag );
114 
115  ‪set( str_flag );
116  wait n_time;
117  ‪clear( str_flag );
118 }
119 
130 function ‪clear( str_flag )
131 {
132  Assert( ‪exists( str_flag ), "Attempting to clear a flag '" + str_flag + "' that's not initialized." );
133 
134  if ( self.flag[ str_flag ] )
135  {
136  self.flag[ str_flag ] = false;
137  self notify( str_flag );
138  }
139 }
140 
150 function ‪toggle( str_flag )
151 {
152  if ( ‪get( str_flag ) )
153  {
154  ‪clear( str_flag );
155  }
156  else
157  {
158  ‪set( str_flag );
159  }
160 }
161 
172 function ‪get( str_flag )
173 {
174  Assert( ‪exists( str_flag ), "Tried to get flag '" + str_flag + "' that's not initialized." );
175 
176  return self.flag[ str_flag ];
177 }
178 
189 function ‪wait_till( str_flag )
190 {
191  self endon( "death" );
192 
193  while ( !‪get( str_flag ) )
194  {
195  self waittill( str_flag );
196  }
197 }
198 
199 function ‪wait_till_timeout( n_timeout, str_flag )
200 {
201  ‪TIMEOUT( n_timeout );
202  ‪wait_till( str_flag );
203 }
204 
205 function ‪wait_till_all( a_flags )
206 {
207  self endon( "death" );
208 
209  for ( i = 0; i < a_flags.size; i++ )
210  {
211  str_flag = a_flags[i];
212 
213  if ( !‪get( str_flag ) )
214  {
215  self waittill( str_flag );
216  i = -1;
217  }
218  }
219 }
220 
221 function ‪wait_till_all_timeout( n_timeout, a_flags )
222 {
223  ‪TIMEOUT( n_timeout );
224  ‪wait_till_all( a_flags );
225 }
226 
227 function ‪wait_till_any( a_flags )
228 {
229  self endon( "death" );
230 
231  foreach ( flag in a_flags )
232  {
233  if ( ‪get( flag ) )
234  {
235  return flag;
236  }
237  }
238 
239  ‪util::waittill_any_array( a_flags );
240 }
241 
242 function ‪wait_till_any_timeout( n_timeout, a_flags )
243 {
244  ‪TIMEOUT( n_timeout );
245  ‪wait_till_any( a_flags );
246 }
247 
248 function ‪wait_till_clear( str_flag )
249 {
250  self endon( "death" );
251 
252  while ( ‪get( str_flag ) )
253  {
254  self waittill( str_flag );
255  }
256 }
257 
258 function ‪wait_till_clear_timeout( n_timeout, str_flag )
259 {
260  ‪TIMEOUT( n_timeout );
261  ‪wait_till_clear( str_flag );
262 }
263 
264 function ‪wait_till_clear_all( a_flags )
265 {
266  self endon( "death" );
267 
268  for ( i = 0; i < a_flags.size; i++ )
269  {
270  str_flag = a_flags[i];
271 
272  if ( ‪get( str_flag ) )
273  {
274  self waittill( str_flag );
275  i = -1;
276  }
277  }
278 }
279 
280 function ‪wait_till_clear_all_timeout( n_timeout, a_flags )
281 {
282  ‪TIMEOUT( n_timeout );
283  ‪wait_till_clear_all( a_flags );
284 }
285 
286 function ‪wait_till_clear_any( a_flags )
287 {
288  self endon( "death" );
289 
290  while ( true )
291  {
292  foreach ( flag in a_flags )
293  {
294  if ( !‪get( flag ) )
295  {
296  return flag;
297  }
298  }
299 
300  ‪util::waittill_any_array( a_flags );
301  }
302 }
303 
304 function ‪wait_till_clear_any_timeout( n_timeout, a_flags )
305 {
306  ‪TIMEOUT( n_timeout );
307  ‪wait_till_clear_any( a_flags );
308 }
309 
320 function delete( str_flag )
321 {
322  if ( isdefined( self.flag[ str_flag ] ) )
323  {
324  self.flag[ str_flag ] = undefined;
325  }
326  else
327  {
328  /# PrintLn( "flag_delete() called on flag that does not exist: " + str_flag ); #/
329  }
330 }
‪waittill_any_array
‪function waittill_any_array(a_notifies)
Definition: util_shared.csc:392
‪toggle
‪function toggle(str_flag)
Definition: flag_shared.csc:150
‪clear
‪function clear(str_flag)
Definition: flag_shared.csc:130
‪wait_till_clear_all
‪function wait_till_clear_all(a_flags)
Definition: flag_shared.csc:264
‪wait_till_any
‪function wait_till_any(a_flags)
Definition: flag_shared.csc:227
‪init
‪function init(str_flag, b_val=false, b_is_trigger=false)
Definition: flag_shared.csc:17
‪wait_till_clear_any
‪function wait_till_clear_any(a_flags)
Definition: flag_shared.csc:286
‪set
‪function set(str_flag)
Definition: flag_shared.csc:58
‪wait_till_clear_all_timeout
‪function wait_till_clear_all_timeout(n_timeout, a_flags)
Definition: flag_shared.csc:280
‪delay_set
‪function delay_set(n_delay, str_flag, str_cancel)
Definition: flag_shared.csc:80
‪set_for_time
‪function set_for_time(n_time, str_flag)
Definition: flag_shared.csc:110
‪wait_till_all_timeout
‪function wait_till_all_timeout(n_timeout, a_flags)
Definition: flag_shared.csc:221
‪DEFAULT
‪#define DEFAULT(__var, __default)
Definition: shared.gsh:270
‪get
‪function get(str_flag)
Definition: flag_shared.csc:172
‪TIMEOUT
‪#define TIMEOUT(__t)
Definition: shared.gsh:218
‪wait_till
‪function wait_till(str_flag)
Definition: flag_shared.csc:189
‪wait_till_any_timeout
‪function wait_till_any_timeout(n_timeout, a_flags)
Definition: flag_shared.csc:242
‪exists
‪function exists(str_flag)
Definition: flag_shared.csc:43
‪wait_till_timeout
‪function wait_till_timeout(n_timeout, str_flag)
Definition: flag_shared.csc:199
‪_delay_set
‪function _delay_set(n_delay, str_flag, str_cancel)
Definition: flag_shared.csc:85
‪wait_till_all
‪function wait_till_all(a_flags)
Definition: flag_shared.csc:205
‪wait_till_clear_timeout
‪function wait_till_clear_timeout(n_timeout, str_flag)
Definition: flag_shared.csc:258
‪wait_till_clear_any_timeout
‪function wait_till_clear_any_timeout(n_timeout, a_flags)
Definition: flag_shared.csc:304
‪wait_till_clear
‪function wait_till_clear(str_flag)
Definition: flag_shared.csc:248