‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
flag_shared.gsc
Go to the documentation of this file.
1 #using scripts\shared\trigger_shared;
2 #using scripts\shared\util_shared;
3 
4 #insert scripts\shared\shared.gsh;
5 
6 #namespace flag;
7 
18 function ‪init( str_flag, b_val = false, b_is_trigger = false )
19 {
20  ‪DEFAULT( self.flag, [] );
21 
22  /#
23 
24  if ( !isdefined( level.first_frame ) )
25  {
26  Assert( !isdefined( self.flag[ str_flag ] ), "Attempt to reinitialize existing flag '" + str_flag + "' on entity." );
27  }
28 
29  #/
30 
31  self.flag[ str_flag ] = b_val;
32 
33  if ( b_is_trigger ) // TODO: this block should probably not be here, instead make sure it's actually needed and maybe move into the "trigger" namespace.
34  {
35  if ( !isdefined( level.trigger_flags ) )
36  {
38  level.trigger_flags[ str_flag ] = [];
39  }
40  else if ( !isdefined( level.trigger_flags[ str_flag ] ) )
41  {
42  level.trigger_flags[ str_flag ] = [];
43  }
44  }
45 }
46 
57 function ‪exists( str_flag )
58 {
59  return ( isdefined( self.flag ) && isdefined( self.flag[ str_flag ] ) );
60 }
61 
72 function ‪set( str_flag )
73 {
74  Assert( ‪exists( str_flag ), "Attempting to set a flag '" + str_flag + "' that's not initialized." );
75 
76  self.flag[ str_flag ] = true;
77  self notify( str_flag );
78 
80 }
81 
94 function ‪delay_set( n_delay, str_flag, str_cancel )
95 {
96  self thread ‪_delay_set( n_delay, str_flag, str_cancel );
97 }
98 
99 function ‪_delay_set( n_delay, str_flag, str_cancel )
100 {
101  if ( isdefined( str_cancel ) )
102  {
103  self endon( str_cancel );
104  }
105 
106  self endon( "death" );
107 
108  wait n_delay;
109 
110  ‪set( str_flag );
111 }
112 function ‪set_val( str_flag, b_val )
124 {
125  Assert( isdefined( b_val ), "value must be specified in flagsys::set_val" );
126 
127  if ( b_val )
128  {
129  ‪set( str_flag );
130  }
131  else
132  {
133  ‪clear( str_flag );
134  }
135 }
136 
137 
149 function ‪set_for_time( n_time, str_flag )
150 {
151  self notify( "__flag::set_for_time__" + str_flag );
152  self endon( "__flag::set_for_time__" + str_flag );
153 
154  ‪set( str_flag );
155  wait n_time;
156  ‪clear( str_flag );
157 }
158 
169 function ‪clear( str_flag )
170 {
171  Assert( ‪exists( str_flag ), "Attempting to clear a flag '" + str_flag + "' that's not initialized." );
172 
173  if ( self.flag[ str_flag ] )
174  {
175  self.flag[ str_flag ] = false;
176  self notify( str_flag );
178  }
179 }
180 
190 function ‪toggle( str_flag )
191 {
192  if ( ‪get( str_flag ) )
193  {
194  ‪clear( str_flag );
195  }
196  else
197  {
198  ‪set( str_flag );
199  }
200 }
201 
212 function ‪get( str_flag )
213 {
214  Assert( ‪exists( str_flag ), "Tried to get flag '" + str_flag + "' that's not initialized." );
215 
216  return self.flag[ str_flag ];
217 }
218 
228 function get_any( &‪array )
229 {
230  foreach ( str_flag in ‪array )
231  {
232  if ( ‪get( str_flag ) )
233  {
234  return true;
235  }
236  }
237 
238  return false;
239 }
240 
251 function ‪wait_till( str_flag )
252 {
253  self endon( "death" );
254 
255  while ( !‪get( str_flag ) )
256  {
257  self waittill( str_flag );
258  }
259 }
260 
261 function ‪wait_till_timeout( n_timeout, str_flag )
262 {
263  ‪TIMEOUT( n_timeout );
264  ‪wait_till( str_flag );
265 }
266 
267 function ‪wait_till_all( a_flags )
268 {
269  self endon( "death" );
270 
271  for ( i = 0; i < a_flags.size; i++ )
272  {
273  str_flag = a_flags[i];
274 
275  if ( !‪get( str_flag ) )
276  {
277  self waittill( str_flag );
278  i = -1;
279  }
280  }
281 }
282 
283 function ‪wait_till_all_timeout( n_timeout, a_flags )
284 {
285  ‪TIMEOUT( n_timeout );
286  ‪wait_till_all( a_flags );
287 }
288 
289 function ‪wait_till_any( a_flags )
290 {
291  self endon( "death" );
292 
293  foreach ( flag in a_flags )
294  {
295  if ( ‪get( flag ) )
296  {
297  return flag;
298  }
299  }
300 
301  ‪util::waittill_any_array( a_flags );
302 }
303 
304 function ‪wait_till_any_timeout( n_timeout, a_flags )
305 {
306  ‪TIMEOUT( n_timeout );
307  ‪wait_till_any( a_flags );
308 }
309 
310 function ‪wait_till_clear( str_flag )
311 {
312  self endon( "death" );
313 
314  while ( ‪get( str_flag ) )
315  {
316  self waittill( str_flag );
317  }
318 }
319 
320 function ‪wait_till_clear_timeout( n_timeout, str_flag )
321 {
322  ‪TIMEOUT( n_timeout );
323  ‪wait_till_clear( str_flag );
324 }
325 
326 function ‪wait_till_clear_all( a_flags )
327 {
328  self endon( "death" );
329 
330  for ( i = 0; i < a_flags.size; i++ )
331  {
332  str_flag = a_flags[i];
333 
334  if ( ‪get( str_flag ) )
335  {
336  self waittill( str_flag );
337  i = -1;
338  }
339  }
340 }
341 
342 function ‪wait_till_clear_all_timeout( n_timeout, a_flags )
343 {
344  ‪TIMEOUT( n_timeout );
345  ‪wait_till_clear_all( a_flags );
346 }
347 
348 function ‪wait_till_clear_any( a_flags )
349 {
350  self endon( "death" );
351 
352  while ( true )
353  {
354  foreach ( flag in a_flags )
355  {
356  if ( !‪get( flag ) )
357  {
358  return flag;
359  }
360  }
361 
362  ‪util::waittill_any_array( a_flags );
363  }
364 }
365 
366 function ‪wait_till_clear_any_timeout( n_timeout, a_flags )
367 {
368  ‪TIMEOUT( n_timeout );
369  ‪wait_till_clear_any( a_flags );
370 }
371 
382 function delete( str_flag )
383 {
384  if ( isdefined( self.flag[ str_flag ] ) )
385  {
386  self.flag[ str_flag ] = undefined;
387  }
388  else
389  {
390  /# PrintLn( "flag_delete() called on flag that does not exist: " + str_flag ); #/
391  }
392 }
393 
395 {
396  if ( isdefined( self.‪script_flag_wait ) )
397  {
398  self ‪wait_till( self.‪script_flag_wait );
399  return true;
400  }
401 
402  return false;
403 }
‪wait_till_clear_timeout
‪function wait_till_clear_timeout(n_timeout, str_flag)
Definition: flag_shared.gsc:320
‪wait_till_clear_any_timeout
‪function wait_till_clear_any_timeout(n_timeout, a_flags)
Definition: flag_shared.gsc:366
‪clear
‪function clear(str_flag)
Definition: flag_shared.gsc:169
‪wait_till_clear
‪function wait_till_clear(str_flag)
Definition: flag_shared.gsc:310
‪wait_till_clear_all
‪function wait_till_clear_all(a_flags)
Definition: flag_shared.gsc:326
‪wait_till_any
‪function wait_till_any(a_flags)
Definition: flag_shared.gsc:289
‪init
‪function init(str_flag, b_val=false, b_is_trigger=false)
Definition: flag_shared.gsc:18
‪waittill_any_array
‪function waittill_any_array(a_notifies)
Definition: util_shared.csc:392
‪wait_till_clear_any
‪function wait_till_clear_any(a_flags)
Definition: flag_shared.gsc:348
‪init_flags
‪function init_flags()
Definition: trigger_shared.gsc:1157
‪set_flag_permissions
‪function set_flag_permissions(msg)
Definition: trigger_shared.gsc:1104
‪wait_till_clear_all_timeout
‪function wait_till_clear_all_timeout(n_timeout, a_flags)
Definition: flag_shared.gsc:342
‪delay_set
‪function delay_set(n_delay, str_flag, str_cancel)
Definition: flag_shared.gsc:94
‪toggle
‪function toggle(str_flag)
Definition: flag_shared.gsc:190
‪DEFAULT
‪#define DEFAULT(__var, __default)
Definition: shared.gsh:270
‪wait_till
‪function wait_till(str_flag)
Definition: flag_shared.gsc:251
‪set
‪function set(str_flag)
Definition: flag_shared.gsc:72
‪script_flag_wait
‪function script_flag_wait()
Definition: flag_shared.gsc:394
‪TIMEOUT
‪#define TIMEOUT(__t)
Definition: shared.gsh:218
‪set_for_time
‪function set_for_time(n_time, str_flag)
Definition: flag_shared.gsc:149
‪wait_till_all_timeout
‪function wait_till_all_timeout(n_timeout, a_flags)
Definition: flag_shared.gsc:283
‪wait_till_any_timeout
‪function wait_till_any_timeout(n_timeout, a_flags)
Definition: flag_shared.gsc:304
‪get
‪function get(str_flag)
Definition: flag_shared.gsc:212
‪array
‪function get_any array
Definition: flag_shared.gsc:229
‪_delay_set
‪function _delay_set(n_delay, str_flag, str_cancel)
Definition: flag_shared.gsc:99
‪set_val
‪function set_val(str_flag, b_val)
Definition: flag_shared.gsc:123
‪exists
‪function exists(str_flag)
Definition: flag_shared.gsc:57
‪wait_till_timeout
‪function wait_till_timeout(n_timeout, str_flag)
Definition: flag_shared.gsc:261
‪wait_till_all
‪function wait_till_all(a_flags)
Definition: flag_shared.gsc:267