home *** CD-ROM | disk | FTP | other *** search
/ 100 af Verdens Bedste Spil / 100Spil.iso / dos / wolf3d / source / wolfsrc.1 / ID_IN.H < prev    next >
C/C++ Source or Header  |  1993-02-04  |  5KB  |  203 lines

  1. //
  2. //    ID Engine
  3. //    ID_IN.h - Header file for Input Manager
  4. //    v1.0d1
  5. //    By Jason Blochowiak
  6. //
  7.  
  8. #ifndef    __ID_IN__
  9. #define    __ID_IN__
  10.  
  11. #ifdef    __DEBUG__
  12. #define    __DEBUG_InputMgr__
  13. #endif
  14.  
  15. #define    MaxPlayers    4
  16. #define    MaxKbds        2
  17. #define    MaxJoys        2
  18. #define    NumCodes    128
  19.  
  20. typedef    byte        ScanCode;
  21. #define    sc_None            0
  22. #define    sc_Bad            0xff
  23. #define    sc_Return        0x1c
  24. #define    sc_Enter        sc_Return
  25. #define    sc_Escape        0x01
  26. #define    sc_Space        0x39
  27. #define    sc_BackSpace    0x0e
  28. #define    sc_Tab            0x0f
  29. #define    sc_Alt            0x38
  30. #define    sc_Control        0x1d
  31. #define    sc_CapsLock        0x3a
  32. #define    sc_LShift        0x2a
  33. #define    sc_RShift        0x36
  34. #define    sc_UpArrow        0x48
  35. #define    sc_DownArrow    0x50
  36. #define    sc_LeftArrow    0x4b
  37. #define    sc_RightArrow    0x4d
  38. #define    sc_Insert        0x52
  39. #define    sc_Delete        0x53
  40. #define    sc_Home            0x47
  41. #define    sc_End            0x4f
  42. #define    sc_PgUp            0x49
  43. #define    sc_PgDn            0x51
  44. #define    sc_F1            0x3b
  45. #define    sc_F2            0x3c
  46. #define    sc_F3            0x3d
  47. #define    sc_F4            0x3e
  48. #define    sc_F5            0x3f
  49. #define    sc_F6            0x40
  50. #define    sc_F7            0x41
  51. #define    sc_F8            0x42
  52. #define    sc_F9            0x43
  53. #define    sc_F10            0x44
  54. #define    sc_F11            0x57
  55. #define    sc_F12            0x59
  56.  
  57. #define    sc_1            0x02
  58. #define    sc_2            0x03
  59. #define    sc_3            0x04
  60. #define    sc_4            0x05
  61. #define    sc_5            0x06
  62. #define    sc_6            0x07
  63. #define    sc_7            0x08
  64. #define    sc_8            0x09
  65. #define    sc_9            0x0a
  66. #define    sc_0            0x0b
  67.  
  68. #define    sc_A            0x1e
  69. #define    sc_B            0x30
  70. #define    sc_C            0x2e
  71. #define    sc_D            0x20
  72. #define    sc_E            0x12
  73. #define    sc_F            0x21
  74. #define    sc_G            0x22
  75. #define    sc_H            0x23
  76. #define    sc_I            0x17
  77. #define    sc_J            0x24
  78. #define    sc_K            0x25
  79. #define    sc_L            0x26
  80. #define    sc_M            0x32
  81. #define    sc_N            0x31
  82. #define    sc_O            0x18
  83. #define    sc_P            0x19
  84. #define    sc_Q            0x10
  85. #define    sc_R            0x13
  86. #define    sc_S            0x1f
  87. #define    sc_T            0x14
  88. #define    sc_U            0x16
  89. #define    sc_V            0x2f
  90. #define    sc_W            0x11
  91. #define    sc_X            0x2d
  92. #define    sc_Y            0x15
  93. #define    sc_Z            0x2c
  94.  
  95. #define    key_None        0
  96. #define    key_Return        0x0d
  97. #define    key_Enter        key_Return
  98. #define    key_Escape        0x1b
  99. #define    key_Space        0x20
  100. #define    key_BackSpace    0x08
  101. #define    key_Tab            0x09
  102. #define    key_Delete        0x7f
  103.  
  104. //     Stuff for the mouse
  105. #define    MReset        0
  106. #define    MButtons    3
  107. #define    MDelta        11
  108.  
  109. #define    MouseInt    0x33
  110. #define    Mouse(x)    _AX = x,geninterrupt(MouseInt)
  111.  
  112. typedef    enum        {
  113.                         demo_Off,demo_Record,demo_Playback,demo_PlayDone
  114.                     } Demo;
  115. typedef    enum        {
  116.                         ctrl_Keyboard,
  117.                             ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2,
  118.                         ctrl_Joystick,
  119.                             ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2,
  120.                         ctrl_Mouse
  121.                     } ControlType;
  122. typedef    enum        {
  123.                         motion_Left = -1,motion_Up = -1,
  124.                         motion_None = 0,
  125.                         motion_Right = 1,motion_Down = 1
  126.                     } Motion;
  127. typedef    enum        {
  128.                         dir_North,dir_NorthEast,
  129.                         dir_East,dir_SouthEast,
  130.                         dir_South,dir_SouthWest,
  131.                         dir_West,dir_NorthWest,
  132.                         dir_None
  133.                     } Direction;
  134. typedef    struct        {
  135.                         boolean        button0,button1,button2,button3;
  136.                         int            x,y;
  137.                         Motion        xaxis,yaxis;
  138.                         Direction    dir;
  139.                     } CursorInfo;
  140. typedef    CursorInfo    ControlInfo;
  141. typedef    struct        {
  142.                         ScanCode    button0,button1,
  143.                                     upleft,        up,        upright,
  144.                                     left,                right,
  145.                                     downleft,    down,    downright;
  146.                     } KeyboardDef;
  147. typedef    struct        {
  148.                         word        joyMinX,joyMinY,
  149.                                     threshMinX,threshMinY,
  150.                                     threshMaxX,threshMaxY,
  151.                                     joyMaxX,joyMaxY,
  152.                                     joyMultXL,joyMultYL,
  153.                                     joyMultXH,joyMultYH;
  154.                     } JoystickDef;
  155. // Global variables
  156. extern    boolean        Keyboard[],
  157.                     MousePresent,
  158.                     JoysPresent[];
  159. extern    boolean        Paused;
  160. extern    char        LastASCII;
  161. extern    ScanCode    LastScan;
  162. extern    KeyboardDef    KbdDefs;
  163. extern    JoystickDef    JoyDefs[];
  164. extern    ControlType    Controls[MaxPlayers];
  165.  
  166. extern    Demo        DemoMode;
  167. extern    byte _seg    *DemoBuffer;
  168. extern    word        DemoOffset,DemoSize;
  169.  
  170. // Function prototypes
  171. #define    IN_KeyDown(code)    (Keyboard[(code)])
  172. #define    IN_ClearKey(code)    {Keyboard[code] = false;\
  173.                             if (code == LastScan) LastScan = sc_None;}
  174.  
  175. // DEBUG - put names in prototypes
  176. extern    void        IN_Startup(void),IN_Shutdown(void),
  177.                     IN_Default(boolean gotit,ControlType in),
  178.                     IN_SetKeyHook(void (*)()),
  179.                     IN_ClearKeysDown(void),
  180.                     IN_ReadCursor(CursorInfo *),
  181.                     IN_ReadControl(int,ControlInfo *),
  182.                     IN_SetControlType(int,ControlType),
  183.                     IN_GetJoyAbs(word joy,word *xp,word *yp),
  184.                     IN_SetupJoy(word joy,word minx,word maxx,
  185.                                 word miny,word maxy),
  186.                     IN_StopDemo(void),IN_FreeDemoBuffer(void),
  187.                     IN_Ack(void),IN_AckBack(void);
  188. extern    boolean        IN_UserInput(longword delay);
  189. extern    char        IN_WaitForASCII(void);
  190. extern    ScanCode    IN_WaitForKey(void);
  191. extern    word        IN_GetJoyButtonsDB(word joy);
  192. extern    byte        *IN_GetScanName(ScanCode);
  193.  
  194.  
  195. byte    IN_MouseButtons (void);
  196. byte    IN_JoyButtons (void);
  197.  
  198. void INL_GetJoyDelta(word joy,int *dx,int *dy);
  199. void IN_StartAck(void);
  200. boolean IN_CheckAck (void);
  201.  
  202. #endif
  203.