123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- /*
- ===========================================================================
- Doom 3 BFG Edition GPL Source Code
- Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
- This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
- Doom 3 BFG Edition Source Code 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 3 of the License, or
- (at your option) any later version.
- Doom 3 BFG Edition Source Code 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 Doom 3 BFG Edition Source Code. If not, see <http://www.gnu.org/licenses/>.
- In addition, the Doom 3 BFG Edition 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 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below.
- 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.
- ===========================================================================
- */
- #ifndef _DOOM_LIB_H
- #define _DOOM_LIB_H
- #include "doomtype.h"
- #include "doomdef.h"
- #include "doominterface.h"
- #include "idlib/containers/Array.h"
- class idSysMutex;
- class idUserCmdMgr;
- #define IN_NUM_DIGITAL_BUTTONS 8
- #define IN_NUM_ANALOG_BUTTONS 8
- // Cutoff where the analog buttons are considered to be "pressed"
- // This should be smarter.
- #define IN_ANALOG_BUTTON_THRESHOLD 64
- extern idCVar s_volume_sound;
- extern idCVar s_volume_midi;
- extern idCVar m_show_messages;
- extern idCVar m_inDemoMode;
- struct rumble_t
- {
- int feedback; // SMF // XINPUT_FEEDBACK feedback;
- int endTime;
- // The following values are needed, becuase a rumble
- // can fail, if it hasn't processed the previous one yet,
- // so, it must be stored
- bool waiting;
- int left;
- int right;
-
- };
- enum gameSKU_t {
- GAME_SKU_DCC = 0, // Doom Classic Complete
- GAME_SKU_DOOM1_BFG, // Doom 1 Ran from BFG
- GAME_SKU_DOOM2_BFG, // Doom 2 Ran from BFG
- };
- /*
- ================================================================================================
- ExpansionData
- ================================================================================================
- */
- struct ExpansionData {
- enum { IWAD = 0, PWAD = 1 } type;
- GameMode_t gameMode;
- GameMission_t pack_type;
- const char * expansionName;
- const char * iWadFilename;
- const char * pWadFilename;
- const char * saveImageFile;
- const char ** mapNames;
- };
- namespace DoomLib
- {
- typedef int ( *RecvFunc)( char* buff, DWORD *numRecv );
- typedef int ( *SendFunc)( const char* buff, DWORD size, sockaddr_in *target, int toNode );
- typedef int ( *SendRemoteFunc)();
- void InitGlobals( void *ptr = NULL );
- void InitGame( int argc, char ** argv );
- void InitControlRemap();
- keyNum_t RemapControl( keyNum_t key );
- bool Poll();
- bool Tic( idUserCmdMgr * userCmdMgr );
- void Wipe();
- void Frame( int realoffset = 0, int buffer = 0 );
- void Draw();
- void Shutdown();
- void SetNetworking( RecvFunc rf, SendFunc sf, SendRemoteFunc sendRemote );
-
- void SetPlayer( int id );
- int GetPlayer();
- byte BuildSourceDest( int toNode );
- void GetSourceDest( byte sourceDest, int* source, int* dest );
- int RemoteNodeToPlayerIndex( int node );
- int PlayerIndexToRemoteNode( int index );
- void PollNetwork();
- void SendNetwork();
- void *GetGlobalData( int player );
- void RunSound();
- extern RecvFunc Recv;
- extern SendFunc Send;
- extern SendRemoteFunc SendRemote;
- extern void* (*Z_Malloc)( int size, int tag, void* user );
- extern void (*Z_FreeTag)(int lowtag );
- extern DoomInterface Interface;
- extern int idealExpansion;
- extern int expansionSelected;
- extern bool expansionDirty;
- extern bool skipToLoad;
- extern char loadGamePath[MAX_PATH];
- extern bool skipToNew;
- extern int chosenSkill;
- extern int chosenEpisode;
- extern idMatchParameters matchParms;
- const ExpansionData * GetCurrentExpansion();
- void SetCurrentExpansion( int expansion );
- void SetIdealExpansion( int expansion );
- void SetCurrentMapName( idStr name );
- const idStr & GetCurrentMapName();
- void SetCurrentDifficulty( idStr name );
- const idStr & GetCurrentDifficulty();
- void ActivateGame();
- void ExitGame();
- void ShowXToContinue( bool activate );
- gameSKU_t GetGameSKU();
- void HandleEndMatch();
-
- };
- #endif
|