📄 _control.h
字号:
//-------------------------------------------------------------------------/*Copyright (C) 1996, 2003 - 3D Realms EntertainmentThis file is NOT part of Duke Nukem 3D version 1.5 - Atomic EditionHowever, it is either an older version of a file that is, or issome test code written during the development of Duke Nukem 3D.This file is provided purely for educational interest.Duke Nukem 3D is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of 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 ofMERCHANTABILITY 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 Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms*///-------------------------------------------------------------------------//****************************************************************************//// Private header for CONTROL.C////****************************************************************************#ifndef _control_private#define _control_private#ifdef __cplusplusextern "C" {#endif//****************************************************************************//// DEFINES////****************************************************************************#define BUTTON0_SCAN_1 sc_Space#define BUTTON0_SCAN_2 sc_Enter#define BUTTON0_SCAN_3 sc_kpad_Enter#define BUTTON1_SCAN sc_Escape#define AXISUNDEFINED 0x7f#define BUTTONUNDEFINED 0x7f#define KEYUNDEFINED 0x7f#define SENSITIVE 0x400//#define MINSENSITIVE 0x30#define THRESHOLD 0x200#define MINTHRESHOLD 0x80#define USERINPUTDELAY 200#define ResetMouse 0#define GetMouseButtons 3#define GetMouseDelta 11#define MouseInt 0x33#define JoyMax 0xa00#define MaxJoyValue 5000#define MINIMUMMOUSESENSITIVITY 0x1000#define DEFAULTMOUSESENSITIVITY 0x7000+MINIMUMMOUSESENSITIVITY#define CONTROL_NUM_FLAGS 64#define INSTANT_ONOFF 0#define TOGGLE_ONOFF 1#define MAXCONTROLVALUE 0x7fff// Maximum number of buttons for any controller#define MAXBUTTONS 32// Number of Mouse buttons#define MAXMOUSEBUTTONS 3// Number of Mouse Axes#define MAXMOUSEAXES 2// Number of JOY buttons#define MAXJOYBUTTONS 8// Number of JOY axes#define MAXJOYAXES 4// Number of GamePad axes#define MAXGAMEPADAXES 2// Number of axes#define MAXAXES 6// NORMAL axis scale#define NORMALAXISSCALE (65536)#define BUTTONSET(x,value) \ (\ ((x)>31) ?\ (CONTROL_ButtonState2 |= (value<<((x)-32))) :\ (CONTROL_ButtonState1 |= (value<<(x)))\ )#define BUTTONCLEAR(x) \ (\ ((x)>31) ?\ (CONTROL_ButtonState2 &= (~(1<<((x)-32)))) :\ (CONTROL_ButtonState1 &= (~(1<<(x))))\ )#define BUTTONHELDSET(x,value)\ (\ ((x)>31) ?\ (CONTROL_ButtonHeldState2 |= value<<((x)-32)) :\ (CONTROL_ButtonHeldState1 |= value<<(x))\ )#define LIMITCONTROL(x)\ {\ if ((*x)>MAXCONTROLVALUE) \ {\ (*x) = MAXCONTROLVALUE;\ }\ if ((*x)<-MAXCONTROLVALUE) \ {\ (*x) = -MAXCONTROLVALUE;\ }\ }#define SGN(x) \ ( ( (x) > 0 ) ? 1 : ( (x) < 0 ) ? -1 : 0 )//****************************************************************************//// TYPEDEFS////****************************************************************************typedef enum { motion_Left = -1, motion_Up = -1, motion_None = 0, motion_Right = 1, motion_Down = 1 } motion;typedef struct { int32 joyMinX; int32 joyMinY; int32 threshMinX; int32 threshMinY; int32 threshMaxX; int32 threshMaxY; int32 joyMaxX; int32 joyMaxY; int32 joyMultXL; int32 joyMultYL; int32 joyMultXH; int32 joyMultYH; } JoystickDef;// int32 ThrottleMin;// int32 RudderMin;// int32 ThrottlethreshMin;// int32 RudderthreshMin;// int32 ThrottlethreshMax;// int32 RudderthreshMax;// int32 ThrottleMax;// int32 RudderMax;// int32 ThrottleMultL;// int32 RudderMultL;// int32 ThrottleMultH;// int32 RudderMultH;/*typedef struct { byte active : 1; byte used : 1; byte toggle : 1; byte buttonheld : 1; byte cleared : 1; } controlflags;typedef struct { volatile byte active : 1; volatile byte used : 1; volatile byte toggle : 1; volatile byte buttonheld : 1; volatile byte cleared : 1; } controlflags;*/typedef struct { byte active ; byte used ; byte toggle ; byte buttonheld ; int32 cleared ; } controlflags;typedef struct { kb_scancode key1; kb_scancode key2; } controlkeymaptype;typedef struct { byte singleclicked; byte doubleclicked; word extra; } controlbuttontype;typedef struct { byte analogmap; byte minmap; byte maxmap; byte extra; } controlaxismaptype;typedef struct { int32 analog; int32 digital; } controlaxistype;//***************************************************************************//// PROTOTYPES////***************************************************************************void CONTROL_GetMouseDelta( int32 *x, int32 *y );byte CONTROL_GetMouseButtons( void );boolean CONTROL_StartMouse( void );void CONTROL_GetJoyAbs( int32 joy );void CONTROL_GetJoyDelta ( int32 joy, int32 *dx, int32 *dy, int32 *rudder, int32 *throttle );byte CONTROL_JoyButtons( int32 joy );void CONTROL_SetJoyScale( int32 joy );void CONTROL_SetupJoy ( int32 joy, int32 minx, int32 maxx, int32 miny, int32 maxy, int32 centerx, int32 centery );boolean CONTROL_StartJoy( int32 joy );void CONTROL_ShutJoy( int32 joy );void CONTROL_SetFlag( int32 which, boolean active );void CONTROL_ButtonFunctionState( boolean * state );boolean CONTROL_KeyboardFunctionPressed( int32 whichfunction );void CONTROL_CheckRange( int32 which );int32 CONTROL_GetTime( void );void CONTROL_AxisFunctionState ( boolean * state );void CONTROL_GetJoyMovement ( int32 joy, ControlInfo * info );#ifdef __cplusplus};#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -