raze-gles/polymer/eduke32/source/lunatic/test/screentext.con

350 lines
12 KiB
Plaintext

// ScreenText Test
/*
This is half a test and half a demonstration.
For example, some of the spacing and offset stuff could be replaced with tests of other things, like the backwards bit, line wrapping, and space lengths.
Also, if/when Lunatic adds support for \n characters.
*/
definequote 999
definequote 1000 AbCdEfGhIjKlM
definequote 1001 nOpQrStUvWxYz
definequote 1010 X1234567890-.!?;:'\ / %
definequote 1020 ^2R^8G^1B^7Y
definequote 1337 1337
definequote 2000 Left
definequote 2001 Center
definequote 2002 Right
definequote 2003 Top
definequote 2004 Center
definequote 2005 Bottom
definequote 3000 Spacing
definequote 3001 X-Offset
definequote 3002 %d: UiUiUiUiUi
definequote 3003 Justification
definequote 4000 Normal: aBcDeF
definequote 4001 Upper: aBcDeF
definequote 4002 Lower: aBcDeF
definequote 4003 Inverted: aBcDeF
definequote 5000 Rotate
definequote 5001 Top, Left:
definequote 5002 Center, Center:
definequote 5003 Bottom, Right:
gamevar font STARTALPHANUM 0
gamevar x 0 0
gamevar y 0 0
gamevar z 65536 0
gamevar blockangle 0 0
gamevar charangle 0 0
gamevar q 1000 0
gamevar shade 0 0
gamevar pal 0 0
gamevar o 16 0
gamevar alpha 0 0
gamevar xspace 5 0
gamevar yline 8 0
gamevar xbetween 0 0
gamevar ybetween 0 0
gamevar f 0 0
gamevar x1 0 0
gamevar y1 0 0
gamevar x2 0 0
gamevar y2 0 0
gamevar temp 0 0
gamevar doaddtvblend 0 0
state resetbounds
setvarvar x1 windowx1
setvarvar y1 windowy1
setvarvar x2 windowx2
setvarvar y2 windowy2
ends
onevent EVENT_ENTERLEVEL
state resetbounds
endevent
define TEXT_XRIGHT 0x00000001
define TEXT_XCENTER 0x00000002
define TEXT_YBOTTOM 0x00000004
define TEXT_YCENTER 0x00000008
define TEXT_INTERNALSPACE 0x00000010
define TEXT_TILESPACE 0x00000020
define TEXT_INTERNALLINE 0x00000040
define TEXT_TILELINE 0x00000080
define TEXT_XOFFSETZERO 0x00000100
define TEXT_XJUSTIFY 0x00000200
define TEXT_YOFFSETZERO 0x00000400
define TEXT_YJUSTIFY 0x00000800
define TEXT_LINEWRAP 0x00001000
define TEXT_UPPERCASE 0x00002000
define TEXT_INVERTCASE 0x00004000
define TEXT_IGNOREESCAPE 0x00008000
define TEXT_LITERALESCAPE 0x00010000
define TEXT_BACKWARDS 0x00020000
define TEXT_GAMETEXTNUMHACK 0x00040000
define TEXT_DIGITALNUMBER 0x00080000
define TEXT_BIGALPHANUM 0x00100000
define TEXT_GRAYFONT 0x00200000
state increment_line
ifvarg q 0
screentext font x y z blockangle charangle q shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar y 8
ends
state increment_line_test
ifvarg q 0
{
qsprintf 999 q temp
screentext font x y z blockangle charangle 999 shade pal o alpha xspace yline temp ybetween f x1 y1 x2 y2
}
addvar temp 1
addvar y 8
ends
onevent EVENT_DISPLAYREST
state resetbounds
// screentext font x y z blockangle charangle q shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
// spacing
setvar f 0
setvar x 35
setvar y 3
setvar pal 0
setvar temp 0
setvar q 3000
state increment_line_test
setvar temp -3
setvar q 3002
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
// justification
setvar f 0
orvar f TEXT_XCENTER
orvar f TEXT_XJUSTIFY
screentext font 160 y z blockangle charangle 3003 shade 12 o alpha xspace yline 320 ybetween f x1 y1 x2 y2
addvar y 8
setvar f 0
// x-offset
setvar temp 0
setvar q 3001
state increment_line_test
orvar f TEXT_XOFFSETZERO
setvar temp 5
setvar q 3002
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
state increment_line_test
addvar y 4
// case
setvar f 0
setvar q 4000
setvar pal 23
state increment_line
setvar q 4001
orvar f TEXT_UPPERCASE
state increment_line
setvar q 4002
orvar f TEXT_INVERTCASE
state increment_line
setvar q 4003
xorvar f TEXT_UPPERCASE
state increment_line
// Calculate periodically cycling alpha value. PERIODIC_ALPHA.
setvarvar temp totalclock
shiftvarl temp 2
sin alpha temp // alpha is now in [-2^14 .. 2^14]
shiftvarr alpha 7 // [-2^7 .. 2^7]
addvar alpha 128 // [0 .. 256]
ifvarg alpha 254 { setvar alpha 255 setvar doaddtvblend 1 }
else ifvarl alpha 2 { setvar doaddtvblend 0 }
ifvare doaddtvblend 1
{
shiftvarr alpha 2 // [0 63]
ifvarg alpha 31
{
setvar temp 63
subvarvar temp alpha
setvarvar alpha temp
orvar o 32 // RS_TRANS2
}
// alpha now in [0 .. 31]
addvar alpha 101 // additive translucency tables are assumed to be at [101 .. 132]
mulvar alpha -1
}
// divider line
rotatespritea 240 65 32768 512 WINDOWBORDER1 0 2 0 85 x1 y1 x2 y2
setvar pal 12
// x-alignment
setvar f 0
setvar x 220
screentext font x 127 z blockangle charangle 2000 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
orvar f TEXT_XCENTER
screentext font x 137 z blockangle charangle 2001 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
xorvar f TEXT_XCENTER
orvar f TEXT_XRIGHT
screentext font x 147 z blockangle charangle 2002 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
rotatespritea x 132 32768 0 WINDOWBORDER2 127 0 0 85 x1 y1 x2 y2
// y-alignment
setvar f TEXT_UPPERCASE
screentext font 180 162 z blockangle charangle 2003 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
orvar f TEXT_YCENTER
screentext font 208 162 z blockangle charangle 2004 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
xorvar f TEXT_YCENTER
orvar f TEXT_YBOTTOM
screentext font 260 162 z blockangle charangle 2005 shade pal o alpha xspace yline 0 ybetween f x1 y1 x2 y2
rotatespritea 240 163 32768 512 WINDOWBORDER1 127 0 0 85 x1 y1 x2 y2
setvar pal 0
// bluefont vs. redfont XOFFSETZERO comparison
setvar f 0
orvar f TEXT_XOFFSETZERO
screentext font 0 175 65536 blockangle charangle 1010 shade pal o alpha xspace yline 13 ybetween f x1 y1 x2 y2
orvar f TEXT_BIGALPHANUM
orvar f TEXT_YBOTTOM
screentext BIGALPHANUM 0 200 z blockangle charangle 1010 shade pal o alpha xspace yline 13 ybetween f x1 y1 x2 y2
// block rotation
setvar y 2
screentext MINIFONT 170 y z blockangle charangle 5001 shade 10 o alpha 2 yline 1 ybetween 0 x1 y1 x2 y2
screentext MINIFONT 237 y z blockangle charangle 5002 shade 14 o alpha 2 yline 1 ybetween TEXT_XCENTER x1 y1 x2 y2
screentext MINIFONT 317 y z blockangle charangle 5003 shade 16 o alpha 2 yline 1 ybetween TEXT_XRIGHT x1 y1 x2 y2
setvar f 0
setvar x 175
setvar y 12
setvar pal 10
setvar blockangle 0
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
setvar blockangle -256
setvar x 245
setvar y 40
setvar f 0
setvar pal 14
orvar f TEXT_XCENTER
orvar f TEXT_YCENTER
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
setvar blockangle -512
setvar x 317
setvar y 19
setvar f 0
setvar pal 16
orvar f TEXT_XRIGHT
orvar f TEXT_YBOTTOM
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar blockangle 128
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
setvar pal 15
// character rotation
setvar blockangle 0
setvar charangle 256
setvar f 0
setvar x 175
setvar y 78
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar charangle 256
addvar y 13
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar charangle 256
addvar y 13
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
addvar charangle 256
addvar y 13
screentext font x y z blockangle charangle 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
setvar charangle 0
setvar x 225
setvar y 78
screentext font x y z 128 -128 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z 256 -256 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z 384 -384 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z 512 -512 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
setvar x 312
setvar y 90
orvar f TEXT_XRIGHT
orvar f TEXT_YCENTER
screentext font x y z -128 128 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z -256 256 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z -384 384 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
screentext font x y z -512 512 5000 shade pal o alpha xspace yline xbetween ybetween f x1 y1 x2 y2
// alpha, sideways, and escape colors
setvar pal 13
setvar blockangle 0
setvar f 0
orvar f TEXT_XCENTER
screentext font 0 100 z 1536 charangle 1020 shade pal o 0 xspace yline xbetween ybetween f x1 y1 x2 y2
orvar f TEXT_IGNOREESCAPE
screentext font 10 100 z 1536 charangle 1020 shade pal o 85 xspace yline xbetween ybetween f x1 y1 x2 y2
orvar f TEXT_LITERALESCAPE
screentext font 20 100 z 1536 charangle 1020 shade pal o 170 xspace yline xbetween ybetween f x1 y1 x2 y2
ifvarand o 32 xorvar o 32 // clear RS_TRANS2
setvar alpha 0 // Clear alpha so it's only active from PERIODIC_ALPHA to here.
endevent