74 lines
2.1 KiB
C
74 lines
2.1 KiB
C
#include "./MultiSpacc.h"
|
|
|
|
void MultiSpacc_PollButtons( char pad, MultiSpacc_KeysStates *keysStates )
|
|
{
|
|
#if defined(MultiSpacc_Target_SDLCommon)
|
|
#if defined(MultiSpacc_Target_Switch) // WIP
|
|
keysStates->keysHeld = SDL_JoystickOpen(pad);
|
|
|
|
#else
|
|
int numkeys;
|
|
|
|
SDL_PumpEvents();
|
|
|
|
#if defined(MultiSpacc_Target_SDL12)
|
|
keysStates->keysHeld = SDL_GetKeyState(&numkeys);
|
|
#elif defined(MultiSpacc_Target_SDL20)
|
|
keysStates->keysHeld = SDL_GetKeyboardState(&numkeys);
|
|
#endif
|
|
|
|
if( keysStates->keysPressed == NULL )
|
|
{
|
|
keysStates->keysPressed = malloc( numkeys*sizeof(int) );
|
|
memset( (void*)keysStates->keysPressed, false, numkeys*sizeof(int) );
|
|
}
|
|
|
|
#endif
|
|
|
|
#elif defined(MultiSpacc_Target_NDS)
|
|
scanKeys();
|
|
keysStates->keysPressed = keysDown(); //keysHeld();
|
|
keysStates->keysHeld = keysStates->keysPressed;
|
|
|
|
#elif defined(MultiSpacc_Target_NES)
|
|
keysStates->keysPressed = pad_trigger(pad);
|
|
keysStates->keysHeld = pad_state(pad);
|
|
|
|
#endif
|
|
}
|
|
|
|
bool MultiSpacc_CheckKeyPress( int key, MultiSpacc_KeysStates *keysStates )
|
|
{
|
|
#if defined(MultiSpacc_Target_SDLCommon)
|
|
#if defined(MultiSpacc_Target_Switch) // WIP
|
|
return SDL_JoystickGetButton( keysStates->keysHeld, key );
|
|
#else
|
|
if ( keysStates->keysHeld[key] && !keysStates->keysPressed[key] )
|
|
{
|
|
keysStates->keysPressed[key] = true;
|
|
return true;
|
|
}
|
|
else if ( !keysStates->keysHeld[key] && keysStates->keysPressed[key] )
|
|
{
|
|
keysStates->keysPressed[key] = false;
|
|
}
|
|
return false;
|
|
#endif
|
|
#elif defined(MultiSpacc_Target_NDS) || defined(MultiSpacc_Target_NES)
|
|
return ( keysStates->keysPressed & key );
|
|
#endif
|
|
}
|
|
|
|
bool MultiSpacc_CheckKeyHold( int key, MultiSpacc_KeysStates *keysStates )
|
|
{
|
|
#if defined(MultiSpacc_Target_SDLCommon)
|
|
#if defined(MultiSpacc_Target_Switch)
|
|
return SDL_JoystickGetButton( keysStates->keysHeld, key );
|
|
#else
|
|
return keysStates->keysHeld[key];
|
|
#endif
|
|
#elif defined(MultiSpacc_Target_NDS) || defined(MultiSpacc_Target_NES)
|
|
return ( keysStates->keysHeld & key );
|
|
#endif
|
|
}
|