added gamepad stuffies
This commit is contained in:
parent
fdfb5b8032
commit
cd9a5251e0
|
@ -1,19 +1,27 @@
|
||||||
#include <gsa.h>
|
#include <gsa.h>
|
||||||
|
|
||||||
void init() {
|
void init() {
|
||||||
sprites[0].tile = 2;
|
i32 x, y;
|
||||||
sprites[0].x = 10;
|
|
||||||
sprites[0].y = 10;
|
|
||||||
|
|
||||||
sprites[1].tile = 3;
|
for(y = 0; y < 11; ++y) {
|
||||||
sprites[1].x = 10;
|
for(x = 0; x < 19; ++x) {
|
||||||
sprites[1].y = 100;
|
maps[0].tiles[x][y] = 0x1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
maps[0].tiles[20][1] = 1;
|
for(y = 0; y < 11; y += 2) {
|
||||||
|
maps[0].tiles[0][y] = 0x1101;
|
||||||
|
maps[0].tiles[1][y] = 0x1102;
|
||||||
|
maps[0].tiles[0][y + 1] = 0x1201;
|
||||||
|
maps[0].tiles[1][y + 1] = 0x1202;
|
||||||
|
|
||||||
|
maps[0].tiles[17][y] = 0x1101;
|
||||||
|
maps[0].tiles[18][y] = 0x1102;
|
||||||
|
maps[0].tiles[17][y + 1] = 0x1201;
|
||||||
|
maps[0].tiles[18][y + 1] = 0x1202;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tick() {
|
void tick() {
|
||||||
sprites[0].x += 1;
|
sprites[0].x += 1;
|
||||||
sprites[1].x += 0;
|
|
||||||
maps[0].scrollx += 1;
|
|
||||||
}
|
}
|
||||||
|
|
BIN
gfx.png
BIN
gfx.png
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
@ -0,0 +1,22 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
struct sw_gamepad {
|
||||||
|
f32 axes[SW_MAX_GAMEPAD_AXES];
|
||||||
|
bool button_down;
|
||||||
|
bool button_pressed;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct sw_gamepad sw_gamepads[SW_MAX_GAMEPADS];
|
||||||
|
|
||||||
|
void sw_gamepad_static_init();
|
||||||
|
void sw_gamepad_tick();
|
||||||
|
|
||||||
|
#endif /* GUARD_F8BB6BA29F6FB6745AF8B6E15CD1C086 */
|
|
@ -44,6 +44,7 @@ skunk_sources = [
|
||||||
'src/error.c',
|
'src/error.c',
|
||||||
'src/file.c',
|
'src/file.c',
|
||||||
'src/framebuffer.c',
|
'src/framebuffer.c',
|
||||||
|
'src/gamepad.c',
|
||||||
'src/gsa.c',
|
'src/gsa.c',
|
||||||
'src/image32.c',
|
'src/image32.c',
|
||||||
'src/image8.c',
|
'src/image8.c',
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include "gamepad.h"
|
||||||
|
#include "GLFW/glfw3.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
|
struct sw_gamepad sw_gamepads[SW_MAX_GAMEPADS];
|
||||||
|
|
||||||
|
void sw_gamepad_static_init() {
|
||||||
|
memset(sw_gamepads, 0, sizeof(sw_gamepads));
|
||||||
|
}
|
||||||
|
|
||||||
|
void sw_gamepad_tick() {
|
||||||
|
i32 i, j;
|
||||||
|
GLFWgamepadstate state;
|
||||||
|
|
||||||
|
for(i = 0; i < SW_MAX_GAMEPADS; ++i) {
|
||||||
|
if(glfwGetGamepadState(i, &state)) {
|
||||||
|
for(j = 0; j < SW_MAX_GAMEPAD_AXES; ++j) {
|
||||||
|
sw_gamepads[i].axes[j] = state.axes[j];
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -44,7 +44,7 @@ static struct sw_shaderprogram program;
|
||||||
|
|
||||||
static u32 vbo, vao;
|
static u32 vbo, vao;
|
||||||
|
|
||||||
#define MAX_RENDER_VERTS 60
|
#define MAX_RENDER_VERTS 10000
|
||||||
|
|
||||||
struct render_vert {
|
struct render_vert {
|
||||||
f32 x, y, tx, ty;
|
f32 x, y, tx, ty;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "GLFW/glfw3.h"
|
#include "GLFW/glfw3.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
|
#include "gamepad.h"
|
||||||
#include "scaler.h"
|
#include "scaler.h"
|
||||||
#include "shaders.h"
|
#include "shaders.h"
|
||||||
#include "vec2i.h"
|
#include "vec2i.h"
|
||||||
|
@ -52,8 +53,9 @@ struct sw_window *sw_window_create(struct sw_vec2i size, char *title) {
|
||||||
sw_log("setup ogl defaults");
|
sw_log("setup ogl defaults");
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glEnable(GL_DEPTH_TEST);
|
/* glEnable(GL_DEPTH_TEST); */
|
||||||
|
|
||||||
|
sw_gamepad_static_init();
|
||||||
sw_shaders_static_init();
|
sw_shaders_static_init();
|
||||||
sw_framebuffer_static_init(); /* TODO: move elsewhere */
|
sw_framebuffer_static_init(); /* TODO: move elsewhere */
|
||||||
win->_scaler_fb = sw_framebuffer_create(size);
|
win->_scaler_fb = sw_framebuffer_create(size);
|
||||||
|
|
Loading…
Reference in New Issue