tfv: queue commands so you can choose while being attacked

This commit is contained in:
Vince Weaver 2021-01-19 17:04:34 -05:00
parent 716ab79c2e
commit ad842faeed
4 changed files with 112 additions and 21 deletions

View File

@ -27,6 +27,7 @@ do_battle:
sta MENU_POSITION sta MENU_POSITION
sta ENEMY_DEAD sta ENEMY_DEAD
sta ENEMY_ATTACKING sta ENEMY_ATTACKING
sta QUEUED_ATTACK
; start battle count part-way in ; start battle count part-way in
lda #20 lda #20
@ -247,8 +248,11 @@ done_battle_handle_dead:
jsr get_keypress jsr get_keypress
sta LAST_KEY sta LAST_KEY
cmp #'Q' cmp #'Q'
beq done_battle bne not_quit
jmp done_battle
not_quit:
;======================================== ;========================================
; delay for framerate ; delay for framerate
@ -331,20 +335,76 @@ battle_enemy_is_dead:
inc ENEMY_DEAD inc ENEMY_DEAD
lda ENEMY_DEAD lda ENEMY_DEAD
cmp #15 cmp #15
bne end_battle_loop bne end_check_enemy_dead
jsr victory_dance jsr victory_dance
jmp done_battle jmp done_battle
battle_enemy_is_not_dead_yet: battle_enemy_is_not_dead_yet:
lda ENEMY_HP_HI lda ENEMY_HP_HI
bne end_battle_loop bne end_check_enemy_dead
lda ENEMY_HP_LO lda ENEMY_HP_LO
bne end_battle_loop bne end_check_enemy_dead
; make enemy dead ; make enemy dead
inc ENEMY_DEAD inc ENEMY_DEAD
end_check_enemy_dead:
;====================
; run queued attack
lda QUEUED_ATTACK
beq end_queued_attack
cmp #QUEUED_DO_ATTACK
beq queued_attack_action
cmp #QUEUED_DO_MAGIC
beq queued_magic_action
cmp #QUEUED_DO_LIMIT
beq queued_limit_action
cmp #QUEUED_DO_SUMMON
beq queued_summon_action
jmp end_queued_attack
queued_attack_action:
lda #0
sta MENU_STATE
; attack and decrement HP
jsr attack
jsr done_attack
jmp done_queued_attack
queued_magic_action:
lda #0
sta MENU_STATE
jsr magic_attack
jsr done_attack
jmp done_queued_attack
queued_limit_action:
lda #0
sta MENU_STATE
jsr limit_break
jsr done_attack
jmp done_queued_attack
queued_summon_action:
lda #0
sta MENU_STATE
jsr summon
jsr done_attack
jmp done_queued_attack
done_queued_attack:
lda #0
sta QUEUED_ATTACK
end_queued_attack:
end_battle_loop: end_battle_loop:

View File

@ -225,9 +225,10 @@ enemy_attack:
lda #1 lda #1
sta ENEMY_ATTACKING sta ENEMY_ATTACKING
enemy_attack_loop: enemy_attack_loop:
; put attack name on ; put attack name onh
; occasionally attack with that enemy's power? ; occasionally attack with that enemy's power?
; occasionally heal self? ; occasionally heal self?
@ -247,11 +248,25 @@ enemy_attack_loop:
sta YPOS sta YPOS
jsr draw_enemy jsr draw_enemy
; let you finish menu commands?
lda MENU_STATE
cmp #MENU_NONE
beq enemy_no_menu
jsr get_keypress
sta LAST_KEY
jsr battle_menu_keypress
enemy_no_menu:
;============ ;============
; draw bottom ; draw bottom
jsr draw_battle_bottom jsr draw_battle_bottom
;============ ;============
; page flip ; page flip

View File

@ -579,35 +579,46 @@ finger_action:
brk brk
finger_attack_action: finger_attack_action:
lda #0 ; lda #0
sta MENU_STATE ; sta MENU_STATE
; attack and decrement HP ; attack and decrement HP
jsr attack ; jsr attack
jsr done_attack ; jsr done_attack
lda #QUEUED_DO_ATTACK
sta QUEUED_ATTACK
rts rts
finger_magic_action: finger_magic_action:
lda #0 ; lda #0
sta MENU_STATE ; sta MENU_STATE
jsr magic_attack ; jsr magic_attack
jsr done_attack ; jsr done_attack
lda #QUEUED_DO_MAGIC
sta QUEUED_ATTACK
rts rts
finger_limit_action: finger_limit_action:
lda #0 ; lda #0
sta MENU_STATE ; sta MENU_STATE
jsr limit_break ; jsr limit_break
jsr done_attack ; jsr done_attack
lda #QUEUED_DO_LIMIT
sta QUEUED_ATTACK
rts rts
finger_summon_action: finger_summon_action:
lda #0 ; lda #0
sta MENU_STATE ; sta MENU_STATE
jsr summon ; jsr summon
jsr done_attack ; jsr done_attack
lda #QUEUED_DO_SUMMON
sta QUEUED_ATTACK
rts rts
battle_menu_nofinger_keypress: battle_menu_nofinger_keypress:

View File

@ -213,6 +213,11 @@ NEWX = $D9
NEWY = $DA NEWY = $DA
GROUND_COLOR = $DB GROUND_COLOR = $DB
QUEUED_ATTACK = $DC
QUEUED_DO_ATTACK = $01
QUEUED_DO_MAGIC = $02
QUEUED_DO_LIMIT = $03
QUEUED_DO_SUMMON = $04
COLOR1 = $E0 COLOR1 = $E0
COLOR2 = $E1 COLOR2 = $E1