Browse Source

(button.tal) Making OOP

main
Devine Lu Linvega 1 year ago
parent
commit
77488b36cb
  1. 45
      projects/examples/gui/button.tal

45
projects/examples/gui/button.tal

@ -17,7 +17,7 @@
#0058 DUP2 .Screen/width DEO2 #0058 DUP2 .Screen/width DEO2
.Screen/height DEO2 .Screen/height DEO2
;on-mouse .Mouse/vector DEO2 ;on-mouse .Mouse/vector DEO2
;button-chr <draw-button> button/<redraw>
BRK BRK
@meta $1 @meta $1
@ -26,32 +26,43 @@
( auth ) "By 20 "Devine 20 "Lu 20 "Linvega 0a ( auth ) "By 20 "Devine 20 "Lu 20 "Linvega 0a
( date ) "15 20 "Jan 20 "2025 $2 ( date ) "15 20 "Jan 20 "2025 $2
@on-mouse ( -> )
update-focus BRK
@on-frame ( -> ) @on-frame ( -> )
BRK
[ LIT2 18 &time $1 ] INCk ,&time STR [ LIT2 18 &time $1 ] INCk ,&time STR
EQU ?{ BRK } EQU ?{ BRK }
#0000 .Screen/vector DEO2 #0000 .Screen/vector DEO2
;button-chr/up <draw-button> ;button-chr/up button/<draw>
[ LIT2 "! 18 ] DEO [ LIT2 "! 18 ] DEO
BRK BRK
@on-mouse ( -> ) (
@|drawing )
@update-focus ( -- )
<draw-cursor-touch> <draw-cursor-touch>
.Mouse/state DEI ?{ BRK } .Mouse/x DEI2 .Mouse/y DEI2 button/is-within ?{ ;on-mouse !<set-focus> }
.Mouse/x DEI2 .Mouse/y DEI2 within-button ?{ BRK } ;button/on-mouse !<set-focus>
;button-chr/down <draw-button>
;on-frame .Screen/vector DEO2 @<set-focus> ( vector* -- )
#10 ;on-frame/time STA DUP2 [ LIT2 &last $2 ] NEQ2 ?{ POP2 JMP2r }
BRK DUP2 .Mouse/vector DEO2
,&last STR2 !button/<redraw>
@within-button ( x* y* -- f ) @button/is-within ( x* y* -- f )
#0020 SUB2 #0018 LTH2 STH #0020 SUB2 #0018 LTH2 STH
#0020 SUB2 #0018 LTH2 STHr AND JMP2r #0020 SUB2 #0018 LTH2 STHr AND JMP2r
( @button/<redraw> ( -- )
@|drawing ) .Mouse/vector DEI2 ;button/on-mouse EQU2 ?{ ;button-chr/up !button/<draw> }
;button-chr/hover !button/<draw>
@button/on-mouse ( -> )
update-focus BRK
@<draw-button> ( addr* -- ) @button/<draw> ( addr* -- )
[ LIT2 26 -Screen/auto ] DEO [ LIT2 26 -Screen/auto ] DEO
#0020 DUP2 .Screen/x DEO2 #0020 DUP2 .Screen/x DEO2
.Screen/y DEO2 .Screen/y DEO2
@ -75,6 +86,14 @@
.Screen/sprite DEOk DEO .Screen/sprite DEOk DEO
JMP2r JMP2r
@<phex> ( short* -: )
SWP /b
&b ( byte -: )
DUP #04 SFT /c
&c ( byte -: )
#0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO
JMP2r
( (
@|assets ) @|assets )

Loading…
Cancel
Save