raze-gles/source/games/blood/src/view.h
Christoph Oelckers 9f36ef69e6 - fixed variable name clash caused by viewUpdateShake's global variables.
removed the redundant call in the Ticker, because all its results are discarded.
Use arguments instead of global variables to pass data around.
2021-03-21 08:58:38 +01:00

180 lines
4.8 KiB
C

//-------------------------------------------------------------------------
/*
Copyright (C) 2010-2019 EDuke32 developers and contributors
Copyright (C) 2019 Nuke.YKT
This file is part of NBlood.
NBlood is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#pragma once
#include "compat.h"
#include "build.h"
#include "palette.h"
#include "common_game.h"
#include "messages.h"
#include "player.h"
#include "interpolate.h"
BEGIN_BLD_NS
struct VIEW {
int bobPhase;
int Kills;
int bobHeight; // bob height
int bobWidth; // bob width
int at10;
int at14;
int shakeBobY; // bob sway y
int shakeBobX; // bob sway x
fixedhoriz horiz; // horiz
fixedhoriz horizoff; // horizoff
int at2c;
binangle angle; // angle
int weaponZ; // weapon z
int viewz; // view z
int at3c;
int at40;
int at44;
int at48; // posture
lookangle spin; // spin
int x; // x
int y; // y
int z; // z
int xvel; //xvel
int yvel; //yvel
int zvel; //zvel
short sectnum; // sectnum
unsigned int floordist; // floordist
char at6e; // look center
char at6f;
char at70; // run
char at71; // jump
char at72; // underwater
short at73; // sprite flags
SPRITEHIT at75;
lookangle look_ang;
lookangle rotscrnang;
};
extern VIEW gPrevView[kMaxPlayers];
extern VIEW predict, predictOld;
extern bool gPrediction;
enum VIEW_EFFECT {
VIEW_EFFECT_0 = 0,
VIEW_EFFECT_1,
VIEW_EFFECT_2,
VIEW_EFFECT_3,
VIEW_EFFECT_4,
VIEW_EFFECT_5,
VIEW_EFFECT_6,
VIEW_EFFECT_7,
VIEW_EFFECT_8,
VIEW_EFFECT_9,
VIEW_EFFECT_10,
VIEW_EFFECT_11,
VIEW_EFFECT_12,
VIEW_EFFECT_13,
VIEW_EFFECT_14,
VIEW_EFFECT_15,
VIEW_EFFECT_16,
VIEW_EFFECT_17,
VIEW_EFFECT_18,
};
enum VIEWPOS {
VIEWPOS_0 = 0,
VIEWPOS_1
};
enum
{
kBackTile = 253,
kCrosshairTile = 2319,
kLoadScreen = 2049,
kLoadScreenWideBack = 9216,
kLoadScreenWideLeft = 9217,
kLoadScreenWideRight = 9218,
kLoadScreenWideMiddle = 9219,
kSBarNumberHealth = 9220,
kSBarNumberAmmo = 9230,
kSBarNumberInv = 9240,
kSBarNumberArmor1 = 9250,
kSBarNumberArmor2 = 9260,
kSBarNumberArmor3 = 9270,
};
enum { kFontNum = 5 };
extern FFont *gFont[kFontNum];
extern VIEWPOS gViewPos;
extern int gViewIndex;
extern int gScreenTilt;
extern int deliriumTilt, deliriumTurn, deliriumPitch;
extern int gScreenTiltO, deliriumTurnO, deliriumPitchO;
extern int gShowFrameRate;
extern FixedBitArray<kMaxSprites> gInterpolateSprite;
extern int gLastPal;
extern double gInterpolate;
void hudDraw(PLAYER* gView, int nSectnum, double bobx, double boby, double zDelta, int basepal, double smoothratio);
void viewInitializePrediction(void);
void viewUpdatePrediction(InputPacket *pInput);
void viewCorrectPrediction(void);
void viewBackupView(int nPlayer);
void viewCorrectViewOffsets(int nPlayer, vec3_t const *oldpos);
void viewDrawText(int nFont, const char *pString, int x, int y, int nShade, int nPalette, int position, char shadow, unsigned int nStat = 0, uint8_t alpha = 255);
void InitStatusBar(void);
void UpdateStatusBar();
void viewInit(void);
void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t smooth);
void viewSetMessage(const char *pMessage, const int pal = 0, const MESSAGE_PRIORITY priority = MESSAGE_PRIORITY_NORMAL);
void viewSetErrorMessage(const char *pMessage);
void DoLensEffect(void);
void UpdateDacs(int nPalette, bool bNoTint = false);
void viewDrawScreen(bool sceneonly = false);
void viewUpdateDelirium(void);
void viewSetSystemMessage(const char* pMessage, ...);
inline void viewInterpolateSector(int nSector, sectortype *pSector)
{
StartInterpolation(nSector, Interp_Sect_Floorz);
StartInterpolation(nSector, Interp_Sect_Ceilingz);
StartInterpolation(nSector, Interp_Sect_Floorheinum);
}
inline void viewInterpolateWall(int nWall, walltype *pWall)
{
StartInterpolation(nWall, Interp_Wall_X);
StartInterpolation(nWall, Interp_Wall_Y);
}
inline void viewBackupSpriteLoc(int nSprite, spritetype *pSprite)
{
if (!gInterpolateSprite[nSprite])
{
pSprite->backuploc();
gInterpolateSprite.Set(nSprite);
}
}
END_BLD_NS