text: // 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.
  #include "doomdata.h"
  #include "d_net.h"
  
  // We need the playr data structure as well.
  #include "d_player.h"
  
  
  #ifdef __GNUG__
  #pragma interface
  #endif
  
  
  
  // ------------------------
  // 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;
  
  // Set if homebrew PWAD stuff has been added.
  extern	boolean modifiedgame;
  
  
  // -------------------------------------------
  // Language.
  extern	Language_t	 language;
  
  
  // -------------------------------------------
  // Selected skill type, map etc.
  //
  
  // Defaults for menu, methinks.
  extern	skill_t			startskill;
  extern	int				startepisode;
  extern	int				startmap;
  
  extern	boolean			autostart;
  
  // Selected by user.
  extern	skill_t			gameskill;
  extern	int				gameepisode;
  extern	int				gamemap;
  
  // 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.
  
  // These are not used, but should be (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 snd_SfxVolume;	   // maximum volume for sound
  extern int snd_MusicVolume;	   // maximum volume for music
  
  // 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;
  
  // 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			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).
  
  // This is ???
  extern	doomcom_t*		doomcom;
  
  // This points inside doomcom.
  extern	doomdata_t*		netbuffer;
  
  
  extern	ticcmd_t		localcmds[BACKUPTICS];
  extern	int				rndindex;
  
  extern	int				maketic;
  extern	int				nettics[MAXNETNODES];
  
  extern	ticcmd_t		netcmds[MAXPLAYERS][BACKUPTICS];
  extern	int				ticdup;
  
  
  
  #endif
  //-----------------------------------------------------------------------------
  //
  // $Log:$
  //
  //-----------------------------------------------------------------------------
  