@@ 49,7 49,9 @@
&length $1
&cards $36
@player
- &hp $1 &sp $1 &sp-max $1 &xp $1
+ &hp $1 &hp-tween $1
+ &sp $1 &sp-tween $1
+ &sp-max $1 &xp $1
&run $1 &sick $1
@table
&a $1 &b $1 &c $1 &d $1 &selection $1
@@ 93,7 95,30 @@
BRK
@on-frame ( -> )
- ( inactive )
+
+ ( tween )
+ .player/hp LDZ2
+ GTHk #00 = ,&no-hp-dec JCN
+ INCk .player/hp-tween STZ
+ ;draw-status JSR2
+ &no-hp-dec
+ LTHk #00 = ,&no-hp-inc JCN
+ DUP #01 - .player/hp-tween STZ
+ ;draw-status JSR2
+ &no-hp-inc
+ POP2
+
+ .player/sp LDZ2
+ GTHk #00 = ,&no-sp-dec JCN
+ INCk .player/sp-tween STZ
+ ;draw-status JSR2
+ &no-sp-dec
+ LTHk #00 = ,&no-sp-inc JCN
+ DUP #01 - .player/sp-tween STZ
+ ;draw-status JSR2
+ &no-sp-inc
+ POP2
+
BRK
@on-button ( -> )
@@ 128,7 153,7 @@ BRK
@start-game ( -- )
( reset player )
- #15 .player/hp STZ
+ #10 DUP .player/hp STZ .player/hp-tween STZ
#0000 .player/sp STZ2
#00 .player/xp STZ
@@ 136,11 161,12 @@ BRK
;init-deck JSR2
;shuffle-deck JSR2
;pull-card JSR2 #00 ;put-card JSR2
- ;pull-card JSR2 #01 ;put-card JSR2
- ;pull-card JSR2 #02 ;put-card JSR2
+ #2d #01 ;put-card JSR2
+ #18 #02 ;put-card JSR2
;pull-card JSR2 #03 ;put-card JSR2
;redraw JSR2
+ ;dialogs/entered ;draw-dialog JSR2
RTN
@@ 186,7 212,53 @@ RTN
DUP #36 < ,¬-flipped JCN
POP RTN
¬-flipped
- DEBUG
+ DUP TOS ;card-types ++ LDA
+ ( route card type )
+ DUP #00 = ;use-potion JCN2
+ DUP #01 = ;use-shield JCN2
+ DUP ;use-enemy JCN2
+
+RTN
+
+@use-potion ( card type -- )
+
+ POP
+ .player/sick LDZ #01 ! ,&no-sick JCN
+ ;dialogs/sickness ;draw-dialog JSR2
+ ;play-error JSR2 POP RTN
+ &no-sick
+ .player/hp LDZ #15 ! ,&no-waste JCN
+ ;dialogs/waste ;draw-dialog JSR2
+ ;play-error JSR2 POP RTN
+ &no-waste
+ ( get ) TOS ;card-values ++ LDA .player/hp LDZ +
+ ( set ) #15 LTHk SWP? POP .player/hp STZ
+ ( set sick ) #01 .player/sick STZ
+ ;draw-status JSR2
+ ;dialogs/potion ;draw-dialog JSR2
+ ;play-potion JSR2
+
+RTN
+
+@use-shield ( card type -- )
+
+ POP
+ ( get ) TOS ;card-values ++ LDA
+ ( set ) .player/sp STZ
+ ;draw-status JSR2
+ ;dialogs/shield ;draw-dialog JSR2
+ ;play-shield JSR2
+
+RTN
+
+@use-enemy ( card type -- )
+
+ POP
+ ( get ) TOS ;card-values ++ LDA
+ ( set ) .player/hp LDZ SWP - .player/hp STZ
+ ;draw-status JSR2
+ ;dialogs/unshielded ;draw-dialog JSR2
+ ;play-attack JSR2
RTN
@@ 219,12 291,29 @@ RTN
&no-use
4MOD .table/selection STZ
#03 ;draw-selection JSR2
+ POP
+
+RTN
+
+@play-error ( -- )
+
+RTN
+
+@play-potion ( -- )
+
+RTN
+
+@play-shield ( -- )
+
+RTN
+
+@play-attack ( -- )
RTN
@redraw ( -- )
- ;draw-ui JSR2
+ ;draw-status JSR2
#03 ;draw-selection JSR2
;draw-table JSR2
@@ 249,28 338,23 @@ RTN
.frame/y LDZ2 #0030 ++
.table/d LDZ ;draw-card JSR2
- .frame/x LDZ2
- .frame/y LDZ2 #0088 ++
- #03 ;draw-dialog JSR2
-
RTN
-@draw-dialog ( x* y* id -- )
+@draw-dialog ( dialog* -- )
- STH
- .Screen/y DEO2
- .Screen/x DEO2
+ STH2
+ .frame/x LDZ2 .Screen/x DEO2
+ .frame/y LDZ2 #0088 ++ .Screen/y DEO2
( auto x ) #01 .Screen/auto DEO
#1800
&loop
- ( get offset ) DUP TOS
- ( find dialog ) STHkr TOS #0018 ** ;dialogs ++
- ( get char ) ++ LDA TOS 8** ;font ++ .Screen/addr DEO2
+ ( get offset ) DUP TOS STH2kr ++ LDA
+ ( get char ) TOS 8** ;font ++ .Screen/addr DEO2
#02 .Screen/sprite DEO
INC GTHk ,&loop JCN
POP2
( auto none ) #00 .Screen/auto DEO
- POPr
+ POP2r
RTN
@@ 315,21 399,26 @@ RTN
RTN
-@draw-ui ( -- )
+@draw-status ( -- )
( HP )
.frame/x LDZ2
.frame/y LDZ2
OVR2 OVR2 #0010 ++ ;hp-txt #02 ;draw-label JSR2
- OVR2 #0020 ++ OVR2 #0010 ++ .player/hp LDZ #01 ;draw-value JSR2
- .player/hp LDZ #05 ;draw-ui-progress JSR2
+ OVR2 #0020 ++ OVR2 #0010 ++ .player/hp-tween LDZ #01 ;draw-value JSR2
+ .player/hp-tween LDZ #05 ;draw-ui-progress JSR2
+ ( sick )
+ .frame/x LDZ2 #0010 ++ .Screen/x DEO2
+ .frame/y LDZ2 #0010 ++ .Screen/y DEO2
+ ;star-icn ;blank-icn .player/sick LDZ SWP2? POP2 .Screen/addr DEO2
+ #03 .Screen/sprite DEO
( SP )
.frame/x LDZ2 #0038 ++
.frame/y LDZ2
OVR2 OVR2 #0010 ++ ;sp-txt #02 ;draw-label JSR2
- OVR2 #0020 ++ OVR2 #0010 ++ .player/sp LDZ #03 ;draw-value JSR2
- #12 #0f ;draw-ui-progress JSR2
+ OVR2 #0020 ++ OVR2 #0010 ++ .player/sp-tween LDZ #03 ;draw-value JSR2
+ .player/sp-tween LDZ #0f ;draw-ui-progress JSR2
( XP )
.frame/x LDZ2 #0070 ++
@@ 1,15 1,15 @@
@dialogs
&clear 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- &sickness 2333 3900 2a29 2930 0037 2d27 2f69 0000 0000 0000 0000 0000
- &shieldbreak 2333 3936 0037 2c2d 2930 2800 2636 332f 2968 0000 0000 0000
+ &sickness 2333 3900 2a29 2930 0037 2d27 2f40 0000 0000 0000 0000 0000
+ &shieldbreak 2333 3936 0037 2c2d 2930 2800 2636 332f 293f 0000 0000 0000
&death 2333 3900 282d 2928 4000 4100 1e36 3d00 252b 252d 3240 0000
&cannot_run 2333 3900 2725 3232 3338 0036 3932 0025 3b25 3d40 0000 0000
&shield 2333 3900 2a33 3932 2800 2500 372c 2d29 3028 4000 0000 0000
&potion 2333 3900 2836 2532 2f00 2500 3433 382d 3332 4000 0000 0000
- &wastedpotion 2333 3900 3b25 3738 2928 0025 0034 3338 2d33 3268 0000 0000
- &unshielded 193b 6800 2333 3900 3229 2928 0025 0037 2c2d 2930 2840 0000
- &attack 2333 3900 2932 3829 3629 2800 382c 2900 3633 3331 4000 0000
+ &waste 2333 3900 3b25 3738 2928 0025 0034 3338 2d33 323f 0000 0000
+ &unshielded 193b 3f00 2333 3900 3229 2928 0025 0037 2c2d 2930 2840 0000
+ &entered 2333 3900 2932 3829 3629 2800 382c 2900 3633 3331 4000 0000
&shielded 2333 3900 2630 3327 2f29 2800 382c 2900 2538 3825 272f 4000
&damages 2333 3900 3739 363a 2d3a 2928 0038 2c29 0026 2538 3830 2940
&run 2333 3900 3625 3200 253b 253d 4000 0000 0000 0000 0000 0000