2dkg/2dgk_6/2dgk_6/KInput.h

39 lines
1000 B
C++

#pragma once
#include <SDL_events.h>
#include <vector>
#include "GamePad.h"
namespace KapitanGame {
enum class Controllers : int {
Controller1,
Controller2,
Controller3,
Controller4
};
class KInput {
std::vector<SDL_GameController*> ConnectedControllers;
std::vector<GamePad> ControllerInputs;
std::vector<GamePad> LastControllerInputs;
std::vector<Uint8> KeyboardInputs;
std::vector<Uint8> LastKeyboardInputs;
int GamepadsCount;
bool Initialized;
public:
KInput();
void Init();
void Free();
void HandleInputPreEvents();
void HandleInputPostEvents();
void HandleEvent(const SDL_Event& event);
bool IsControllerButtonPressed(Controllers controllerId, SDL_GameControllerButton button);
bool IsControllerButtonHeld(Controllers controllerId, SDL_GameControllerButton button);
float GetControllerAxis(Controllers controllerId, SDL_GameControllerAxis axis);
bool IsKeyboardButtonHeld(Uint8 scanCode);
bool IsKeyboardButtonPressed(Uint8 scanCode);
};
}