MultiSpaccSDK/LibMultiSpacc/LibMultiSpacc/Keys.h

132 lines
4.1 KiB
C

#ifndef _MultiSpacc_Keys_h_
#define _MultiSpacc_Keys_h_
#ifdef __cplusplus
extern "C" {
#endif
#if defined(MultiSpacc_Target_SDL12)
#define MultiSpacc_SDLK_ESCAPE SDLK_ESCAPE
#define MultiSpacc_SDLK_RETURN SDLK_RETURN
#define MultiSpacc_SDLK_TAB SDLK_TAB
#define MultiSpacc_SDLK_UP SDLK_UP
#define MultiSpacc_SDLK_DOWN SDLK_DOWN
#define MultiSpacc_SDLK_LEFT SDLK_LEFT
#define MultiSpacc_SDLK_RIGHT SDLK_RIGHT
#elif defined(MultiSpacc_Target_SDL20)
#define MultiSpacc_SDLK_ESCAPE SDL_SCANCODE_ESCAPE
#define MultiSpacc_SDLK_RETURN SDL_SCANCODE_RETURN
#define MultiSpacc_SDLK_TAB SDL_SCANCODE_TAB
#define MultiSpacc_SDLK_UP SDL_SCANCODE_UP
#define MultiSpacc_SDLK_DOWN SDL_SCANCODE_DOWN
#define MultiSpacc_SDLK_LEFT SDL_SCANCODE_LEFT
#define MultiSpacc_SDLK_RIGHT SDL_SCANCODE_RIGHT
#endif
#if defined(MultiSpacc_Target_Switch) && defined(MultiSpacc_Target_SDLCommon)
#define JOY_A 0
#define JOY_B 1
#define JOY_X 2
#define JOY_Y 3
#define JOY_PLUS 10
#define JOY_MINUS 11
#define JOY_LEFT 12
#define JOY_UP 13
#define JOY_RIGHT 14
#define JOY_DOWN 15
#endif
// Action1
#if defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Action1 PAD_A
#endif
// Action2
#if defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Action2 PAD_B
#endif
// Confirm
#if defined(MultiSpacc_Target_SDLCommon) && (defined(MultiSpacc_Target_PC) || defined(MultiSpacc_Target_Web))
#define MultiSpacc_Key_Confirm MultiSpacc_SDLK_RETURN
#elif defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Confirm PAD_A
#endif
// Cancel
#if defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Cancel PAD_B
#endif
// Start
#if defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Start PAD_START
#endif
// Pause
#if defined(MultiSpacc_Target_SDLCommon) && (defined(MultiSpacc_Target_PC) || defined(MultiSpacc_Target_Web))
#define MultiSpacc_Key_Pause MultiSpacc_SDLK_ESCAPE
#elif defined(MultiSpacc_Target_SDLCommon) && defined(MultiSpacc_Target_Switch)
#define MultiSpacc_Key_Pause JOY_PLUS
#elif defined(MultiSpacc_Target_NDS)
#define MultiSpacc_Key_Pause KEY_START
#elif defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Pause PAD_START
#endif
// Select
#if defined(MultiSpacc_Target_SDLCommon) && (defined(MultiSpacc_Target_PC) || defined(MultiSpacc_Target_Web))
#define MultiSpacc_Key_Select MultiSpacc_SDLK_TAB
#elif defined(MultiSpacc_Target_NDS)
#define MultiSpacc_Key_Select KEY_SELECT
#elif defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Select PAD_SELECT
#endif
// Directions
#if defined(MultiSpacc_Target_SDLCommon) && (defined(MultiSpacc_Target_PC) || defined(MultiSpacc_Target_Web))
#define MultiSpacc_Key_Up MultiSpacc_SDLK_UP
#define MultiSpacc_Key_Down MultiSpacc_SDLK_DOWN
#define MultiSpacc_Key_Left MultiSpacc_SDLK_LEFT
#define MultiSpacc_Key_Right MultiSpacc_SDLK_RIGHT
#elif defined(MultiSpacc_Target_NDS)
#define MultiSpacc_Key_Up KEY_UP
#define MultiSpacc_Key_Down KEY_DOWN
#define MultiSpacc_Key_Left KEY_LEFT
#define MultiSpacc_Key_Right KEY_RIGHT
#elif defined(MultiSpacc_Target_NES)
#define MultiSpacc_Key_Up PAD_UP
#define MultiSpacc_Key_Down PAD_DOWN
#define MultiSpacc_Key_Left PAD_LEFT
#define MultiSpacc_Key_Right PAD_RIGHT
#endif
#if defined(MultiSpacc_Target_SDLCommon) && (defined(MultiSpacc_Target_PC) || defined(MultiSpacc_Target_Web))
// #define MultiSpacc_Key_Action1 SPACE
// #define MultiSpacc_Key_Action2 SHIFT
// #define MultiSpacc_Key_Cancel ESC
#endif
typedef struct MultiSpacc_KeysStates {
#if defined(MultiSpacc_Target_SDLCommon)
Uint8 *keysPressed;
const Uint8 *keysHeld;
#elif defined(MultiSpacc_Target_NDS)
int keysPressed;
int keysHeld;
#elif defined(MultiSpacc_Target_NES)
char keysPressed;
char keysHeld;
#endif
} MultiSpacc_KeysStates;
void MultiSpacc_PollButtons( char pad, MultiSpacc_KeysStates *keysStates );
bool MultiSpacc_CheckKeyPress( int key, MultiSpacc_KeysStates *keysStates );
bool MultiSpacc_CheckKeyHold( int key, MultiSpacc_KeysStates *keysStates );
#ifdef __cplusplus
}
#endif
#endif // _MultiSpacc_Keys_h_