; but draw calls still happen
; this is useful when waiting for an animation
.de GPF_PAUSE_UPDATE, 1
+ ; set if the player has taken their turn
+ ; this will allow all other units to
+ ; perform their update
+.de GPF_PLAYER_TURN_TAKEN, 1
; cell flags
.se 1
ret
#undefine TMP_OAMFLAG_PRIO
#undefine TMP_X_OFFSET
+
+ ; sets player turn taken flag
+unit_set_player_turn_taken:
+ ld a, [gameplay_flags]
+ or a, GPF_PLAYER_TURN_TAKEN
+ ld [gameplay_flags], a
+ ret
+
+ ; clears player turn taken flag
+unit_clear_player_turn_taken:
+ ld a, [gameplay_flags]
+ and a, ~GPF_PLAYER_TURN_TAKEN & 0xFF
+ ld [gameplay_flags], a
+ ret
; generic unit input handler
; inputs:
call unit_try_move_up
pop hl
pop de
-
+
+ call unit_set_player_turn_taken
pop bc
ld bc, st_unit_delay_to_active
push bc
pop hl
pop de
+ call unit_set_player_turn_taken
pop bc
ld bc, st_unit_delay_to_active
push bc
pop hl
pop de
+ call unit_set_player_turn_taken
pop bc
ld bc, st_unit_delay_to_active
push bc
call unit_try_move_right
+ call unit_set_player_turn_taken
pop bc
ld bc, st_unit_delay_to_active
push bc
; bc: next state
unit_handle_cpu_inputs:
#define MOVE_MADE scratch
+
+ ; check if player has taken turn
+ ; if not exit
+ ldnull bc
+ ld a, [gameplay_flags]
+ and a, GPF_PLAYER_TURN_TAKEN
+ ret z
+
; clear move made buffer
xor a, a
ld [MOVE_MADE], a