⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _control.h

📁 game duke3d source
💻 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 + -