Files
DoomRTX/neo/prey/game/PlayerView.h
T
2026-05-05 15:01:01 -07:00

111 lines
3.4 KiB
C++

// Copyright (C) 2004 Id Software, Inc.
//
#ifndef __GAME_PLAYERVIEW_H__
#define __GAME_PLAYERVIEW_H__
/*
===============================================================================
Player view.
===============================================================================
*/
// screenBlob_t are for the on-screen damage claw marks, etc
typedef struct {
const idMaterial * material;
float x, y, w, h;
float s1, t1, s2, t2;
int finishTime;
int startFadeTime;
float driftAmount;
} screenBlob_t;
#define MAX_SCREEN_BLOBS 8
class idPlayerView {
public:
idPlayerView();
void Save( idSaveGame *savefile ) const;
void Restore( idRestoreGame *savefile );
void SetPlayerEntity( class hhPlayer *playerEnt ); //HUMANHEAD bjk
virtual // HUMANHEAD
void ClearEffects( void );
virtual // HUMANHEAD
void DamageImpulse( idVec3 localKickDir, const idDict *damageDef );
void WeaponFireFeedback( const idDict *weaponDef );
// HUMANHEAD bjk
idAngles AngleOffset( float kickSpeed, float kickReturnSpeed ); // returns the current kick angle
idMat3 ShakeAxis( void ) const; // returns the current shake angle
void CalculateShake( void );
// this may involve rendering to a texture and displaying
// that with a warp model or in double vision mode
virtual // HUMANHEAD
void RenderPlayerView( idUserInterface *hud );
void Fade( idVec4 color, int time );
void Flash( idVec4 color, int time );
// void AddBloodSpray( float duration ); // HUMANHEAD pdm: not used
// temp for view testing
// void EnableBFGVision( bool b ) { bfgVision = b; }; // HUMANHEAD pdm: not used
//---------------------
protected: // HUMANHEAD
virtual // HUMANHEAD
void SingleView( idUserInterface *hud, const renderView_t *view );
// HUMANHEAD pdm: not used
// void DoubleVision( idUserInterface *hud, const renderView_t *view, int offset );
// void BerserkVision( idUserInterface *hud, const renderView_t *view );
// void InfluenceVision( idUserInterface *hud, const renderView_t *view );
void ScreenFade();
screenBlob_t * GetScreenBlob();
screenBlob_t screenBlobs[MAX_SCREEN_BLOBS];
int dvFinishTime; // double vision will be stopped at this time
const idMaterial * dvMaterial; // material to take the double vision screen shot
const idMaterial * scratchMaterial; // HUMANHEAD bjk
const idMaterial * hurtMaterial; // HUMANHEAD bjk
int kickFinishTime; // view kick will be stopped at this time
idAngles kickAngles;
// bool bfgVision; // HUMANHEAD pdm: not used
// const idMaterial * tunnelMaterial; // health tunnel vision
// const idMaterial * armorMaterial; // armor damage view effect
// const idMaterial * berserkMaterial; // berserk effect
// const idMaterial * irGogglesMaterial; // ir effect
// const idMaterial * bloodSprayMaterial; // blood spray
// const idMaterial * bfgMaterial; // when targeted with BFG
const idMaterial * lagoMaterial; // lagometer drawing
float lastDamageTime; // accentuate the tunnel effect for a while
idVec4 fadeColor; // fade color
idVec4 fadeToColor; // color to fade to
idVec4 fadeFromColor; // color to fade from
float fadeRate; // fade rate
int fadeTime; // fade time
idAngles shakeAng; // from the sound sources
hhPlayer * player; //HUMANHEAD bjk
renderView_t view;
};
#endif /* !__GAME_PLAYERVIEW_H__ */