MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / update_state

Function update_state

src/SB/Game/zDiscoFloor.cpp:312–369  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

310 }
311
312 void update_state(z_disco_floor& df, F32 dt)
313 {
314 df.state_time += dt;
315
316 if (df.state_time < df.state_delay)
317 {
318 return;
319 }
320
321 if (df.state_time - dt < df.state_delay)
322 {
323 dt = df.state_time - df.state_delay;
324 }
325
326 df.state_time = 0.0f;
327 df.next_state = df.state + (df.flag.forward ? 1 : -1);
328
329 if (df.next_state < df.min_state)
330 {
331 if (df.asset->flags & 0x1)
332 {
333 df.next_state = df.max_state;
334 }
335 else
336 {
337 df.next_state = df.state;
338 }
339 }
340
341 if (df.next_state > df.max_state)
342 {
343 if (df.asset->flags & 0x1)
344 {
345 df.next_state = df.min_state;
346 }
347 else
348 {
349 df.next_state = df.state;
350 }
351 }
352
353 translate_mask(df.next_state_mask, df.state_masks[df.next_state], df.tiles_size);
354
355 if (df.transition_delay <= dt)
356 {
357 df.state = df.next_state;
358 df.state_counter++;
359
360 memcpy(df.active_state_mask, df.next_state_mask,
361 state_byte_size(df.asset->state_mask_size));
362 }
363 else
364 {
365 df.transition_time = 0.0f;
366 }
367
368 refresh_state(df);
369 }

Callers 1

updateMethod · 0.70

Calls 4

translate_maskFunction · 0.85
memcpyFunction · 0.85
state_byte_sizeFunction · 0.85
refresh_stateFunction · 0.70

Tested by

no test coverage detected