Controllers are working

Still needs some tweaks and some gui changes.
Also stumbled upon a bug.
This commit is contained in:
Linus Probert 2018-10-11 18:54:02 +02:00
parent 3143236908
commit 06d2da164a
4 changed files with 19 additions and 10 deletions

View File

@ -105,7 +105,7 @@ get_event_button(SDL_Event *event)
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
key = KEY_RIGHT; break;
case SDL_CONTROLLER_BUTTON_A:
key = KEY_NUM1 & KEY_ENTER; break;
key = KEY_NUM1 | KEY_ENTER; break;
case SDL_CONTROLLER_BUTTON_X:
key = KEY_NUM2; break;
case SDL_CONTROLLER_BUTTON_Y:
@ -115,7 +115,11 @@ get_event_button(SDL_Event *event)
case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
key = KEY_NUM5; break;
case SDL_CONTROLLER_BUTTON_START:
key = KEY_ENTER; break;
case SDL_CONTROLLER_BUTTON_BACK:
key = KEY_ESC; break;
case SDL_CONTROLLER_BUTTON_LEFTSTICK:
key = KEY_SPACE; break;
default:
key = 0; break;
}
@ -128,8 +132,6 @@ get_axis_motion(SDL_Event *event)
Uint64 key;
int angle = event->caxis.value;
switch (event->caxis.axis) {
case SDL_CONTROLLER_AXIS_TRIGGERRIGHT:
key = KEY_SPACE; break;
case SDL_CONTROLLER_AXIS_LEFTX:
key = angle < 0 ? KEY_LEFT : KEY_RIGHT; break;
case SDL_CONTROLLER_AXIS_LEFTY:
@ -140,6 +142,11 @@ get_axis_motion(SDL_Event *event)
return key;
}
static Uint32
get_button_modkey(SDL_Event *event) {
}
static Uint32
get_event_modkey(SDL_Event *event)
{
@ -221,7 +228,7 @@ input_handle_event(Input *input, SDL_Event *event)
input->keyState &= ~get_event_button(event);
}
else if (event->type == SDL_CONTROLLERAXISMOTION) {
if (event->caxis.value > 8000 || event->caxis.value < -8000)
if (event->caxis.value > 32000 || event->caxis.value < -32000)
input->keyState |= get_axis_motion(event);
else
input->keyState &= ~get_axis_motion(event);

View File

@ -87,9 +87,9 @@ static char *skills_tooltip[] = {
" Skills are listed in the bar below the game screen.", "",
"",
"",
" SKILL INFO: ", "SHIFT", " + <N>", "",
" Where <N> is the button corresponding to the skill",
" Eg. ", "1", "2", "3", "4", "5", "",
" SKILL INFO: SHIFT + <N>", "",
" Where <N> is the number corresponding to the skill", "",
" Eg. 1, 2, 3, 4, 5", "",
"",
" DISABLE TOOLTIPS: CTRL + D", "",
"",
@ -102,6 +102,7 @@ static char *how_to_play_tooltip[] = {
"HOW TO PLAY", "",
"",
" NAVIGATION: Use ARROWS or WASD or HJKL to move", "",
" Controller: RIGHT STICK or D-PAD", "",
"",
" ATTACK: Walk into a monster to attack it", "",
"",
@ -184,7 +185,7 @@ bool initSDL(void)
{
int imgFlags = IMG_INIT_PNG;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0)
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_GAMECONTROLLER) < 0)
{
error("Could not initiate SDL2: %s", SDL_GetError());
return false;
@ -216,7 +217,7 @@ bool initSDL(void)
gController = SDL_GameControllerOpen(i);
if (gController) {
info("Game controller connected");
info("Game controller connected: %s", SDL_GameControllerName(gController));
break;
}
}

View File

@ -659,7 +659,7 @@ skill_charge(Skill *skill, SkillData *data)
Position lastAvailableDest = playerStartPos;
while (position_in_roommatrix(&destination))
{
if (space->occupied) {
if (space->occupied || space->monster) {
if (!space->monster || passThroughCount >= chargeThroughLvl)
break;
else

View File

@ -43,6 +43,7 @@ create_controller_button_sprite(Position pos, SDL_Rect clip)
Sprite *s = sprite_create();
sprite_set_texture(s, t, 0);
s->pos = pos;
s->fixed = true;
s->clip = clip;
s->dim = DIM(16, 16);
return s;