mirror of
https://github.com/DrBeef/Doom3Quest.git
synced 2025-02-24 21:01:16 +00:00
Bringing all the changes done (mostly by baggyg) in the OVRPassToVR branch bringing over the major FP related changes to master. Please refer to that branch for the individual changes that have all been brought over in this single commit. Co-Authored-By: Grant Bagwell <general@grantbagwell.co.uk>
190 lines
6.8 KiB
C++
190 lines
6.8 KiB
C++
/*
|
|
===========================================================================
|
|
|
|
Doom 3 GPL Source Code
|
|
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
|
|
|
This file is part of the Doom 3 GPL Source Code ("Doom 3 Source Code").
|
|
|
|
Doom 3 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 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 Source Code. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
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.
|
|
|
|
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 __USERCMDGEN_H__
|
|
#define __USERCMDGEN_H__
|
|
|
|
/*
|
|
===============================================================================
|
|
|
|
Samples a set of user commands from player input.
|
|
|
|
===============================================================================
|
|
*/
|
|
|
|
//const int USERCMD_HZ = 60;
|
|
//const int USERCMD_MSEC = 1000 / USERCMD_HZ;
|
|
|
|
#define USERCMD_MSEC (1000 / (renderSystem ? renderSystem->GetRefresh() : 60))
|
|
|
|
// usercmd_t->button bits
|
|
const int BUTTON_ATTACK = BIT(0);
|
|
const int BUTTON_RUN = BIT(1);
|
|
const int BUTTON_ZOOM = BIT(2);
|
|
const int BUTTON_SCORES = BIT(3);
|
|
const int BUTTON_MLOOK = BIT(4);
|
|
const int BUTTON_JUMP = BIT(5);
|
|
const int BUTTON_CROUCH = BIT(6);
|
|
const int BUTTON_USE = BIT(7);
|
|
|
|
// usercmd_t->impulse commands
|
|
const int IMPULSE_0 = 0; // weap 0
|
|
const int IMPULSE_1 = 1; // weap 1
|
|
const int IMPULSE_2 = 2; // weap 2
|
|
const int IMPULSE_3 = 3; // weap 3
|
|
const int IMPULSE_4 = 4; // weap 4
|
|
const int IMPULSE_5 = 5; // weap 5
|
|
const int IMPULSE_6 = 6; // weap 6
|
|
const int IMPULSE_7 = 7; // weap 7
|
|
const int IMPULSE_8 = 8; // weap 8
|
|
const int IMPULSE_9 = 9; // weap 9
|
|
const int IMPULSE_10 = 10; // weap 10
|
|
const int IMPULSE_11 = 11; // weap 11
|
|
const int IMPULSE_12 = 12; // weap 12
|
|
const int IMPULSE_13 = 13; // weap reload
|
|
const int IMPULSE_14 = 14; // weap next
|
|
const int IMPULSE_15 = 15; // weap prev
|
|
const int IMPULSE_16 = 16; // <unused>
|
|
const int IMPULSE_17 = 17; // ready to play ( toggles ui_ready )
|
|
const int IMPULSE_18 = 18; // center view
|
|
const int IMPULSE_19 = 19; // show PDA/INV/MAP
|
|
const int IMPULSE_20 = 20; // toggle team ( toggles ui_team )
|
|
const int IMPULSE_21 = 21; // <unused>
|
|
const int IMPULSE_22 = 22; // spectate
|
|
const int IMPULSE_23 = 23; // <unused>
|
|
const int IMPULSE_24 = 24; // <unused>
|
|
const int IMPULSE_25 = 25; // <unused>
|
|
const int IMPULSE_26 = 26; // Carl: Fists
|
|
const int IMPULSE_27 = 27; // Chainsaw
|
|
const int IMPULSE_28 = 28; // quick 0
|
|
const int IMPULSE_29 = 29; // quick 1
|
|
const int IMPULSE_30 = 30; // quick 2
|
|
const int IMPULSE_31 = 31; // quick 3
|
|
|
|
// Koz
|
|
const int IMPULSE_32 = 32; // reset HMD/Body orientation
|
|
const int IMPULSE_33 = 33; // toggle lasersight
|
|
const int IMPULSE_34 = 34; // comfort turn right
|
|
const int IMPULSE_35 = 35; // comfort turn left
|
|
const int IMPULSE_36 = 36; // toggle hud
|
|
const int IMPULSE_37 = 37; // toggle headingbeam
|
|
const int IMPULSE_38 = 38; // walk in place
|
|
const int IMPULSE_39 = 39; // freelook
|
|
const int IMPULSE_40 = 40; // Vehicle
|
|
const int IMPULSE_41 = 41; // click to move
|
|
// Koz end
|
|
const int IMPULSE_44 = 44; // Carl: computer, freeze program
|
|
const int IMPULSE_PAUSE = IMPULSE_44;
|
|
const int IMPULSE_45 = 45; // Carl: computer, resume program
|
|
const int IMPULSE_RESUME = IMPULSE_45;
|
|
|
|
// usercmd_t->flags
|
|
const int UCF_IMPULSE_SEQUENCE = 0x0001; // toggled every time an impulse command is sent
|
|
|
|
class usercmd_t {
|
|
public:
|
|
int gameFrame; // frame number
|
|
int gameTime; // game time
|
|
int duplicateCount; // duplication count for networking
|
|
byte buttons; // buttons
|
|
signed char forwardmove; // forward/backward movement
|
|
signed char rightmove; // left/right movement
|
|
signed char upmove; // up/down movement
|
|
short angles[3]; // view angles
|
|
short mx; // mouse delta x
|
|
short my; // mouse delta y
|
|
signed char impulse; // impulse command
|
|
byte flags; // additional flags
|
|
int sequence; // just for debugging
|
|
|
|
public:
|
|
void ByteSwap(); // on big endian systems, byte swap the shorts and ints
|
|
bool operator==( const usercmd_t &rhs ) const;
|
|
};
|
|
|
|
typedef enum {
|
|
INHIBIT_SESSION = 0,
|
|
INHIBIT_ASYNC
|
|
} inhibit_t;
|
|
|
|
const int MAX_BUFFERED_USERCMD = 64;
|
|
|
|
class idUsercmdGen {
|
|
public:
|
|
virtual ~idUsercmdGen( void ) {}
|
|
|
|
// Sets up all the cvars and console commands.
|
|
virtual void Init( void ) = 0;
|
|
|
|
// Prepares for a new map.
|
|
virtual void InitForNewMap( void ) = 0;
|
|
|
|
// Shut down.
|
|
virtual void Shutdown( void ) = 0;
|
|
|
|
// Clears all key states and face straight.
|
|
virtual void Clear( void ) = 0;
|
|
|
|
// Clears view angles.
|
|
virtual void ClearAngles( void ) = 0;
|
|
|
|
// When the console is down or the menu is up, only emit default usercmd, so the player isn't moving around.
|
|
// Each subsystem (session and game) may want an inhibit will OR the requests.
|
|
virtual void InhibitUsercmd( inhibit_t subsystem, bool inhibit ) = 0;
|
|
|
|
// Returns a buffered command for the given game tic.
|
|
virtual usercmd_t TicCmd( int ticNumber ) = 0;
|
|
|
|
// Called async at regular intervals.
|
|
virtual void UsercmdInterrupt( void ) = 0;
|
|
|
|
// Set a value that can safely be referenced by UsercmdInterrupt() for each key binding.
|
|
virtual int CommandStringUsercmdData( const char *cmdString ) = 0;
|
|
|
|
// Returns the number of user commands.
|
|
virtual int GetNumUserCommands( void ) = 0;
|
|
|
|
// Returns the name of a user command via index.
|
|
virtual const char *GetUserCommandName( int index ) = 0;
|
|
|
|
// Continuously modified, never reset. For full screen guis.
|
|
virtual void MouseState( int *x, int *y, int *button, bool *down ) = 0;
|
|
|
|
// Directly sample a button.
|
|
virtual int ButtonState( int key ) = 0;
|
|
|
|
// Directly sample a keystate.
|
|
virtual int KeyState( int key ) = 0;
|
|
|
|
// Directly sample a usercmd.
|
|
virtual usercmd_t GetDirectUsercmd( void ) = 0;
|
|
};
|
|
|
|
extern idUsercmdGen *usercmdGen;
|
|
|
|
#endif /* !__USERCMDGEN_H__ */
|