uxn-utils/gui/teatime/teatime.tal

156 lines
3.6 KiB
Tal

( teatimer )
|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|80 @Controller &vector $2 &button $1 &key $1
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 &pad $4 &scrolly &scrolly-hb $1 &scrolly-lb $1
|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1
|000
@cursor &x $2 &y $2
@bar &height $1
@remaining-seconds $2
@last-second $1
|100
@on-reset ( -> )
( | meta )
;meta #06 DEO2
( | theme )
#05ff .System/r DEO2
#0bdf .System/g DEO2
#0abf .System/b DEO2
( | vector )
;on-frame .Screen/vector DEO2
;on-mouse .Mouse/vector DEO2
( | screen size )
#0048 .Screen/width DEO2
#0100 .Screen/height DEO2
.DateTime/second DEI .last-second STZ
<draw-border>
<draw-bar>
BRK
@on-frame ( -> )
.Mouse/state DEI ?{
.remaining-seconds LDZ2 #0000 EQU2 ?{
.DateTime/second DEI DUP .last-second LDZ EQU ?{
.last-second STZ
.remaining-seconds LDZ2 #0001 SUB2 DUP2 .remaining-seconds STZ2
#0007 DIV2 NIP .bar/height STZ
<draw-bar>
JMP2r }
POP } }
BRK
@on-mouse ( -> )
( | clear old cursor )
.cursor/x LDZ2 .Screen/x DEO2
.cursor/y LDZ2 .Screen/y DEO2
#00 .Screen/auto DEO
#40 .Screen/sprite DEO
( | draw cursor )
.Mouse/x DEI2 DUP2 .cursor/x STZ2
.Screen/x DEO2
.Mouse/y DEI2 DUP2 .cursor/y STZ2
.Screen/y DEO2
;arrow-icn .Screen/addr DEO2
#42 .Screen/sprite DEO
.Mouse/state DEI #00 EQU ?{
.Mouse/y DEI2 NIP #08 SUB DUP #f0 GTH ?{
#f0 OVRk SUB DUP .bar/height STZ
#00 SWP #0007 MUL2
( very rough! should be 7.5 ) .remaining-seconds STZ2
<draw-bar> }
POP }
BRK
@meta 00
( name ) "Tea 20 "Timer 0a
( details ) "Null
( author ) "By 20 "Dave 20 "Van 20 "Ee 0a
( date ) "12 20 "Jan 20 "2024 $1
( elements ) 00
(
@|drawing )
@<draw-bar> ( -- )
#0008 DUP2 .Screen/x DEO2
.Screen/y DEO2
;fill-icn .Screen/addr DEO2
#32 .Screen/auto DEO
.bar/height LDZ #f0 OVRk SUB
&>w ( -- )
DUP #08 LTH ?{
#01 .Screen/sprite DEO
#08 SUB !&>w }
DUP #00 EQU ?{
( partial row ) DUP #00 SWP ;fill-icn SWP2 SUB2 .Screen/addr DEO2
#07 .Screen/sprite DEO }
POP #00f8 .Screen/y DEI2 NEQ2 ?{ JMP2r }
;fill-icn .Screen/addr DEO2
&>w2 ( -- )
#03 .Screen/sprite DEO
.Screen/y DEI2 #00f8 NEQ2 ?&>w2
POP JMP2r
@<draw-border> ( -- )
#0000 DUP2 .Screen/x DEO2
.Screen/y DEO2
#82 .Screen/pixel DEO
;tick-icn .Screen/addr DEO2
#e1 .Screen/auto DEO
#0028 .Screen/x DEO2
#0008 .Screen/y DEO2
#08 .Screen/sprite DEOk #f1 .Screen/auto DEO
#0028 .Screen/x DEO2
#0080 .Screen/y DEO2
DEO
( | labels )
#0030 .Screen/x DEO2
#0004 .Screen/y DEO2
#02 .Screen/auto DEO
LIT2r [ =label-tilemap ] #1f00
&>w ( -- )
LDAkr #00 STHr INC2r ;digits ADD2 .Screen/addr DEO2
#08 .Screen/sprite DEO
INC GTHk ?&>w
POP2 #0038 .Screen/x DEO2
#0004 .Screen/y DEO2
#1f00
&>w2 ( -- )
LDAkr #00 STHr INC2r ;digits ADD2 .Screen/addr DEO2
#08 .Screen/sprite DEO
INC GTHk ?&>w2
JMP2r
(
@|assets )
@arrow-icn [ 80c0 e0f0 f8fc f0c0 ]
@tick-icn [ f000 0000 0000 0000 ]
@blank-icn [ 0000 0000 0000 0000 ]
@fill-icn [ ffff ffff ffff ffff ]
@digits ( Emmaline by damieng )
[
0000 0000 0000 0000 3864 e2e2 e264 3800
0c3c 5c1c 1c1c 1c00 7c8e 8e1c 3870 fe00
fe8e 0c3c 8e8e 7c00 0c1c 3c5c 9cfe 1c00
3e40 7c0e 8e8e 7c00 3c62 e0ec e262 3c00
fe0e 0e1c 3870 7000 7ce2 f27c 9e8e 7c00
788c 8e6e 0e8c 7800 ]
@label-tilemap [
20 00 00 00 00 18 00 00 00 00 18 00 00 00 00 10
00 00 00 00 10 00 00 00 00 30 00 00 00 00 08 08
00 00 00 00 30 00 00 00 00 08 00 00 00 00 30 00
00 00 00 08 00 00 00 00 00 00 00 00 00 00 ]