mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
166 lines
3.6 KiB
C++
166 lines
3.6 KiB
C++
/*
|
|
* Descent 3
|
|
* Copyright (C) 2024 Parallax 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 3 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, see <http://www.gnu.org/licenses/>.
|
|
|
|
--- HISTORICAL COMMENTS FOLLOW ---
|
|
|
|
* $Logfile: /DescentIII/Main/Lib/joystick.h $
|
|
* $Revision: 11 $
|
|
* $Date: 10/21/99 9:27p $
|
|
* $Author: Jeff $
|
|
*
|
|
* Joystick interface.
|
|
*
|
|
* $Log: /DescentIII/Main/Lib/joystick.h $
|
|
*
|
|
* 11 10/21/99 9:27p Jeff
|
|
* B.A. Macintosh code merge
|
|
*
|
|
* 10 7/28/99 3:19p Kevin
|
|
* Mac Stuff
|
|
*
|
|
* 9 7/26/99 11:59a Samir
|
|
* add code to get name of joystick
|
|
*
|
|
* 8 7/16/99 11:14a Samir
|
|
* multiple hat support and improved direct input support.
|
|
*
|
|
* 7 4/09/99 12:02p Samir
|
|
* joystick changes (Win32 DirectInput support)
|
|
*
|
|
* 6 6/18/98 4:49p Samir
|
|
* modified for better mouse support?
|
|
*
|
|
* 5 6/02/98 4:37p Samir
|
|
* multiple joysticks supported.
|
|
*
|
|
* 4 6/01/98 4:27p Samir
|
|
* pov may return multiple positions.
|
|
*
|
|
* 3 12/05/97 12:49p Samir
|
|
* New POV constants.
|
|
*
|
|
* 2 12/03/97 7:33p Samir
|
|
* Newer joystick library.
|
|
*
|
|
* 1 11/24/97 3:27p Samir
|
|
* Initial revision
|
|
*
|
|
* $NoKeywords: $
|
|
*/
|
|
|
|
#ifndef JOYSTICK_H
|
|
#define JOYSTICK_H
|
|
|
|
#include <cstdint>
|
|
|
|
// joystick ids. used to initialize a stick and get its position
|
|
#define MAX_JOYSTICKS 8
|
|
#define JOYPOV_NUM 4
|
|
|
|
// these flags tell what axes these controllers control.
|
|
#define JOYFLAG_XVALID 1
|
|
#define JOYFLAG_YVALID 2
|
|
#define JOYFLAG_ZVALID 4
|
|
#define JOYFLAG_RVALID 8
|
|
#define JOYFLAG_UVALID 16
|
|
#define JOYFLAG_VVALID 32
|
|
#define JOYFLAG_POVVALID 64
|
|
#define JOYFLAG_POV2VALID 128
|
|
#define JOYFLAG_POV3VALID 256
|
|
#define JOYFLAG_POV4VALID 512
|
|
|
|
// set in joystate.pov
|
|
#define JOYPOV_DIR 8
|
|
#define JOYPOV_MAXVAL 0x100
|
|
#define JOYPOV_UP 0
|
|
#define JOYPOV_RIGHT 0x40
|
|
#define JOYPOV_DOWN 0x80
|
|
#define JOYPOV_LEFT 0xc0
|
|
#define JOYPOV_CENTER 0xff
|
|
|
|
#define JOYAXIS_RANGE 256
|
|
|
|
typedef int tJoystick;
|
|
|
|
#define JOYSTICK_1 0
|
|
#define JOYSTICK_2 1
|
|
#define JOYSTICK_3 2
|
|
#define JOYSTICK_4 3
|
|
#define JOYSTICK_5 4
|
|
#define JOYSTICK_6 5
|
|
#define JOYSTICK_7 6
|
|
#define JOYSTICK_8 7
|
|
|
|
struct tJoyInfo {
|
|
char name[128];
|
|
unsigned axes_mask;
|
|
unsigned num_btns;
|
|
int minx, maxx;
|
|
int miny, maxy;
|
|
int minz, maxz;
|
|
int minr, maxr;
|
|
int minu, maxu;
|
|
int minv, maxv;
|
|
};
|
|
|
|
// shared between joystick remote server and local client.
|
|
#define JOY_PORT 3192
|
|
#define JOY_REQTERM "RTRM"
|
|
#define JOY_TERM "TERM"
|
|
#define JOY_POS "POSI"
|
|
#define JOY_INFO "INFO"
|
|
#define JOY_POLL "POLL"
|
|
|
|
struct tJoyPacket {
|
|
char coda[4]; // used to identify packet
|
|
char buf[128];
|
|
};
|
|
|
|
struct tJoyPos {
|
|
int x;
|
|
int y;
|
|
int z;
|
|
int r;
|
|
int u;
|
|
int v;
|
|
unsigned buttons;
|
|
unsigned btn;
|
|
unsigned pov[JOYPOV_NUM];
|
|
};
|
|
|
|
// joystick system initialization
|
|
bool joy_Init(bool emulation);
|
|
void joy_Close();
|
|
|
|
// retreive information about joystick.
|
|
void joy_GetJoyInfo(tJoystick joy, tJoyInfo *info);
|
|
|
|
// retreive position of joystick
|
|
void joy_GetPos(tJoystick joy, tJoyPos *pos);
|
|
|
|
// retreive uncalibrated position of joystick
|
|
void joy_GetRawPos(tJoystick joy, tJoyPos *pos);
|
|
|
|
// returns true if joystick valid
|
|
bool joy_IsValid(tJoystick joy);
|
|
|
|
// run by ddio_Frame
|
|
void ddio_InternalJoyFrame();
|
|
|
|
// DAJ Added to support InSprocket
|
|
#endif
|