+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2023 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
//\r
// ID Engine\r
// ID_IN.h - Header file for Input Manager\r
#include <string.h>\r
#include "src/lib/16_head.h"\r
#include "src/lib/16_timer.h"\r
-#ifdef __WATCOMC__ //borland C BCEXMM.EXE\r
#include "src/lib/16_dbg.h"\r
+#ifdef __WATCOMC__ //borland C BCEXMM.EXE\r
#include "src/lib/16_spri.h"\r
#include "src/lib/16_enti.h"\r
#endif\r
#define key_LSuper 0x5b\r
#define key_RSuper 0x5c\r
#define key_Menu 0x5d\r
+#define sc_LBrkt 0x1a // [\r
+#define sc_RBrkt 0x1b // ]\r
+#define sc_BackSlash 0x2b // |\r
+#define sc_ForeSlash 0x35 // / ?\r
\r
// Stuff for the mouse\r
-#define MReset 0\r
+//moved to 16_tdef.h\r
+/*#define MReset 0\r
#define MButtons 3\r
#define MDelta 11\r
\r
-#define MouseInt 0x33\r
+#define MouseInt 0x33*/\r
+#define Mouse(x) _AX = x,geninterrupt(MouseInt)\r
+\r
#ifdef DEMO0\r
typedef enum {\r
demo_Off,demo_Record,demo_Playback,demo_PlayDone\r
#endif\r
\r
// Internal routines\r
-extern void IN_Startup(void),IN_Shutdown(void),\r
- IN_Default(boolean gotit,player_t *player,ControlType nt),\r
+extern void IN_Startup(global_game_variables_t *gvar),IN_Shutdown(global_game_variables_t *gvar),\r
+ IN_Default(boolean gotit,player_t *player,ControlType nt, global_game_variables_t *gvar),\r
IN_SetKeyHook(void (*)()),\r
IN_ClearKeysDown(void),\r
- IN_ReadCursor(CursorInfo *),\r
- IN_ReadControl(player_t *player),\r
+ IN_ReadCursor(CursorInfo *, global_game_variables_t *gvar),\r
+ IN_ReadControl(player_t *player, global_game_variables_t *gvar),\r
IN_SetControlType(player_t *player,ControlType type),\r
IN_GetJoyAbs(word joy,word *xp,word *yp),\r
IN_SetupJoy(word joy,word minx,word maxx,\r
- word miny,word maxy),\r
+ word miny,word maxy, global_game_variables_t *gvar),\r
#if DEMO0\r
IN_StopDemo(void),IN_FreeDemoBuffer(void),\r
#endif\r
- IN_Ack(void),IN_AckBack(void);\r
-extern boolean IN_UserInput(word delay);\r
+ IN_Ack(global_game_variables_t *gvar),IN_AckBack(void);\r
+extern boolean IN_UserInput(word delay, global_game_variables_t *gvar);\r
extern char IN_WaitForASCII(void);\r
extern ScanCode IN_WaitForKey(void);\r
extern word IN_GetJoyButtonsDB(word joy);\r
extern byte *IN_GetScanName(ScanCode);\r
\r
\r
-byte IN_MouseButtons (void);\r
-byte IN_JoyButtons (void);\r
+byte IN_MouseButtons (global_game_variables_t *gvar);\r
+word IN_JoyButtons (void);\r
\r
-void INL_GetJoyDelta(word joy,int *dx,int *dy/*,boolean adaptive*/);\r
-void IN_StartAck(void);\r
-boolean IN_CheckAck (void);\r
-boolean IN_IsUserInput();\r
-#define Mouse(x) INL_Mouse(x)\r
-//void IN_SetKeyHook(void (*hook)());\r
+void INL_GetJoyDelta(word joy,int *dx,int *dy/*,boolean adaptive*/, global_game_variables_t *gvar);\r
+void IN_StartAck(global_game_variables_t *gvar);\r
+boolean IN_CheckAck (global_game_variables_t *gvar);\r
+boolean IN_IsUserInput(global_game_variables_t *gvar);\r
#if DEMO0\r
boolean IN_StartDemoRecord(word bufsize);\r
void IN_StartDemoPlayback(byte *buffer,word bufsize);\r
void IN_FreeDemoBuffer(void);\r
#endif\r
\r
-boolean IN_KeyDown(byte code),\r
- IN_qb(byte kee);\r
+//boolean IN_KeyDown(byte code),\r
+// IN_qb(byte kee);\r
void IN_ClearKey(byte code),\r
IN_KbdLED();\r
ScanCode IN_GetLastScan(),\r