- [NEW] Mogut tot el codi de lloc
This commit is contained in:
111
source/japi/input.cpp
Normal file
111
source/japi/input.cpp
Normal file
@@ -0,0 +1,111 @@
|
||||
#include "input.h"
|
||||
#include <SDL3/SDL.h>
|
||||
#include "draw.h"
|
||||
|
||||
namespace input
|
||||
{
|
||||
static const bool *keys = nullptr;
|
||||
static uint8_t keypressed = 0;
|
||||
static uint8_t keydown = 0;
|
||||
static uint8_t btnClicked = 0;
|
||||
static int wheel = 0;
|
||||
|
||||
void init()
|
||||
{
|
||||
keys = SDL_GetKeyboardState(NULL);
|
||||
}
|
||||
|
||||
// Determina si la tecla especificada està sent polsada ara mateix
|
||||
bool keyDown(const uint8_t key)
|
||||
{
|
||||
return keys[key];
|
||||
}
|
||||
|
||||
// Determina si la tecla especificada ha sigut polsada, pero no tornarà a ser true fins
|
||||
bool keyPressed(const uint8_t key)
|
||||
{
|
||||
return key == keypressed;
|
||||
}
|
||||
|
||||
// Determina si hi ha alguna tecla polsada ara mateix
|
||||
bool anyKey()
|
||||
{
|
||||
return keydown != 0;
|
||||
}
|
||||
|
||||
bool anyKeyPressed()
|
||||
{
|
||||
return keypressed != 0;
|
||||
}
|
||||
|
||||
// Torna el codi de la tecla que està sent polsada ara mateix
|
||||
const uint8_t whichKey()
|
||||
{
|
||||
return keydown;
|
||||
}
|
||||
|
||||
// Torna el codi de la tecla que està sent polsada ara mateix
|
||||
const uint8_t getKeyPressed()
|
||||
{
|
||||
return keypressed;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza la tecla actualment polsada (keydown) desde jgame
|
||||
void updateKey(const uint8_t key)
|
||||
{
|
||||
keydown = key;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza la tecla actualment polsada (keypress) desde jgame
|
||||
void updateKeypressed(const uint8_t key)
|
||||
{
|
||||
keypressed = key;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza el botó del ratolí actualment polsat desde jgame
|
||||
void updateClk(const uint8_t btn)
|
||||
{
|
||||
btnClicked = btn;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza el valor de la roda del ratolí actual desde jgame
|
||||
void updateWheel(const int dy)
|
||||
{
|
||||
wheel = dy;
|
||||
}
|
||||
|
||||
// Torna la posició X actual del ratolí
|
||||
const int mouseX()
|
||||
{
|
||||
float x;
|
||||
SDL_GetMouseState(&x, NULL);
|
||||
return (x-draw::getOffsetX())/draw::getScaleX();
|
||||
}
|
||||
|
||||
// Torna la posició Y actual del ratolí
|
||||
const int mouseY()
|
||||
{
|
||||
float y;
|
||||
SDL_GetMouseState(NULL, &y);
|
||||
return (y-draw::getOffsetY())/draw::getScaleY();
|
||||
}
|
||||
|
||||
// Determina si el botó del ratolí especificat està sent polsada ara mateix
|
||||
const bool mouseBtn(const int btn)
|
||||
{
|
||||
return (SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_MASK(btn));
|
||||
}
|
||||
|
||||
// Determina si el botó especificat ha sigut polsat, pero no tornarà a ser true fins
|
||||
// que no se solte el botó i se torne a polsar (Equivalent a keypress en tecles).
|
||||
const bool mouseClk(const int btn)
|
||||
{
|
||||
return btnClicked == btn;
|
||||
}
|
||||
|
||||
// Obté el valor actual de la rodeta del ratolí
|
||||
const int mouseWheel()
|
||||
{
|
||||
return wheel;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user