2006-02-24 04:48:15 +00:00
|
|
|
// Emacs style mode select -*- C++ -*-
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//
|
|
|
|
// $Id:$
|
|
|
|
//
|
|
|
|
// Copyright (C) 1993-1996 by id Software, Inc.
|
|
|
|
//
|
|
|
|
// This source is available for distribution and/or modification
|
|
|
|
// only under the terms of the DOOM Source Code License as
|
|
|
|
// published by id Software. All rights reserved.
|
|
|
|
//
|
|
|
|
// The source is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
|
|
|
|
// for more details.
|
|
|
|
//
|
|
|
|
// DESCRIPTION:
|
|
|
|
// All the global variables that store the internal state.
|
|
|
|
// Theoretically speaking, the internal state of the engine
|
|
|
|
// should be found by looking at the variables collected
|
|
|
|
// here, and every relevant module will have to include
|
|
|
|
// this header file.
|
|
|
|
// In practice, things are a bit messy.
|
|
|
|
//
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __D_STATE__
|
|
|
|
#define __D_STATE__
|
|
|
|
|
|
|
|
// We need globally shared data structures,
|
|
|
|
// for defining the global state variables.
|
|
|
|
// We need the player data structure as well.
|
|
|
|
//#include "d_player.h"
|
|
|
|
|
|
|
|
#include "doomdata.h"
|
|
|
|
#include "d_net.h"
|
|
|
|
#include "g_level.h"
|
|
|
|
|
|
|
|
// We also need the definition of a cvar
|
|
|
|
#include "c_cvars.h"
|
|
|
|
|
|
|
|
// -----------------------
|
|
|
|
// Game speed.
|
|
|
|
//
|
|
|
|
enum EGameSpeed
|
|
|
|
{
|
|
|
|
SPEED_Normal,
|
|
|
|
SPEED_Fast,
|
|
|
|
};
|
|
|
|
extern EGameSpeed GameSpeed;
|
|
|
|
|
|
|
|
|
|
|
|
// ------------------------
|
|
|
|
// Command line parameters.
|
|
|
|
//
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool devparm; // DEBUG: launched with -devparm
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// -----------------------------------------------------
|
|
|
|
// Game Mode - identify IWAD as shareware, retail etc.
|
|
|
|
//
|
|
|
|
extern GameMode_t gamemode;
|
|
|
|
extern GameMission_t gamemission;
|
|
|
|
|
|
|
|
// -------------------------------------------
|
|
|
|
// Selected skill type, map etc.
|
|
|
|
//
|
|
|
|
|
|
|
|
extern char startmap[8]; // [RH] Actual map name now
|
|
|
|
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool autostart;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
// Selected by user.
|
|
|
|
EXTERN_CVAR (Int, gameskill);
|
|
|
|
extern int NextSkill; // [RH] Skill to use at next level load
|
|
|
|
|
|
|
|
// Netgame? Only true if >1 player.
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool netgame;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
// Bot game? Like netgame, but doesn't involve network communication.
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool multiplayer;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
// Flag: true only if started as net deathmatch.
|
|
|
|
EXTERN_CVAR (Int, deathmatch)
|
|
|
|
|
|
|
|
// [RH] Pretend as deathmatch for purposes of dmflags
|
|
|
|
EXTERN_CVAR (Bool, alwaysapplydmflags)
|
|
|
|
|
|
|
|
// [RH] Teamplay mode
|
|
|
|
EXTERN_CVAR (Bool, teamplay)
|
|
|
|
|
|
|
|
// [RH] Friendly fire amount
|
|
|
|
EXTERN_CVAR (Float, teamdamage)
|
|
|
|
|
|
|
|
// [RH] The class the player will spawn as in single player,
|
|
|
|
// in case using a random class with Hexen.
|
|
|
|
extern int SinglePlayerClass[MAXPLAYERS];
|
|
|
|
|
|
|
|
// -------------------------
|
|
|
|
// Internal parameters for sound rendering.
|
|
|
|
|
|
|
|
EXTERN_CVAR (Float, snd_sfxvolume) // maximum volume for sound
|
|
|
|
EXTERN_CVAR (Float, snd_musicvolume) // maximum volume for music
|
|
|
|
|
|
|
|
|
|
|
|
// -------------------------
|
|
|
|
// Status flags for refresh.
|
|
|
|
//
|
|
|
|
|
|
|
|
enum EMenuState
|
|
|
|
{
|
|
|
|
MENU_Off, // Menu is closed
|
|
|
|
MENU_On, // Menu is opened
|
|
|
|
MENU_WaitKey, // Menu is opened and waiting for a key in the controls menu
|
|
|
|
MENU_OnNoPause, // Menu is opened but does not pause the game
|
|
|
|
};
|
|
|
|
|
|
|
|
extern bool automapactive; // In AutoMap mode?
|
|
|
|
extern EMenuState menuactive; // Menu overlayed?
|
|
|
|
extern int paused; // Game Pause?
|
|
|
|
|
|
|
|
|
|
|
|
extern bool viewactive;
|
|
|
|
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool nodrawers;
|
|
|
|
extern bool noblit;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
extern int viewwindowx;
|
|
|
|
extern int viewwindowy;
|
|
|
|
extern "C" int viewheight;
|
|
|
|
extern "C" int viewwidth;
|
|
|
|
extern "C" int halfviewwidth; // [RH] Half view width, for plane drawing
|
|
|
|
extern "C" int realviewwidth; // [RH] Physical width of view window
|
|
|
|
extern "C" int realviewheight; // [RH] Physical height of view window
|
|
|
|
extern "C" int detailxshift; // [RH] X shift for horizontal detail level
|
|
|
|
extern "C" int detailyshift; // [RH] Y shift for vertical detail level
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// This one is related to the 3-screen display mode.
|
|
|
|
// ANG90 = left side, ANG270 = right
|
|
|
|
extern int viewangleoffset;
|
|
|
|
|
|
|
|
// Player taking events. i.e. The local player.
|
|
|
|
extern int consoleplayer;
|
|
|
|
|
|
|
|
|
|
|
|
// --------------------------------------
|
|
|
|
// DEMO playback/recording related stuff.
|
|
|
|
// No demo, there is a human player in charge?
|
|
|
|
// Disable save/end game?
|
|
|
|
extern bool usergame;
|
|
|
|
|
2006-04-16 19:09:36 +00:00
|
|
|
extern bool demoplayback;
|
|
|
|
extern bool demorecording;
|
2006-02-24 04:48:15 +00:00
|
|
|
extern int demover;
|
|
|
|
|
|
|
|
// Quit after playing a demo from cmdline.
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool singledemo;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern gamestate_t gamestate;
|
|
|
|
|
|
|
|
extern int SaveVersion;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------
|
|
|
|
// Internal parameters, fixed.
|
|
|
|
// These are set by the engine, and not changed
|
|
|
|
// according to user inputs. Partly load from
|
|
|
|
// WAD, partly set at startup time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern int gametic;
|
|
|
|
|
|
|
|
|
|
|
|
// Alive? Disconnected?
|
|
|
|
extern bool playeringame[MAXPLAYERS];
|
|
|
|
|
|
|
|
|
|
|
|
// Player spawn spots for deathmatch.
|
2008-05-08 08:06:26 +00:00
|
|
|
extern TArray<FMapThing> deathmatchstarts;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
// Player spawn spots.
|
2008-05-08 08:06:26 +00:00
|
|
|
extern FMapThing playerstarts[MAXPLAYERS];
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
// Intermission stats.
|
|
|
|
// Parameters for world map / intermission.
|
|
|
|
extern struct wbstartstruct_s wminfo;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------
|
|
|
|
// Internal parameters, used for engine.
|
|
|
|
//
|
|
|
|
|
|
|
|
// File handling stuff.
|
|
|
|
extern FILE* debugfile;
|
|
|
|
|
|
|
|
// if true, load all graphics at level load
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool precache;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
//-------
|
|
|
|
//REFRESH
|
|
|
|
//-------
|
|
|
|
|
|
|
|
// wipegamestate can be set to -1
|
|
|
|
// to force a wipe on the next draw
|
|
|
|
extern gamestate_t wipegamestate;
|
|
|
|
extern bool setsizeneeded;
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool setmodeneeded;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
extern int BorderNeedRefresh;
|
|
|
|
extern int BorderTopRefresh;
|
|
|
|
|
|
|
|
|
|
|
|
EXTERN_CVAR (Float, mouse_sensitivity)
|
|
|
|
//?
|
|
|
|
// debug flag to cancel adaptiveness
|
2006-09-14 00:02:31 +00:00
|
|
|
extern bool singletics;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
extern int bodyqueslot;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Needed to store the number of the dummy sky flat.
|
|
|
|
// Used for rendering,
|
|
|
|
// as well as tracking projectiles etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Netgame stuff (buffers and pointers, i.e. indices).
|
|
|
|
|
|
|
|
// This is the interface to the packet driver, a separate program
|
|
|
|
// in DOS, but just an abstraction here.
|
2006-05-11 04:00:58 +00:00
|
|
|
extern doomcom_t doomcom;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
extern struct ticcmd_t localcmds[LOCALCMDTICS];
|
|
|
|
|
|
|
|
extern int maketic;
|
|
|
|
extern int nettics[MAXNETNODES];
|
|
|
|
|
|
|
|
extern ticcmd_t netcmds[MAXPLAYERS][BACKUPTICS];
|
|
|
|
extern int ticdup;
|
|
|
|
|
|
|
|
|
|
|
|
// ---- [RH] ----
|
|
|
|
EXTERN_CVAR (Bool, developer)
|
|
|
|
|
|
|
|
extern bool ToggleFullscreen;
|
|
|
|
|
|
|
|
extern float JoyAxes[6];
|
|
|
|
|
|
|
|
extern int Net_Arbitrator;
|
|
|
|
|
|
|
|
EXTERN_CVAR (Bool, var_friction)
|
|
|
|
EXTERN_CVAR (Bool, var_pushers)
|
|
|
|
|
|
|
|
|
|
|
|
// [RH] Miscellaneous info for DeHackEd support
|
|
|
|
struct DehInfo
|
|
|
|
{
|
|
|
|
int StartHealth;
|
|
|
|
int StartBullets;
|
|
|
|
int MaxHealth;
|
|
|
|
int MaxArmor;
|
|
|
|
int GreenAC;
|
|
|
|
int BlueAC;
|
|
|
|
int MaxSoulsphere;
|
|
|
|
int SoulsphereHealth;
|
|
|
|
int MegasphereHealth;
|
|
|
|
int GodHealth;
|
|
|
|
int FAArmor;
|
|
|
|
int FAAC;
|
|
|
|
int KFAArmor;
|
|
|
|
int KFAAC;
|
|
|
|
char PlayerSprite[5];
|
|
|
|
BYTE ExplosionStyle;
|
|
|
|
fixed_t ExplosionAlpha;
|
|
|
|
int NoAutofreeze;
|
|
|
|
};
|
|
|
|
extern DehInfo deh;
|
|
|
|
EXTERN_CVAR (Int, infighting)
|
|
|
|
|
|
|
|
// [RH] Deathmatch flags
|
|
|
|
|
|
|
|
EXTERN_CVAR (Int, dmflags);
|
|
|
|
EXTERN_CVAR (Int, dmflags2); // [BC]
|
|
|
|
|
|
|
|
EXTERN_CVAR (Int, compatflags);
|
2006-06-03 12:30:11 +00:00
|
|
|
extern int i_compatflags;
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
#endif
|