// Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // // $Id: doomstat.h 593 2006-09-01 20:45:45Z fraggle $ // // Copyright(C) 1993-1996 Id Software, Inc. // Copyright(C) 2005 Simon Howard // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // 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., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. // // 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. #include "doomdata.h" #include "d_net.h" // We need the playr data structure as well. #include "d_player.h" // ------------------------ // Command line parameters. // extern boolean nomonsters; // checkparm of -nomonsters extern boolean respawnparm; // checkparm of -respawn extern boolean fastparm; // checkparm of -fast extern boolean devparm; // DEBUG: launched with -devparm // ----------------------------------------------------- // Game Mode - identify IWAD as shareware, retail etc. // extern GameMode_t gamemode; extern GameMission_t gamemission; extern GameVersion_t gameversion; extern char *gamedescription; // Set if homebrew PWAD stuff has been added. extern boolean modifiedgame; // ------------------------------------------- // Selected skill type, map etc. // // Defaults for menu, methinks. extern skill_t startskill; extern int startepisode; extern int startmap; // Savegame slot to load on startup. This is the value provided to // the -loadgame option. If this has not been provided, this is -1. extern int startloadgame; extern boolean autostart; // Selected by user. extern skill_t gameskill; extern int gameepisode; extern int gamemap; // If non-zero, exit the level after this number of minutes extern int timelimit; // vertical movement from mouse/joystick disabled extern int novert; // Nightmare mode flag, single player. extern boolean respawnmonsters; // Netgame? Only true if >1 player. extern boolean netgame; // Flag: true only if started as net deathmatch. // An enum might handle altdeath/cooperative better. extern boolean deathmatch; // ------------------------- // Internal parameters for sound rendering. // These have been taken from the DOS version, // but are not (yet) supported with Linux // (e.g. no sound volume adjustment with menu. // From m_menu.c: // Sound FX volume has default, 0 - 15 // Music volume has default, 0 - 15 // These are multiplied by 8. extern int sfxVolume; extern int musicVolume; // Current music/sfx card - index useless // w/o a reference LUT in a sound module. // Ideally, this would use indices found // in: /usr/include/linux/soundcard.h extern int snd_MusicDevice; extern int snd_SfxDevice; // Config file? Same disclaimer as above. extern int snd_DesiredMusicDevice; extern int snd_DesiredSfxDevice; // ------------------------- // Status flags for refresh. // // Depending on view size - no status bar? // Note that there is no way to disable the // status bar explicitely. extern boolean statusbaractive; extern boolean automapactive; // In AutoMap mode? extern boolean menuactive; // Menu overlayed? extern boolean paused; // Game Pause? extern boolean viewactive; extern boolean nodrawers; extern boolean noblit; extern int viewwindowx; extern int viewwindowy; extern int viewheight; extern int viewwidth; extern int scaledviewwidth; // This one is related to the 3-screen display mode. // ANG90 = left side, ANG270 = right extern int viewangleoffset; // Player taking events, and displaying. extern int consoleplayer; extern int displayplayer; // ------------------------------------- // Scores, rating. // Statistics on a given map, for intermission. // extern int totalkills; extern int totalitems; extern int totalsecret; // Timer, for scores. extern int levelstarttic; // gametic at level start extern int leveltime; // tics in game play for par // -------------------------------------- // DEMO playback/recording related stuff. // No demo, there is a human player in charge? // Disable save/end game? extern boolean usergame; //? extern boolean demoplayback; extern boolean demorecording; // Round angleturn in ticcmds to the nearest 256. This is used when // recording Vanilla demos in netgames. extern boolean lowres_turn; // Quit after playing a demo from cmdline. extern boolean singledemo; //? extern gamestate_t gamestate; //----------------------------- // 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; // Bookkeeping on players - state. extern player_t players[MAXPLAYERS]; // Alive? Disconnected? extern boolean playeringame[MAXPLAYERS]; // Player spawn spots for deathmatch. #define MAX_DM_STARTS 10 extern mapthing_t deathmatchstarts[MAX_DM_STARTS]; extern mapthing_t* deathmatch_p; // Player spawn spots. extern mapthing_t playerstarts[MAXPLAYERS]; // Intermission stats. // Parameters for world map / intermission. extern wbstartstruct_t wminfo; // LUT of ammunition limits for each kind. // This doubles with BackPack powerup item. extern int maxammo[NUMAMMO]; //----------------------------------------- // Internal parameters, used for engine. // // File handling stuff. extern char * configdir; extern char * savegamedir; extern char basedefault[1024]; extern FILE* debugfile; // if true, load all graphics at level load extern boolean precache; // wipegamestate can be set to -1 // to force a wipe on the next draw extern gamestate_t wipegamestate; extern int mouseSensitivity; //? // debug flag to cancel adaptiveness extern boolean singletics; extern int bodyqueslot; // Needed to store the number of the dummy sky flat. // Used for rendering, // as well as tracking projectiles etc. extern int skyflatnum; // Netgame stuff (buffers and pointers, i.e. indices). extern int rndindex; extern int maketic; extern int nettics[MAXPLAYERS]; extern ticcmd_t netcmds[MAXPLAYERS][BACKUPTICS]; extern int ticdup; #endif //----------------------------------------------------------------------------- // // $Log$ // Revision 1.12 2006/02/24 19:14:22 fraggle // Remove redundant stuff relating to the old network code // // Revision 1.11 2006/02/23 19:12:01 fraggle // Add lowres_turn to indicate whether we generate angleturns which are // 8-bit as opposed to 16-bit. This is used when recording demos without // -longtics enabled. Sync this option between clients in a netgame, so // that if one player is recording a Vanilla demo, all clients record // in lowres. // // Revision 1.10 2006/02/19 13:42:27 fraggle // Move tic number expansion code to common code. Parse game data packets // received from the server. // Strip down d_net.[ch] to work through the new networking code. Remove // game sync code. // Remove i_net.[ch] as it is no longer needed. // Working networking! // // Revision 1.9 2005/10/24 18:50:39 fraggle // Allow the game version to emulate to be specified from the command line // and set compatibility options accordingly. // // Revision 1.8 2005/10/16 01:18:10 fraggle // Global "configdir" variable with directory to store config files in. // Create a function to find the filename for a savegame slot. Store // savegames in the config dir. // // Revision 1.7 2005/09/11 20:25:56 fraggle // Second configuration file to allow chocolate doom-specific settings. // Adjust some existing command line logic (for graphics settings and // novert) to adjust for this. // // Revision 1.6 2005/09/04 15:59:45 fraggle // 'novert' command line option to disable vertical mouse movement // // Revision 1.5 2005/09/04 14:51:19 fraggle // Display the correct quit messages according to which game is being played. // Remove "language" variable (do this through gettext, if ever) // // Revision 1.4 2005/08/31 21:21:18 fraggle // Better IWAD detection and identification. Support '-iwad' to specify // the IWAD to use. // // Revision 1.3 2005/07/23 18:56:07 fraggle // Remove unneccessary pragmas // // Revision 1.2 2005/07/23 16:44:55 fraggle // Update copyright to GNU GPL // // Revision 1.1.1.1 2005/07/23 16:20:09 fraggle // Initial import // // //-----------------------------------------------------------------------------