aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-08-27 19:48:24 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-08-27 19:48:24 -0300
commitb7603d3d8a59b8f4ea22927f8bb35ebf75f74acb (patch)
tree54c8bf374bd777d42b3311d03d3080f4005e3597 /src
parent8769c45f025d61ff506579baa2f35ff39a246bdc (diff)
Controller + Keyboard support
Diffstat (limited to 'src')
-rw-r--r--src/config.h2
-rw-r--r--src/controller.c14
-rw-r--r--src/controller.h6
-rw-r--r--src/main.c8
-rw-r--r--src/rumble.c1
-rw-r--r--src/script_sys.c16
6 files changed, 36 insertions, 11 deletions
diff --git a/src/config.h b/src/config.h
index e0f8fe7..40a095c 100644
--- a/src/config.h
+++ b/src/config.h
@@ -36,7 +36,7 @@ typedef i32 fx32;
#define FIXED_POINT_ONE (1 << FIXED_POINT_BITS)
#define TO_FIXED(x) ((fx32)(x) << FIXED_POINT_BITS)
#define FROM_FIXED(x) ((x) >> FIXED_POINT_BITS)
-#define FP_TO_FIXED(x) (fx32)((x) * FIXED_POINT_BITS)
+#define FP_TO_FIXED(x) (fx32)((x) * FIXED_POINT_ONE)
typedef struct{
fx32 x, y;
diff --git a/src/controller.c b/src/controller.c
index aa8d4d9..e52eec5 100644
--- a/src/controller.c
+++ b/src/controller.c
@@ -2,17 +2,17 @@
#include <raylib.h>
-b32 is_button_pressed(i32 btn)
+b32 is_key_pressed(i32 btn)
{
return IsKeyPressed(btn);
}
-b32 is_button_held(i32 btn)
+b32 is_key_held(i32 btn)
{
return IsKeyDown(btn);
}
-b32 is_button_released(i32 btn)
+b32 is_key_released(i32 btn)
{
return IsKeyReleased(btn);
}
@@ -22,10 +22,10 @@ vec2 get_dir_input(void)
fx32 cont_x = FP_TO_FIXED(GetGamepadAxisMovement(0, 0));
fx32 cont_y = FP_TO_FIXED(GetGamepadAxisMovement(0, 1));
- fx32 key_w = is_button_held(KEY_W) ? FIXED_POINT_ONE : 0;
- fx32 key_s = is_button_held(KEY_S) ? FIXED_POINT_ONE : 0;
- fx32 key_a = is_button_held(KEY_A) ? FIXED_POINT_ONE : 0;
- fx32 key_d = is_button_held(KEY_D) ? FIXED_POINT_ONE : 0;
+ fx32 key_w = IsKeyDown(KEY_W) ? FIXED_POINT_ONE : 0;
+ fx32 key_s = IsKeyDown(KEY_S) ? FIXED_POINT_ONE : 0;
+ fx32 key_a = IsKeyDown(KEY_A) ? FIXED_POINT_ONE : 0;
+ fx32 key_d = IsKeyDown(KEY_D) ? FIXED_POINT_ONE : 0;
// Either Gamepad or Keyboard control, not both!
if(key_w != 0 || key_s != 0 || key_a != 0 || key_d != 0){
diff --git a/src/controller.h b/src/controller.h
index 55098cc..e4a7683 100644
--- a/src/controller.h
+++ b/src/controller.h
@@ -4,9 +4,9 @@
// TODO: Controller button presses you DINGUS
-b32 is_button_pressed(i32 btn);
-b32 is_button_held(i32 btn);
-b32 is_button_released(i32 btn);
+b32 is_key_pressed(i32 btn);
+b32 is_key_held(i32 btn);
+b32 is_key_released(i32 btn);
vec2 get_dir_input(void);
diff --git a/src/main.c b/src/main.c
index c881a18..4fc9bc2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,17 +3,25 @@
#include "shader_sys.h"
#include "script_sys.h"
+#include "controller.h"
+#include "rand_sys.h"
+
int main()
{
InitWindow(640, 480, "Gunner Engine");
SetTargetFPS(60);
+ rand_seed();
+
init_tex_sys();
init_shader_sys();
init_script_sys();
while(!WindowShouldClose()){
+ float dt = GetFrameTime();
+ poll_rumble(dt);
+
update_textures();
update_shaders();
diff --git a/src/rumble.c b/src/rumble.c
index 798b5ec..b2da191 100644
--- a/src/rumble.c
+++ b/src/rumble.c
@@ -7,6 +7,7 @@ NOTE FOR SPELUNKERS: this requires linking to xinput1_4 AFAIK
*/
#include "controller.h"
+#include <stdio.h>
// Windows stuff starts //
typedef struct _XINPUT_VIBRATION {
diff --git a/src/script_sys.c b/src/script_sys.c
index 4c87327..761d874 100644
--- a/src/script_sys.c
+++ b/src/script_sys.c
@@ -2,6 +2,10 @@
#include "texture_sys.h"
#include "shader_sys.h"
+#include "controller.h"
+
+#include "rand_sys.h"
+
#include <libtcc.h>
#include <stddef.h>
#include <stdio.h>
@@ -29,6 +33,18 @@ static void restart(void)
tcc_add_symbol(new_state, "draw_texture", draw_texture);
tcc_add_symbol(new_state, "reset_active_shader", reset_active_shader);
+ tcc_add_symbol(new_state, "set_rumble", set_rumble);
+ tcc_add_symbol(new_state, "stop_rumble", stop_rumble);
+
+ tcc_add_symbol(new_state, "rand_u32", rand_u32);
+ tcc_add_symbol(new_state, "rand_range", rand_range);
+
+ tcc_add_symbol(new_state, "is_key_pressed", is_key_pressed);
+ tcc_add_symbol(new_state, "is_key_held", is_key_held);
+ tcc_add_symbol(new_state, "is_key_released", is_key_released);
+
+ tcc_add_symbol(new_state, "get_dir_input", get_dir_input);
+
if(tcc_add_file(new_state, "assets/src/main.c") == -1){
TRACELOG(LOG_ERROR, "Compilation failed!\n");
return;