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 ENEMY_DEAD
sta ENEMY_ATTACKING
sta QUEUED_ATTACK
; start battle count part-way in
lda #20
@ -247,8 +248,11 @@ done_battle_handle_dead:
jsr get_keypress
sta LAST_KEY
cmp #'Q'
beq done_battle
bne not_quit
jmp done_battle
not_quit:
;========================================
; delay for framerate
@ -331,20 +335,76 @@ battle_enemy_is_dead:
inc ENEMY_DEAD
lda ENEMY_DEAD
cmp #15
bne end_battle_loop
bne end_check_enemy_dead
jsr victory_dance
jmp done_battle
battle_enemy_is_not_dead_yet:
lda ENEMY_HP_HI
bne end_battle_loop
bne end_check_enemy_dead
lda ENEMY_HP_LO
bne end_battle_loop
bne end_check_enemy_dead
; make 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:

View File

@ -225,9 +225,10 @@ enemy_attack:
lda #1
sta ENEMY_ATTACKING
enemy_attack_loop:
; put attack name on
; put attack name onh
; occasionally attack with that enemy's power?
; occasionally heal self?
@ -247,11 +248,25 @@ enemy_attack_loop:
sta YPOS
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
jsr draw_battle_bottom
;============
; page flip

View File

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

View File

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