Orientation

From EDukeWiki
Jump to: navigation, search

orientation is a parameter used in several of the screen drawing commands, including rotatesprite and screentext.

orientation is a bitfield, the flags of which determine how a sprite is drawn. Here are the known bits and what they do. There may be others:

1 - translucency level one (66% opacity).

2 - scaling on 320-200 coordinates (deprecated). It's considered internal in the case of CON commands because the CON interface automatically sets it when you use functions calling rotatesprite (as well as various text functions).

4 - used to invert Y coordinates. Combine this bit with an angle of 1024 (using rotatesprite) and the tile will appear to have inverted X coordinates. If you want inversion for both the X and Y coordinates, simply set the angle (again, with rotatesprite) to 1024 and do not use this bit.

8 - causes the sprite to be not affected by the screen size (using the + or - commands). This is usefull, for example, when displaying a status bar.

16 - forces the center of the sprite you're drawing to its top-left if set. It also ignores the x-y offset of the tile.

32 - is translucency level two (33% opacity). It won't work if 1 is not set.

64 - forces masking off if set. It discards translucency too.

128 - "permanent" tile (deprecated).

256 - Align to the left (widescreen support)

512 - Align to the right (widescreen support)

1024 - Stretch to screen resolution (distorts aspect ratio; this is the behavior of rotatesprite prior to widescreen awareness)

2048 - Always interpret coordinate values as having "full" precision, bit-shifted left by 16, so that 20971520x13107200 corresponds to 320x200. See rotatesprite16.

As with cstat, the bit values can be added together and used in combination. For example, orientation 33 (32+1) is transparency level two, and orientation 5 (4+1) is transparency level one with inverted Y coordinates.