123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- /* Catacomb Armageddon Source Code
- * Copyright (C) 1993-2014 Flat Rock Software
- *
- * This program 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 2 of 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 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 this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
- //
- // ID Engine
- // ID_IN.h - Header file for Input Manager
- // v1.0d1
- // By Jason Blochowiak
- //
- #ifndef __TYPES__
- #include "ID_Types.h"
- #endif
- #ifndef __ID_IN__
- #define __ID_IN__
- #ifdef __DEBUG__
- #define __DEBUG_InputMgr__
- #endif
- #define MaxPlayers 4
- #define MaxKbds 2
- #define MaxJoys 2
- #define NumCodes 128
- typedef byte ScanCode;
- #define sc_None 0
- #define sc_Bad 0xff
- #define sc_Return 0x1c
- #define sc_Enter sc_Return
- #define sc_Escape 0x01
- #define sc_Space 0x39
- #define sc_BackSpace 0x0e
- #define sc_Tab 0x0f
- #define sc_Alt 0x38
- #define sc_Control 0x1d
- #define sc_CapsLock 0x3a
- #define sc_LShift 0x2a
- #define sc_RShift 0x36
- #define sc_UpArrow 0x48
- #define sc_DownArrow 0x50
- #define sc_LeftArrow 0x4b
- #define sc_RightArrow 0x4d
- #define sc_Insert 0x52
- #define sc_Delete 0x53
- #define sc_Home 0x47
- #define sc_End 0x4f
- #define sc_PgUp 0x49
- #define sc_PgDn 0x51
- #define sc_F1 0x3b
- #define sc_F2 0x3c
- #define sc_F3 0x3d
- #define sc_F4 0x3e
- #define sc_F5 0x3f
- #define sc_F6 0x40
- #define sc_F7 0x41
- #define sc_F8 0x42
- #define sc_F9 0x43
- #define sc_F10 0x44
- #define sc_F11 0x57
- #define sc_F12 0x59
- #define sc_A 0x1e
- #define sc_B 0x30
- #define sc_C 0x2e
- #define sc_D 0x20
- #define sc_E 0x12
- #define sc_F 0x21
- #define sc_G 0x22
- #define sc_H 0x23
- #define sc_I 0x17
- #define sc_J 0x24
- #define sc_K 0x25
- #define sc_L 0x26
- #define sc_M 0x32
- #define sc_N 0x31
- #define sc_O 0x18
- #define sc_P 0x19
- #define sc_Q 0x10
- #define sc_R 0x13
- #define sc_S 0x1f
- #define sc_T 0x14
- #define sc_U 0x16
- #define sc_V 0x2f
- #define sc_W 0x11
- #define sc_X 0x2d
- #define sc_Y 0x15
- #define sc_Z 0x2c
- #define key_None 0
- #define key_Return 0x0d
- #define key_Enter key_Return
- #define key_Escape 0x1b
- #define key_Space 0x20
- #define key_BackSpace 0x08
- #define key_Tab 0x09
- #define key_Delete 0x7f
- // Stuff for the mouse
- #define MReset 0
- #define MButtons 3
- #define MDelta 11
- #define MouseInt 0x33
- #define Mouse(x) _AX = x,geninterrupt(MouseInt)
- typedef enum {
- demo_Off,demo_Record,demo_Playback,demo_PlayDone
- } Demo;
- typedef enum {
- ctrl_None, // MDM (GAMERS EDGE) - added
- ctrl_Keyboard,
- ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,
- ctrl_Joystick,
- ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,
- ctrl_Mouse
- } ControlType;
- typedef enum {
- motion_Left = -1,motion_Up = -1,
- motion_None = 0,
- motion_Right = 1,motion_Down = 1
- } Motion;
- typedef enum {
- dir_North,dir_NorthEast,
- dir_East,dir_SouthEast,
- dir_South,dir_SouthWest,
- dir_West,dir_NorthWest,
- dir_None
- } Direction;
- typedef struct {
- boolean button0,button1;
- int x,y;
- Motion xaxis,yaxis;
- Direction dir;
- } CursorInfo;
- typedef CursorInfo ControlInfo;
- typedef struct {
- ScanCode button0,button1,
- upleft, up, upright,
- left, right,
- downleft, down, downright;
- } KeyboardDef;
- typedef struct {
- word joyMinX,joyMinY,
- threshMinX,threshMinY,
- threshMaxX,threshMaxY,
- joyMaxX,joyMaxY,
- joyMultXL,joyMultYL,
- joyMultXH,joyMultYH;
- } JoystickDef;
- // Global variables
- extern boolean Keyboard[],
- MousePresent,
- JoysPresent[];
- extern boolean Paused;
- extern char LastASCII;
- extern ScanCode LastScan;
- extern KeyboardDef KbdDefs[];
- extern JoystickDef JoyDefs[];
- extern ControlType Controls[MaxPlayers];
- extern boolean JoystickCalibrated; // MDM (GAMERS EDGE) - added
- extern ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added
- extern Demo DemoMode;
- extern byte _seg *DemoBuffer;
- extern word DemoOffset,DemoSize;
- // Function prototypes
- #define IN_KeyDown(code) (Keyboard[(code)])
- #define IN_ClearKey(code) {Keyboard[code] = false;\
- if (code == LastScan) LastScan = sc_None;}
- // DEBUG - put names in prototypes
- extern void IN_Startup(void),IN_Shutdown(void),
- IN_Default(boolean gotit,ControlType in),
- IN_SetKeyHook(void (*)()),
- IN_ClearKeysDown(void),
- IN_ReadCursor(CursorInfo *),
- IN_ReadControl(int,ControlInfo *),
- IN_SetControlType(int,ControlType),
- IN_GetJoyAbs(word joy,word *xp,word *yp),
- IN_SetupJoy(word joy,word minx,word maxx,
- word miny,word maxy),
- IN_StartDemoPlayback(byte _seg *buffer,word bufsize),
- IN_StopDemo(void),IN_FreeDemoBuffer(void),
- IN_Ack(void),IN_AckBack(void);
- extern boolean IN_UserInput(longword delay,boolean clear),
- IN_IsUserInput(void),
- IN_StartDemoRecord(word bufsize);
- extern byte *IN_GetScanName(ScanCode);
- extern char IN_WaitForASCII(void);
- extern ScanCode IN_WaitForKey(void);
- extern word IN_GetJoyButtonsDB(word joy);
- #endif
|