# 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.