mirror of
https://github.com/GeekJoystick/game-and-watch-game-engine.git
synced 2025-12-17 01:16:10 +01:00
83 lines
1.8 KiB
C++
83 lines
1.8 KiB
C++
#ifndef INPUT_H
|
|
#define INPUT_H
|
|
#include "Defines.h"
|
|
#include "KeyState.h"
|
|
|
|
class Input{
|
|
public:
|
|
/**
|
|
* Returns a KeyState object containing the
|
|
* current state of the buttons
|
|
*/
|
|
static KeyState GetButtons(){
|
|
KeyState state;
|
|
#ifdef DESKTOP
|
|
SDL_Event event;
|
|
while (SDL_PollEvent(&event)) {
|
|
if (event.type == SDL_WINDOWEVENT){
|
|
if (event.window.event == SDL_WINDOWEVENT_CLOSE){
|
|
state.End = true;
|
|
}
|
|
}
|
|
if (event.type == SDL_KEYDOWN) {
|
|
switch (event.key.keysym.sym) {
|
|
case SDLK_UP:
|
|
state.Up = true;
|
|
break;
|
|
case SDLK_DOWN:
|
|
state.Down = true;
|
|
break;
|
|
case SDLK_LEFT:
|
|
state.Left = true;
|
|
break;
|
|
case SDLK_RIGHT:
|
|
state.Right = true;
|
|
break;
|
|
case SDLK_x:
|
|
state.A = true;
|
|
break;
|
|
case SDLK_c:
|
|
state.B = true;
|
|
break;
|
|
case SDLK_BACKSPACE:
|
|
state.Game = true;
|
|
break;
|
|
case SDLK_RETURN:
|
|
state.Pause = true;
|
|
break;
|
|
case SDLK_RSHIFT:
|
|
state.Time = true;
|
|
break;
|
|
case SDLK_ESCAPE:
|
|
state.End = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
#ifdef GAMENWATCH
|
|
uint32_t buttons = buttons_get();
|
|
if (buttons & B_Up)
|
|
state.Up = true;
|
|
if (buttons & B_Down)
|
|
state.Down = true;
|
|
if (buttons & B_Left)
|
|
state.Left = true;
|
|
if (buttons & B_Right)
|
|
state.Right = true;
|
|
if (buttons & B_A)
|
|
state.A = true;
|
|
if (buttons & B_B)
|
|
state.B = true;
|
|
if (buttons & B_GAME)
|
|
state.Game = true;
|
|
if (buttons & B_PAUSE)
|
|
state.Pause = true;
|
|
if (buttons & B_TIME)
|
|
state.Time = true;
|
|
#endif
|
|
return state;
|
|
}
|
|
};
|
|
|
|
#endif |