‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
flagsys_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 flagsys;
6 
7 /*
8  * flagsys treats undefined flags as "cleared" and won't assert if not initialized
9  * Use regular flags by default and only use the flagsys functions when you need to
10  * as these are more error prone.
11  *
12  * Never use these for level progression.
13 */
14 
25 function ‪set( str_flag )
26 {
27  if ( !isdefined( self.flag ) )
28  {
29  self.flag = [];
30  }
31 
32  self.flag[ str_flag ] = true;
33  self notify( str_flag );
34 }
35 
47 function ‪set_for_time( n_time, str_flag )
48 {
49  self notify( "__flag::set_for_time__" + str_flag );
50  self endon( "__flag::set_for_time__" + str_flag );
51 
52  ‪set( str_flag );
53  wait n_time;
54  ‪clear( str_flag );
55 }
56 
67 function ‪clear( str_flag )
68 {
69  if ( isdefined( self.flag ) && ‪IS_TRUE( self.flag[ str_flag ] ) )
70  {
71  self.flag[ str_flag ] = undefined;
72  self notify( str_flag );
73  }
74 }
75 
76 function ‪set_val( str_flag, b_val )
77 {
78  Assert( isdefined( b_val ), "value must be specified in flagsys::set_val" );
79 
80  if ( b_val )
81  {
82  ‪set( str_flag );
83  }
84  else
85  {
86  ‪clear( str_flag );
87  }
88 }
89 
99 function ‪toggle( str_flag )
100 {
101  ‪set( !‪get( str_flag ) );
102 }
103 
114 function ‪get( str_flag )
115 {
116  return ( isdefined( self.flag ) && ‪IS_TRUE( self.flag[ str_flag ] ) );
117 }
118 
129 function ‪wait_till( str_flag )
130 {
131  self endon( "death" );
132 
133  while ( !‪get( str_flag ) )
134  {
135  self waittill( str_flag );
136  }
137 }
138 
139 function ‪wait_till_timeout( n_timeout, str_flag )
140 {
141  ‪TIMEOUT( n_timeout );
142  ‪wait_till( str_flag );
143 }
144 
145 function ‪wait_till_all( a_flags )
146 {
147  self endon( "death" );
148 
149  for ( i = 0; i < a_flags.size; i++ )
150  {
151  str_flag = a_flags[i];
152 
153  if ( !‪get( str_flag ) )
154  {
155  self waittill( str_flag );
156  i = -1;
157  }
158  }
159 }
160 
161 function ‪wait_till_all_timeout( n_timeout, a_flags )
162 {
163  ‪TIMEOUT( n_timeout );
164  ‪wait_till_all( a_flags );
165 }
166 
167 function ‪wait_till_any( a_flags )
168 {
169  self endon( "death" );
170 
171  foreach ( flag in a_flags )
172  {
173  if ( ‪get( flag ) )
174  {
175  return flag;
176  }
177  }
178 
179  ‪util::waittill_any_array( a_flags );
180 }
181 
182 function ‪wait_till_any_timeout( n_timeout, a_flags )
183 {
184  ‪TIMEOUT( n_timeout );
185  ‪wait_till_any( a_flags );
186 }
187 
188 function ‪wait_till_clear( str_flag )
189 {
190  self endon( "death" );
191 
192  while ( ‪get( str_flag ) )
193  {
194  self waittill( str_flag );
195  }
196 }
197 
198 function ‪wait_till_clear_timeout( n_timeout, str_flag )
199 {
200  ‪TIMEOUT( n_timeout );
201  ‪wait_till_clear( str_flag );
202 }
203 
204 function ‪wait_till_clear_all( a_flags )
205 {
206  self endon( "death" );
207 
208  for ( i = 0; i < a_flags.size; i++ )
209  {
210  str_flag = a_flags[i];
211 
212  if ( ‪get( str_flag ) )
213  {
214  self waittill( str_flag );
215  i = -1;
216  }
217  }
218 }
219 
220 function ‪wait_till_clear_all_timeout( n_timeout, a_flags )
221 {
222  ‪TIMEOUT( n_timeout );
223  ‪wait_till_clear_all( a_flags );
224 }
225 
226 function ‪wait_till_clear_any( a_flags )
227 {
228  self endon( "death" );
229 
230  while ( true )
231  {
232  foreach ( flag in a_flags )
233  {
234  if ( !‪get( flag ) )
235  {
236  return flag;
237  }
238  }
239 
240  ‪util::waittill_any_array( a_flags );
241  }
242 }
243 
244 function ‪wait_till_clear_any_timeout( n_timeout, a_flags )
245 {
246  ‪TIMEOUT( n_timeout );
247  ‪wait_till_clear_any( a_flags );
248 }
249 
260 function delete( str_flag )
261 {
262  ‪clear( str_flag );
263 }
‪wait_till_clear_all
‪function wait_till_clear_all(a_flags)
Definition: flagsys_shared.csc:204
‪set_val
‪function set_val(str_flag, b_val)
Definition: flagsys_shared.csc:76
‪waittill_any_array
‪function waittill_any_array(a_notifies)
Definition: util_shared.csc:392
‪toggle
‪function toggle(str_flag)
Definition: flagsys_shared.csc:99
‪wait_till_all_timeout
‪function wait_till_all_timeout(n_timeout, a_flags)
Definition: flagsys_shared.csc:161
‪wait_till_clear_any
‪function wait_till_clear_any(a_flags)
Definition: flagsys_shared.csc:226
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪wait_till_clear_all_timeout
‪function wait_till_clear_all_timeout(n_timeout, a_flags)
Definition: flagsys_shared.csc:220
‪set_for_time
‪function set_for_time(n_time, str_flag)
Definition: flagsys_shared.csc:47
‪wait_till_any
‪function wait_till_any(a_flags)
Definition: flagsys_shared.csc:167
‪wait_till_any_timeout
‪function wait_till_any_timeout(n_timeout, a_flags)
Definition: flagsys_shared.csc:182
‪clear
‪function clear(str_flag)
Definition: flagsys_shared.csc:67
‪get
‪function get(str_flag)
Definition: flagsys_shared.csc:114
‪TIMEOUT
‪#define TIMEOUT(__t)
Definition: shared.gsh:218
‪set
‪function set(str_flag)
Definition: flagsys_shared.csc:25
‪wait_till_clear_timeout
‪function wait_till_clear_timeout(n_timeout, str_flag)
Definition: flagsys_shared.csc:198
‪wait_till_all
‪function wait_till_all(a_flags)
Definition: flagsys_shared.csc:145
‪wait_till_clear_any_timeout
‪function wait_till_clear_any_timeout(n_timeout, a_flags)
Definition: flagsys_shared.csc:244
‪wait_till_timeout
‪function wait_till_timeout(n_timeout, str_flag)
Definition: flagsys_shared.csc:139
‪wait_till_clear
‪function wait_till_clear(str_flag)
Definition: flagsys_shared.csc:188
‪wait_till
‪function wait_till(str_flag)
Definition: flagsys_shared.csc:129