mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-16 17:31:27 +00:00
63fee16ca5
For convenience, orientation gets bit 1 (translucency) set automatically. Again, test/screentext.con is updated to show off this functionality (the code there assumes that additive blending tables are loaded at blend numbers 101 -- 132). BUILD_LUNATIC. git-svn-id: https://svn.eduke32.com/eduke32@4428 1a8010ca-5511-0410-912e-c29ae57300e0
349 lines
12 KiB
Text
349 lines
12 KiB
Text
// 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
|