raze/source/games/duke/src/duke3d.h

132 lines
4.7 KiB
C
Raw Normal View History

#pragma once
#include "build.h"
#include "gamecvars.h"
#include "razemenu.h"
#include "gamecontrol.h"
2020-06-21 21:07:30 +00:00
#include "gamevar.h"
#include "global.h"
#include "funct.h"
#include "names.h"
2020-07-06 11:26:26 +00:00
#include "quotemgr.h"
#include "rts.h"
#include "sounds.h"
#include "soundefs.h"
#include "gamestruct.h"
#include "v_draw.h"
#include "gamefuncs.h"
2020-07-06 16:08:31 +00:00
BEGIN_DUKE_NS
struct GameInterface : public ::GameInterface
{
2020-07-01 23:24:46 +00:00
const char* Name() override { return "Duke"; }
void app_init() override;
void loadPalette();
void clearlocalinputstate() override;
bool GenerateSavePic() override;
void PlayHudSound() override;
GameStats getStats() override;
void MenuOpened() override;
void MenuSound(EMenuSounds snd) override;
bool CanSave() override;
bool StartGame(FNewGameStartup& gs) override;
FSavegameInfo GetSaveSig() override;
2020-07-02 08:59:22 +00:00
double SmallFontScale() override { return isRR() ? 0.5 : 1.; }
void SerializeGameState(FSerializer& arc) override;
std::pair<DVector3, DAngle> GetCoordinates() override;
void ExitFromMenu() override;
ReservedSpace GetReservedScreenSpace(int viewsize) override;
void DrawPlayerSprite(const DVector2& origin, bool onteam) override;
void GetInput(ControlInfo* const hidInput, double const scaleAdjust, InputPacket* packet = nullptr) override;
void UpdateSounds() override;
void Startup() override;
void DrawBackground() override;
void Render() override;
void Ticker() override;
const char* GenericCheat(int player, int cheat) override;
const char* CheckCheatMode() override;
void NextLevel(MapRecord* map, int skill) override;
void NewGame(MapRecord* map, int skill, bool) override;
void LevelCompleted(MapRecord* map, int skill) override;
bool DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, const DAngle cang, const DVector2& xydim, const double czoom, double const interpfrac) override;
void WarpToCoords(double x, double y, double z, DAngle ang) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
void UpdateCameras(double smoothratio) override;
void EnterPortal(DCoreActor* viewer, int type) override;
void LeavePortal(DCoreActor* viewer, int type) override;
2021-11-18 18:33:32 +00:00
bool GetGeoEffect(GeoEffect* eff, sectortype* viewsector) override;
void AddExcludedEpisode(const FString& episode) override;
int GetCurrentSkill() override;
bool WantEscape() override;
};
2020-07-06 16:08:31 +00:00
struct Dispatcher
{
// sectors_?.cpp
2020-07-20 21:21:27 +00:00
void (*think)();
void (*movetransports)();
2020-07-06 16:08:31 +00:00
void (*initactorflags)();
bool (*isadoorwall)(int dapic);
void (*animatewalls)();
2020-11-02 18:54:20 +00:00
void (*operateforcefields)(DDukeActor* act, int low);
bool (*checkhitswitch)(int snum, walltype* w, DDukeActor* act);
2021-11-18 17:51:19 +00:00
void (*activatebysector)(sectortype* sect, DDukeActor* j);
2022-08-23 20:39:07 +00:00
void (*checkhitwall)(DDukeActor* spr, walltype* dawall, const DVector3& pos, int atwith);
bool (*checkhitceiling)(sectortype* sn);
void (*checkhitsprite)(DDukeActor* i, DDukeActor* sn);
void (*checkhitdefault)(DDukeActor* i, DDukeActor* sn);
2020-07-06 16:08:31 +00:00
void (*checksectors)(int low);
DDukeActor* (*spawninit)(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>* actors);
2020-07-06 16:08:31 +00:00
bool (*ceilingspace)(sectortype* sectp);
bool (*floorspace)(sectortype* sectp);
void (*addweapon)(player_struct *p, int weapon, bool wswitch);
void (*hitradius)(DDukeActor* i, int r, int hp1, int hp2, int hp3, int hp4);
void (*lotsofmoney)(DDukeActor *s, int n);
void (*lotsofmail)(DDukeActor *s, int n);
void (*lotsofpaper)(DDukeActor *s, int n);
void (*guts)(DDukeActor* s, int gtype, int n, int p);
int (*ifhitbyweapon)(DDukeActor* sectnum);
void (*fall)(DDukeActor* actor, int g_p);
bool (*spawnweapondebris)(int picnum);
void (*respawnhitag)(DDukeActor* g_sp);
void (*move)(DDukeActor* i, int g_p, int g_x);
2020-07-20 21:21:27 +00:00
// player
2022-02-07 10:04:19 +00:00
void (*incur_damage)(player_struct* p);
void (*shoot)(DDukeActor*, int);
2020-07-20 21:21:27 +00:00
void (*selectweapon)(int snum, int j);
2022-02-07 10:04:19 +00:00
int (*doincrements)(player_struct* p);
void (*checkweapons)(player_struct* p);
2020-07-20 21:21:27 +00:00
void (*processinput)(int snum);
void (*displayweapon)(int snum, double interpfrac);
void (*displaymasks)(int snum, int p, double interpfrac);
2020-07-20 21:21:27 +00:00
2022-09-15 17:06:41 +00:00
void (*animatesprites)(tspriteArray& tsprites, const DVector2& viewVec, DAngle viewang, double interpfrac);
2020-07-06 16:08:31 +00:00
};
extern Dispatcher fi;
void CallInitialize(DDukeActor* actor);
void CallTick(DDukeActor* actor);
2022-01-21 00:04:08 +00:00
bool CallOperate(DDukeActor* actor, int plnum);
void CallAction(DDukeActor* actor);
2022-01-17 23:30:43 +00:00
void CallOnHit(DDukeActor* actor, DDukeActor* hitter);
2022-11-15 09:17:23 +00:00
void CallOnHurt(DDukeActor* actor, player_struct* hitter);
2022-01-21 00:04:08 +00:00
bool CallOnUse(DDukeActor* actor, player_struct* user);
void CallOnRespawn(DDukeActor* actor, int low);
2022-01-19 17:52:52 +00:00
bool CallAnimate(DDukeActor* actor, tspritetype* hitter);
void CallStaticSetup(DDukeActor* actor);
END_DUKE_NS