@@ 24,13 24,13 @@
%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
%RTN { JMP2r }
-%TOS { #00 SWP }
+%TOB { NIP } %TOS { #00 SWP }
%MOD { DIVk MUL SUB }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP } %SWP2? { #01 JCN SWP2 }
%WIDTH { #00e0 }
-%HEIGHT { #00a0 }
+%HEIGHT { #0090 }
( devices )
@@ 48,6 48,8 @@
@player
&hp $1 &sp $1 &sp-max $1 &xp $1
&run $1 &sick $1
+
+@selection $1
@cursor
&x $2 &y $2 &last $1
@frame
@@ 94,60 96,73 @@ BRK
@on-button ( -> )
.Controller/button DEI #04 SFT
- [ #01 ] !~ ,&no-up JCN
- POP BRK &no-up
- [ #02 ] !~ ,&no-down JCN
- POP BRK &no-down
[ #04 ] !~ ,&no-left JCN
- POP BRK &no-left
+ .selection LDZ #01 - #00 ;select JSR2 POP BRK &no-left
[ #08 ] !~ ,&no-right JCN
- POP BRK &no-right
+ .selection LDZ INC #00 ;select JSR2 POP BRK &no-right
POP
BRK
@on-mouse ( -> )
-
+
+ ( hover card )
+ .Mouse/y DEI2 .frame/y LDZ2 #0030 ++ -- #0048 <<
+ .Mouse/x DEI2 .frame/x LDZ2 -- #00e0 <<
+ #0101 !! ,&no-hover JCN
+ .Mouse/x DEI2 .frame/x LDZ2 -- #0038 // TOB #00 ;select JSR2
+ &no-hover
+
;draw-cursor JSR2
( release-record ) #0000 .Mouse/state DEO .cursor/last STZ
BRK
+@select ( id state -- )
+
+ SWP
+ ( check changed )
+ DUP .selection LDZ ! ,&changed JCN
+ POP2 RTN
+ &changed
+ ( erase old selection ) #00 ;draw-selection JSR2
+ ( TODO: run )
+ 4MOD .selection STZ
+ #03 ;draw-selection JSR2
+
+ POP
+
+RTN
+
@redraw ( -- )
;draw-ui JSR2
- ;draw-selection JSR2
+ #03 ;draw-selection JSR2
;draw-table JSR2
- ( .frame #01 ;line-rect JSR2 )
RTN
@draw-table ( -- )
.frame/x LDZ2
- .frame/y LDZ2 #0038 ++
+ .frame/y LDZ2 #0030 ++
#00 ;draw-card JSR2
.frame/x LDZ2 #0038 ++
- .frame/y LDZ2 #0038 ++
+ .frame/y LDZ2 #0030 ++
#21 ;draw-card JSR2
.frame/x LDZ2 #0070 ++
- .frame/y LDZ2 #0038 ++
+ .frame/y LDZ2 #0030 ++
#13 ;draw-card JSR2
.frame/x LDZ2 #00a8 ++
- .frame/y LDZ2 #0038 ++
+ .frame/y LDZ2 #0030 ++
#36 ;draw-card JSR2
- .frame/x LDZ2 #0014 ++ .Screen/x DEO2
- .frame/y LDZ2 #0084 ++ .Screen/y DEO2
- ;cursor-up-icn .Screen/addr DEO2
- #03 .Screen/sprite DEO
-
.frame/x LDZ2
- .frame/y LDZ2 #0090 ++
+ .frame/y LDZ2 #0088 ++
#03 ;draw-dialog JSR2
RTN
@@ 196,14 211,20 @@ RTN
RTN
-@draw-selection ( -- )
+@draw-selection ( color -- )
+ STH
.frame/x LDZ2
- .frame/y LDZ2 #0028 ++
+ .frame/y LDZ2 #0020 ++
[ #00 ;get-card-name JSR2 ]
#02
;draw-label JSR2
+ .frame/x LDZ2 #0014 ++ [ .selection LDZ TOS #0038 ** ++ ] .Screen/x DEO2
+ .frame/y LDZ2 #007c ++ .Screen/y DEO2
+ ;cursor-up-icn .Screen/addr DEO2
+ STHr .Screen/sprite DEO
+
RTN
@draw-ui ( -- )
@@ 328,47 349,6 @@ RTN
RTN
-@line-rect ( rect color -- )
-
- STH STH
-
- ( not empty )
- STHkr LDZ2 STHkr #04 + LDZ2 !! ,&has-width JCN
- POP2r RTN
- &has-width
- STHkr #02 + LDZ2 STHkr #06 + LDZ2 !! ,&has-height JCN
- POP2r RTN
- &has-height
-
- ( y2 ) STHkr #06 + LDZ2
- ( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
- &ver
- ( save ) DUP2 .Screen/y DEO2
- ( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2
- OVRr STHr .Screen/pixel DEO
- ( x2 ) STHkr #04 + LDZ2 .Screen/x DEO2
- OVRr STHr .Screen/pixel DEO
- ( incr )
- INC2 GTH2k ,&ver JCN
- POP2
- ( x2 ) STHkr #04 + LDZ2
- ( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
- &hor
- ( save ) DUP2 .Screen/x DEO2
- ( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2
- OVRr STHr .Screen/pixel DEO
- ( y2 ) STHkr #06 + LDZ2 .Screen/y DEO2
- OVRr STHr .Screen/pixel DEO
- ( incr )
- INC2 GTH2k ,&hor JCN
- POP2
- POPr
- .Screen/x DEO2
- .Screen/y DEO2
- STHr .Screen/pixel DEO
-
-RTN
-
@print-hex ( value* -- )
&short ( value* -- )