gamepad fully working :)
This commit is contained in:
parent
cd9a5251e0
commit
647c6778e2
|
@ -1,3 +1,4 @@
|
|||
#include "gamepad.h"
|
||||
#include <gsa.h>
|
||||
|
||||
void init() {
|
||||
|
@ -23,5 +24,13 @@ void init() {
|
|||
}
|
||||
|
||||
void tick() {
|
||||
sprites[0].x += 1;
|
||||
i32 x, y;
|
||||
|
||||
x = sw_gamepads[0].button_down[SW_GAMEPAD_BUTTON_DPAD_LEFT] -
|
||||
sw_gamepads[0].button_down[SW_GAMEPAD_BUTTON_DPAD_RIGHT];
|
||||
y = sw_gamepads[0].button_down[SW_GAMEPAD_BUTTON_DPAD_UP] -
|
||||
sw_gamepads[0].button_down[SW_GAMEPAD_BUTTON_DPAD_DOWN];
|
||||
|
||||
maps[0].scrollx -= x;
|
||||
maps[0].scrolly -= y;
|
||||
}
|
||||
|
|
|
@ -1,17 +1,39 @@
|
|||
#ifndef GUARD_F8BB6BA29F6FB6745AF8B6E15CD1C086
|
||||
#define GUARD_F8BB6BA29F6FB6745AF8B6E15CD1C086
|
||||
|
||||
#include "gamepad.h"
|
||||
#include "types.h"
|
||||
|
||||
#define SW_MAX_GAMEPADS 4
|
||||
#define SW_MAX_GAMEPAD_AXES 4
|
||||
#define SW_MAX_GAMEPAD_BUTTONS 14
|
||||
#define SW_MAX_GAMEPAD_AXES 6
|
||||
#define SW_MAX_GAMEPAD_BUTTONS 15
|
||||
|
||||
#define SW_GAMEPAD_BUTTON_FACE_DOWN 0
|
||||
#define SW_GAMEPAD_BUTTON_FACE_RIGHT 1
|
||||
#define SW_GAMEPAD_BUTTON_FACE_LEFT 2
|
||||
#define SW_GAMEPAD_BUTTON_FACE_UP 3
|
||||
#define SW_GAMEPAD_BUTTON_LEFT_SHOULDER 4
|
||||
#define SW_GAMEPAD_BUTTON_RIGHT_SHOULDER 5
|
||||
#define SW_GAMEPAD_BUTTON_BACK 6
|
||||
#define SW_GAMEPAD_BUTTON_START 7
|
||||
#define SW_GAMEPAD_BUTTON_GUIDE 8
|
||||
#define SW_GAMEPAD_BUTTON_LEFT_STICK 9
|
||||
#define SW_GAMEPAD_BUTTON_RIGHT_STICK 10
|
||||
#define SW_GAMEPAD_BUTTON_DPAD_UP 11
|
||||
#define SW_GAMEPAD_BUTTON_DPAD_RIGHT 12
|
||||
#define SW_GAMEPAD_BUTTON_DPAD_DOWN 13
|
||||
#define SW_GAMEPAD_BUTTON_DPAD_LEFT 14
|
||||
|
||||
#define SW_GAMEPAD_AXIS_LEFT_X 0
|
||||
#define SW_GAMEPAD_AXIS_RIGHT_X 1
|
||||
#define SW_GAMEPAD_AXIS_LEFT_Y 2
|
||||
#define SW_GAMEPAD_AXIS_RIGHT_Y 3
|
||||
#define SW_GAMEPAD_AXIS_LEFT_TRIGGER 4
|
||||
#define SW_GAMEPAD_AXIS_RIGHT_TRIGGER 5
|
||||
|
||||
struct sw_gamepad {
|
||||
f32 axes[SW_MAX_GAMEPAD_AXES];
|
||||
bool button_down;
|
||||
bool button_pressed;
|
||||
bool button_down[SW_MAX_GAMEPAD_BUTTONS];
|
||||
bool button_pressed[SW_MAX_GAMEPAD_BUTTONS];
|
||||
};
|
||||
|
||||
extern struct sw_gamepad sw_gamepads[SW_MAX_GAMEPADS];
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "color32.h"
|
||||
#include "error.h"
|
||||
#include "file.h"
|
||||
#include "gamepad.h"
|
||||
#include "image32.h"
|
||||
#include "image8.h"
|
||||
#include "types.h"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "gamepad.h"
|
||||
#include "GLFW/glfw3.h"
|
||||
#include "error.h"
|
||||
#include "string.h"
|
||||
|
||||
struct sw_gamepad sw_gamepads[SW_MAX_GAMEPADS];
|
||||
|
@ -19,9 +20,9 @@ void sw_gamepad_tick() {
|
|||
}
|
||||
for(j = 0; j < SW_MAX_GAMEPAD_BUTTONS; ++j) {
|
||||
bool down = state.buttons[j];
|
||||
sw_gamepads[i].button_pressed =
|
||||
!sw_gamepads[i].button_pressed && down;
|
||||
sw_gamepads[i].button_down = down;
|
||||
sw_gamepads[i].button_pressed[j] =
|
||||
!sw_gamepads[i].button_pressed[j] && down;
|
||||
sw_gamepads[i].button_down[j] = down;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,6 +83,7 @@ void sw_window_run(struct sw_window *window, void (*callback)()) {
|
|||
/* private functions */
|
||||
|
||||
void _tick() {
|
||||
sw_gamepad_tick();
|
||||
glViewport(0, 0, _tick_window->game_size.x, _tick_window->game_size.y);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, _tick_window->_scaler_fb->_fb);
|
||||
_tick_fn();
|
||||
|
|
Loading…
Reference in New Issue