~rabbits/donsol

9e5ea24d9c439d9081766816ad75747e7ef93dba — neauoire 1 year, 4 months ago 2401acb
Implemented selection
1 files changed, 44 insertions(+), 64 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +44 -64
@@ 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* -- )