raze-gles/source/games/blood/src/blood.h
Christoph Oelckers c8a75a8664 - give each DrawInfo its own list of tsprites.
Since these do not fully get processed sequentially the contents need to be preserved until needed.
This required getting rid of the global tsprite array. Polymost still uses a static vatiable, though, but this is only accessed in polymost-exclusive code.
2021-04-02 10:28:40 +02:00

157 lines
4.3 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 "build.h"
#include "gamestruct.h"
#include "mapinfo.h"
#include "common_game.h"
#include "fx.h"
#include "gameutil.h"
#include "db.h"
#include "actor.h"
#include "ai.h"
#include "aistate.h"
#include "aiunicult.h"
#include "callback.h"
#include "db.h"
#include "endgame.h"
#include "eventq.h"
#include "gib.h"
#include "globals.h"
#include "levels.h"
#include "misc.h"
#include "player.h"
#include "seq.h"
#include "sound.h"
#include "triggers.h"
#include "view.h"
#include "nnexts.h"
#include "player.h"
#include "misc.h"
#include "sectorfx.h"
#include "bloodactor.h"
BEGIN_BLD_NS
struct INIDESCRIPTION {
const char *pzName;
const char *pzFilename;
const char **pzArts;
int nArts;
};
struct INICHAIN {
INICHAIN *pNext;
char zName[BMAX_PATH];
INIDESCRIPTION *pDescription;
};
extern INICHAIN *pINIChain;
extern int gNetPlayers;
extern int blood_globalflags;
void QuitGame(void);
void PreloadCache(void);
void StartLevel(MapRecord *gameOptions);
void ProcessFrame(void);
void ScanINIFiles(void);
void EndLevel();
struct MIRROR
{
int type;
int link;
int dx;
int dy;
int dz;
int wallnum;
};
extern MIRROR mirror[16];
extern int mirrorcnt, mirrorsector, mirrorwall[4];
inline bool DemoRecordStatus(void)
{
return false;
}
inline bool VanillaMode()
{
return false;
}
void sndPlaySpecialMusicOrNothing(int nMusic);
struct GameInterface : ::GameInterface
{
const char* Name() override { return "Blood"; }
void app_init() override;
void SerializeGameState(FSerializer& arc) override;
void loadPalette() override;
void clearlocalinputstate() override;
bool GenerateSavePic() override;
void FreeLevelData() override;
void FreeGameData() override;
FSavegameInfo GetSaveSig() override;
void MenuOpened() override;
void MenuClosed() override;
bool CanSave() override;
bool StartGame(FNewGameStartup& gs) override;
void QuitToTitle() override;
FString GetCoordString() override;
ReservedSpace GetReservedScreenSpace(int viewsize) override;
void UpdateSounds() override;
void GetInput(InputPacket* packet, ControlInfo* const hidInput) override;
void Ticker() override;
void DrawBackground() override;
void Startup() override;
void Render() override;
const char* GenericCheat(int player, int cheat) override;
void NewGame(MapRecord *sng, int skill) override;
void NextLevel(MapRecord* map, int skill) override;
void LevelCompleted(MapRecord* map, int skill) override;
bool DrawAutomapPlayer(int x, int y, int z, int a, double const smoothratio) override;
void SetTileProps(int til, int surf, int vox, int shade) override;
fixed_t playerHorizMin() override { return IntToFixed(-180); }
fixed_t playerHorizMax() override { return IntToFixed(120); }
int playerKeyMove() override { return 1024; }
void WarpToCoords(int x, int y, int z, int a, int h) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;
int chaseCamX(binangle ang) override { return MulScale(-Cos(ang.asbuild()), 1280, 30); }
int chaseCamY(binangle ang) override { return MulScale(-Sin(ang.asbuild()), 1280, 30); }
int chaseCamZ(fixedhoriz horiz) override { return FixedToInt(MulScale(horiz.asq16(), 1280, 3)) - (16 << 8); }
void processSprites(spritetype* tsprite, int& spritesortcnt, int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) override;
void EnterPortal(spritetype* viewer, int type) override;
void LeavePortal(spritetype* viewer, int type) override;
GameStats getStats() override;
};
END_BLD_NS