/* Emacs style mode select -*- C++ -*- *----------------------------------------------------------------------------- * * * PrBoom: a Doom port merged with LxDoom and LSDLDoom * based on BOOM, a modified and improved DOOM engine * Copyright (C) 1999 by * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman * Copyright (C) 1999-2006 by * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze * Copyright 2005, 2006 by * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko * * 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 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; // CPhipps - new compatibility handling extern complevel_t compatibility_level, default_compatibility_level; // CPhipps - old compatibility testing flags aliased to new handling #define compatibility (compatibility_level<=boom_compatibility_compatibility) #define demo_compatibility (compatibility_level < boom_compatibility_compatibility) #define mbf_features (compatibility_level>=mbf_compatibility) // v1.1-like pitched sounds extern int pitched_sounds; // killough extern int default_translucency; // config file says // phares extern boolean general_translucency; // true if translucency is ok // phares extern int demo_insurance, default_demo_insurance; // killough 4/5/98 // ------------------------------------------- // killough 10/98: compatibility vector enum { comp_telefrag, comp_dropoff, comp_vile, comp_pain, comp_skull, comp_blazing, comp_doorlight, comp_model, comp_god, comp_falloff, comp_floors, comp_skymap, comp_pursuit, comp_doorstuck, comp_staylift, comp_zombie, comp_stairs, comp_infcheat, comp_zerotags, comp_moveblock, comp_respawn, /* cph - this is the inverse of comp_respawnfix from eternity */ comp_sound, comp_666, comp_soul, comp_maskedanim, COMP_NUM, /* cph - should be last in sequence */ COMP_TOTAL=32 // Some extra room for additional variables }; extern int comp[COMP_TOTAL], default_comp[COMP_TOTAL]; // ------------------------------------------- // 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 // CPhipps - screen parameters extern unsigned int desired_screenwidth, desired_screenheight; // ------------------------- // Status flags for refresh. // enum automapmode_e { am_active = 1, // currently shown am_overlay= 2, // covers the screen, i.e. not overlay mode am_rotate = 4, // rotates to the player facing direction am_follow = 8, // keep the player centred am_grid =16, // show grid }; extern enum automapmode_e automapmode; // Mode that the automap is in extern boolean menuactive; // Menu overlayed? extern boolean paused; // Game Pause? extern boolean nodrawers; extern boolean noblit; // 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, totallive; extern int totalitems; extern int totalsecret; // Timer, for scores. extern int basetic; /* killough 9/29/98: levelstarttic, adjusted */ extern int leveltime; // tics in game play for par // -------------------------------------- // DEMO playback/recording related stuff. extern boolean usergame; extern boolean demoplayback; extern boolean demorecording; extern int demover; // Quit after playing a demo from cmdline. extern boolean singledemo; // Print timing information after quitting. killough extern boolean timingdemo; // Run tick clock at fastest speed possible while playing demo. killough extern boolean fastdemo; 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]; extern boolean realplayeringame[MAXPLAYERS]; extern mapthing_t *deathmatchstarts; // killough extern size_t num_deathmatchstarts; // killough extern mapthing_t *deathmatch_p; // Player spawn spots. extern mapthing_t playerstarts[]; // Intermission stats. // Parameters for world map / intermission. extern wbstartstruct_t wminfo; //----------------------------------------- // Internal parameters, used for engine. // // File handling stuff. 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_horiz; // killough extern int mouseSensitivity_vert; // 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; extern int maketic; // Networking and tick handling related. #define BACKUPTICS 12 extern ticcmd_t netcmds[][BACKUPTICS]; extern int ticdup; //----------------------------------------------------------------------------- extern int allow_pushers; // MT_PUSH Things // phares 3/10/98 extern int default_allow_pushers; extern int variable_friction; // ice & mud // phares 3/10/98 extern int default_variable_friction; extern int monsters_remember; // killough 3/1/98 extern int default_monsters_remember; extern int weapon_recoil; // weapon recoil // phares extern int default_weapon_recoil; extern int player_bobbing; // whether player bobs or not // phares 2/25/98 extern int default_player_bobbing; // killough 3/1/98: make local to each game #ifdef DOGS extern int dogs, default_dogs; // killough 7/19/98: Marine's best friend :) extern int dog_jumping, default_dog_jumping; // killough 10/98 #endif /* killough 8/8/98: distance friendly monsters tend to stay from player */ extern int distfriend, default_distfriend; /* killough 9/8/98: whether monsters are allowed to strafe or retreat */ extern int monster_backing, default_monster_backing; /* killough 9/9/98: whether monsters intelligently avoid hazards */ extern int monster_avoid_hazards, default_monster_avoid_hazards; /* killough 10/98: whether monsters are affected by friction */ extern int monster_friction, default_monster_friction; /* killough 9/9/98: whether monsters help friends */ extern int help_friends, default_help_friends; extern int flashing_hom; // killough 10/98 extern int doom_weapon_toggles; // killough 10/98 /* killough 7/19/98: whether monsters should fight against each other */ extern int monster_infighting, default_monster_infighting; extern int monkeys, default_monkeys; extern int HelperThing; // type of thing to use for helper #endif