mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2024-12-02 08:51:57 +00:00
170 lines
4.8 KiB
C
170 lines
4.8 KiB
C
|
/*
|
||
|
===========================================================================
|
||
|
|
||
|
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
|