zscript-doc/api/weapon/PSprite.md

140 lines
2.8 KiB
Markdown

# PSprite
A **P**layer **Sprite**, paradoxically, is not the player themself, but the
sprite *within their view*, such as their weapon. PSprites are arbitrarily
layered by number, somewhat similar to `HUDMessage`s. They are drawn ordered
from lowest to highest.
The predefined layers are:
| Name | Value | Description |
| ---- | :---: | ----------- |
| `PSprite.Flash` | `1000` | The layer used by `A_GunFlash` for gun flashes. |
| `PSprite.StrifeHands` | `-1` | The hands brought up by `A_ItBurnsItBurns` when the player in Strife dies of fire. |
| `PSprite.TargetCenter` | `int.Max - 2` | The middle of the targeting system view in Strife. |
| `PSprite.TargetLeft` | `int.Max - 1` | The left side of the targeting system view in Strife. |
| `PSprite.TargetRight` | `int.Max` | The right side of the targeting system view in Strife. |
| `PSprite.Weapon` | `1` | The default layer for all weapons. |
```
class PSprite : Object play
{
readonly State CurState;
readonly int ID;
readonly PSprite Next;
readonly PlayerInfo Owner;
double Alpha;
Actor Caller;
bool FirstTic;
int Frame;
double OldX;
double OldY;
bool ProcessPending;
spriteid Sprite;
int Tics;
double X;
double Y;
bool bAddBob;
bool bAddWeapon;
bool bCVarFast;
bool bFlip;
bool bPowDouble;
void SetState(State newstate, bool pending = false);
void Tick();
}
```
### `CurState`
TODO
### `ID`
TODO
### `Next`
TODO
### `Owner`
TODO
### `Alpha`
The amount of translucency of the PSprite, range 0-1 inclusive.
### `Caller`
TODO
### `FirstTic`
TODO
### `Frame`
Frame number of the sprite.
### `OldX`
TODO
### `OldY`
TODO
### `ProcessPending`
TODO
### `Sprite`
The sprite to display on this layer.
### `Tics`
The number of game ticks before the next state takes over.
### `X`
The offset from the weapon's normal resting position on the horizontal axis.
### `Y`
The offset from the weapon's normal resting position on the vertical axis. Note
that `32` is the real resting position because of `A_Raise`.
### `bAddBob`
Adds the weapon's bobbing to this layer's offset.
### `bAddWeapon`
Adds the weapon layer's offsets to this layer's offset.
### `bCVarFast`
Layer will respect `sv_fastweapons`.
### `bFlip`
Flips the weapon visually horizontally.
### `bPowDouble`
Layer will respect `PowerDoubleFiringSpeed`.
### `SetState`
TODO
### `Tick`
Called by `PlayerPawn::TickPSprites` to advance the frame.
<!-- EOF -->