2 ===========================================================================
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
26 ===========================================================================
33 ==============================================================
37 ==============================================================
42 EDITOR_RADIANT = BIT(1),
44 EDITOR_DEBUGGER = BIT(3),
45 EDITOR_SCRIPT = BIT(4),
46 EDITOR_LIGHT = BIT(5),
47 EDITOR_SOUND = BIT(6),
50 EDITOR_PARTICLE = BIT(9),
53 EDITOR_MATERIAL = BIT(12)
56 #define STRTABLE_ID "#str_"
57 #define STRTABLE_ID_LENGTH 5
59 extern idCVar com_version;
60 extern idCVar com_skipRenderer;
61 extern idCVar com_asyncInput;
62 extern idCVar com_asyncSound;
63 extern idCVar com_machineSpec;
64 extern idCVar com_purgeAll;
65 extern idCVar com_developer;
66 extern idCVar com_allowConsole;
67 extern idCVar com_speeds;
68 extern idCVar com_showFPS;
69 extern idCVar com_showMemoryUsage;
70 extern idCVar com_showAsyncStats;
71 extern idCVar com_showSoundDecoders;
72 extern idCVar com_makingBuild;
73 extern idCVar com_updateLoadSize;
74 extern idCVar com_videoRam;
76 extern int time_gameFrame; // game logic time
77 extern int time_gameDraw; // game present time
78 extern int time_frontend; // renderer frontend time
79 extern int time_backend; // renderer backend time
81 extern int com_frameTime; // time for the current frame in milliseconds
82 extern volatile int com_ticNumber; // 60 hz tics, incremented by async function
83 extern int com_editors; // current active editor(s)
84 extern bool com_editorActive; // true if an editor has focus
87 const char DMAP_MSGID[] = "DMAPOutput";
88 const char DMAP_DONE[] = "DMAPDone";
89 extern HWND com_hwndMsg;
90 extern bool com_outputMsg;
99 // memory manager totals
100 int memoryManagerTotal;
103 int gameSubsystemTotal;
104 int renderSubsystemTotal;
107 int imageAssetsTotal;
108 int modelAssetsTotal;
109 int soundAssetsTotal;
114 virtual ~idCommon( void ) {}
116 // Initialize everything.
117 // if the OS allows, pass argc/argv directly (without executable name)
118 // otherwise pass the command line in a single string (without executable name)
119 virtual void Init( int argc, const char **argv, const char *cmdline ) = 0;
121 // Shuts down everything.
122 virtual void Shutdown( void ) = 0;
124 // Shuts down everything.
125 virtual void Quit( void ) = 0;
127 // Returns true if common initialization is complete.
128 virtual bool IsInitialized( void ) const = 0;
130 // Called repeatedly as the foreground thread for rendering and game logic.
131 virtual void Frame( void ) = 0;
133 // Called repeatedly by blocking function calls with GUI interactivity.
134 virtual void GUIFrame( bool execCmd, bool network ) = 0;
136 // Called 60 times a second from a background thread for sound mixing,
137 // and input generation. Not called until idCommon::Init() has completed.
138 virtual void Async( void ) = 0;
140 // Checks for and removes command line "+set var arg" constructs.
141 // If match is NULL, all set commands will be executed, otherwise
142 // only a set with the exact name. Only used during startup.
143 // set once to clear the cvar from +set for early init code
144 virtual void StartupVariable( const char *match, bool once ) = 0;
146 // Initializes a tool with the given dictionary.
147 virtual void InitTool( const toolFlag_t tool, const idDict *dict ) = 0;
149 // Activates or deactivates a tool.
150 virtual void ActivateTool( bool active ) = 0;
152 // Writes the user's configuration to a file
153 virtual void WriteConfigToFile( const char *filename ) = 0;
155 // Writes cvars with the given flags to a file.
156 virtual void WriteFlaggedCVarsToFile( const char *filename, int flags, const char *setCmd ) = 0;
158 // Begins redirection of console output to the given buffer.
159 virtual void BeginRedirect( char *buffer, int buffersize, void (*flush)( const char * ) ) = 0;
161 // Stops redirection of console output.
162 virtual void EndRedirect( void ) = 0;
164 // Update the screen with every message printed.
165 virtual void SetRefreshOnPrint( bool set ) = 0;
167 // Prints message to the console, which may cause a screen update if com_refreshOnPrint is set.
168 virtual void Printf( const char *fmt, ... )id_attribute((format(printf,2,3))) = 0;
170 // Same as Printf, with a more usable API - Printf pipes to this.
171 virtual void VPrintf( const char *fmt, va_list arg ) = 0;
173 // Prints message that only shows up if the "developer" cvar is set,
174 // and NEVER forces a screen update, which could cause reentrancy problems.
175 virtual void DPrintf( const char *fmt, ... ) id_attribute((format(printf,2,3))) = 0;
177 // Prints WARNING %s message and adds the warning message to a queue for printing later on.
178 virtual void Warning( const char *fmt, ... ) id_attribute((format(printf,2,3))) = 0;
180 // Prints WARNING %s message in yellow that only shows up if the "developer" cvar is set.
181 virtual void DWarning( const char *fmt, ...) id_attribute((format(printf,2,3))) = 0;
183 // Prints all queued warnings.
184 virtual void PrintWarnings( void ) = 0;
186 // Removes all queued warnings.
187 virtual void ClearWarnings( const char *reason ) = 0;
189 // Issues a C++ throw. Normal errors just abort to the game loop,
190 // which is appropriate for media or dynamic logic errors.
191 virtual void Error( const char *fmt, ... ) id_attribute((format(printf,2,3))) = 0;
193 // Fatal errors quit all the way to a system dialog box, which is appropriate for
194 // static internal errors or cases where the system may be corrupted.
195 virtual void FatalError( const char *fmt, ... ) id_attribute((format(printf,2,3))) = 0;
197 // Returns a pointer to the dictionary with language specific strings.
198 virtual const idLangDict * GetLanguageDict( void ) = 0;
200 // Returns key bound to the command
201 virtual const char * KeysFromBinding( const char *bind ) = 0;
203 // Returns the binding bound to the key
204 virtual const char * BindingFromKey( const char *key ) = 0;
206 // Directly sample a button.
207 virtual int ButtonState( int key ) = 0;
209 // Directly sample a keystate.
210 virtual int KeyState( int key ) = 0;
213 extern idCommon * common;
215 #endif /* !__COMMON_H__ */