Template:Orientation: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
No edit summary
Fox (talk | contribs)
No edit summary
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
orientation is a parameter used in several of the screen drawing commands, including [[rotatesprite]] and [[screentext]].
The following values are used by [[rotatesprite]], [[rotatesprite16]], [[rotatespritea]], [[screentext]], [[gametext]], [[minitext]], [[digitalnumber]], [[digitalnumberz]], [[myos]] and [[myospalx]].


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:
{| {{prettytable}}
!Exposed!!Value!!Label!!Description!!
|-
| No || 1 || RS_TRANS1 || Translucency level one (66% opacity).
|-
| No || 2 || RS_AUTO || Scaling on 320-200 coordinates. This is implicitly applied to all CON screen drawing commands, but including it in your bitfields is recommended for clarity and portability of your code.
|-
| No || 4 || RS_YFLIP || 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.
|-
| No || 8 || RS_NOCLIP || 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.
|-
| No || 16 || RS_TOPLEFT || 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.
|-
| No || 32 || RS_TRANS2 || Translucency level two (33% opacity). It won't work if '''1'''  is not set.
|-
| No || 64 || RS_NOMASK || Forces masking off if set. It discards translucency too.
|-
| No || 128 || RS_PERM || "Permanent" tile (deprecated).
|-
| No || 256 || RS_ALIGN_L || Align to the left (widescreen support)
|-
| No || 512 || RS_ALIGN_R || Align to the right (widescreen support)
|-
| No || 1024 || RS_STRETCH || Stretch to screen resolution (distorts aspect ratio; this is the behavior of rotatesprite prior to widescreen awareness)
|-
| No || 2048 || ROTATESPRITE_FULL16 || Always interpret coordinate values as having "full" precision, [[shiftvarl|bit-shifted left by 16]], so that 20971520x13107200 corresponds to 320x200. See [[rotatesprite16]].
|-
|}


'''1''' - translucency level one (66% opacity).
{| {{Collapse}}
| <strong>Defines</strong>
|-
|
define RS_TRANS1                        0x00000001
define RS_AUTO                          0x00000002
  define RS_YFLIP                        0x00000004
define RS_NOCLIP                        0x00000008
define RS_TOPLEFT                      0x00000010
define RS_TRANS2                        0x00000020
define RS_NOMASK                        0x00000040
define RS_PERM                          0x00000080
define RS_ALIGN_L                      0x00000100
define RS_ALIGN_R                      0x00000200
define RS_STRETCH                      0x00000400
define ROTATESPRITE_FULL16              0x00000800
|}


'''2''' - scaling on 320-200 coordinates. This is implicitly applied to all CON screen drawing commands, but including it in your bitfields is recommended for clarity and portability of your code.
As with [[cstat (sprite)|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.


'''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.
<noinclude>[[Category:Templates]]</noinclude>
 
<includeonly>[[Category:Pages with templates]]</includeonly>
'''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, [[shiftvarl|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.
 
[[Category:Bitfields]]

Revision as of 00:55, 12 March 2020

The following values are used by rotatesprite, rotatesprite16, rotatespritea, screentext, gametext, minitext, digitalnumber, digitalnumberz, myos and myospalx.

Exposed Value Label Description
No 1 RS_TRANS1 Translucency level one (66% opacity).
No 2 RS_AUTO Scaling on 320-200 coordinates. This is implicitly applied to all CON screen drawing commands, but including it in your bitfields is recommended for clarity and portability of your code.
No 4 RS_YFLIP 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.
No 8 RS_NOCLIP 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.
No 16 RS_TOPLEFT 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.
No 32 RS_TRANS2 Translucency level two (33% opacity). It won't work if 1 is not set.
No 64 RS_NOMASK Forces masking off if set. It discards translucency too.
No 128 RS_PERM "Permanent" tile (deprecated).
No 256 RS_ALIGN_L Align to the left (widescreen support)
No 512 RS_ALIGN_R Align to the right (widescreen support)
No 1024 RS_STRETCH Stretch to screen resolution (distorts aspect ratio; this is the behavior of rotatesprite prior to widescreen awareness)
No 2048 ROTATESPRITE_FULL16 Always interpret coordinate values as having "full" precision, bit-shifted left by 16, so that 20971520x13107200 corresponds to 320x200. See rotatesprite16.
Defines
define RS_TRANS1                        0x00000001
define RS_AUTO                          0x00000002
define RS_YFLIP                         0x00000004
define RS_NOCLIP                        0x00000008
define RS_TOPLEFT                       0x00000010
define RS_TRANS2                        0x00000020
define RS_NOMASK                        0x00000040
define RS_PERM                          0x00000080
define RS_ALIGN_L                       0x00000100
define RS_ALIGN_R                       0x00000200
define RS_STRETCH                       0x00000400
define ROTATESPRITE_FULL16              0x00000800

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.