rott/rott/rt_in.h

213 lines
4.8 KiB
C
Executable File

/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//***************************************************************************
//
// Public header for RT_IN.C.
//
//***************************************************************************
#ifndef _rt_in_public
#define _rt_in_public
#include "develop.h"
#include "rottnet.h"
//***************************************************************************
//
// DEFINES
//
//***************************************************************************
#define MAXLETTERS 32
//***************************************************************************
//
// TYPEDEFS
//
//***************************************************************************
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 byte ScanCode;
typedef enum
{
ctrl_Keyboard,
ctrl_Keyboard1 = ctrl_Keyboard, ctrl_Keyboard2,
ctrl_Joystick,
ctrl_Joystick1 = ctrl_Joystick, ctrl_Joystick2,
ctrl_Mouse
} ControlType;
typedef struct
{
boolean button0,
button1,
button2,
button3;
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;
typedef struct
{
boolean messageon;
boolean directed;
boolean inmenu;
int remoteridicule;
int towho;
int textnum;
int length;
} ModemMessage;
//***************************************************************************
//
// GLOBALS
//
//***************************************************************************
extern boolean MousePresent;
extern boolean JoysPresent[MaxJoys];
extern boolean JoyPadPresent;
extern int mouseadjustment;
extern int threshold;
extern boolean Paused;
extern volatile int LastScan;
/* extern KeyboardDef KbdDefs;
extern JoystickDef JoyDefs[];
extern ControlType Controls[MAXPLAYERS]; */
extern boolean SpaceBallPresent;
extern boolean CybermanPresent;
extern boolean AssassinPresent;
extern char LastASCII;
extern volatile int LastScan;
extern byte Joy_xb,
Joy_yb,
Joy_xs,
Joy_ys;
extern word Joy_x,
Joy_y;
extern int LastLetter;
extern char LetterQueue[MAXLETTERS];
extern ModemMessage MSG;
extern const char ScanChars[128];
//***************************************************************************
//
// PROTOTYPES
//
//***************************************************************************
void INL_GetMouseDelta(int *x,int *y);
word IN_GetMouseButtons (void);
void IN_IgnoreMouseButtons( void );
boolean INL_StartMouse (void);
void INL_ShutMouse (void);
void IN_Startup(void);
void IN_Default (boolean gotit, ControlType in);
void IN_Shutdown (void);
void IN_SetKeyHook(void (*hook)());
void IN_ClearKeysDown (void);
void IN_ReadControl (int player, ControlInfo *info);
void IN_SetControlType (int player, ControlType type);
ScanCode IN_WaitForKey (void);
char IN_WaitForASCII (void);
void IN_StartAck (void);
boolean IN_CheckAck (void);
void IN_Ack (void);
boolean IN_UserInput (long delay);
void IN_GetJoyAbs (word joy, word *xp, word *yp);
void INL_GetJoyDelta (word joy, int *dx, int *dy);
word INL_GetJoyButtons (word joy);
//word IN_GetJoyButtonsDB (word joy);
void INL_SetJoyScale (word joy);
void IN_SetupJoy (word joy, word minx, word maxx, word miny, word maxy);
boolean INL_StartJoy (word joy);
void INL_ShutJoy (word joy);
byte IN_JoyButtons (void);
void IN_UpdateKeyboard (void);
void IN_ClearKeyboardQueue (void);
int IN_InputUpdateKeyboard (void);
void IN_PumpEvents (void);
void QueueLetterInput (void);
#endif