summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/constants.h3
-rw-r--r--src/player.c38
2 files changed, 37 insertions, 4 deletions
diff --git a/src/constants.h b/src/constants.h
index 0c08dfd..e71c217 100644
--- a/src/constants.h
+++ b/src/constants.h
@@ -3,11 +3,12 @@
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
-#define TARGET_FPS 144
+#define TARGET_FPS 60
#define MAX_ENTITY_COUNT 500
#define ENTITY_MAX_ANIMATIONS 10
#define ANIMATION_MAX_FRAMES 4
+#define GRAVITY 9.8
#endif
diff --git a/src/player.c b/src/player.c
index 5dd77c1..dd758a0 100644
--- a/src/player.c
+++ b/src/player.c
@@ -1,14 +1,18 @@
#include <raylib.h>
+#include <raymath.h>
#include "physics.h"
#include "player.h"
+#define TOP_SPEEDX 100
+#define TOP_SPEEDY 100
+#define ACCEL_X 40
+
void add_player(float xpos, float ypos) {
struct entity player = {
.flags = (ENTITY_ACTIVE | ENTITY_VISIBLE),
.type = Player_Entity,
.position = (Vector2) {xpos, ypos},
- .velocity = {100.0, 100.0},
.texture = LoadTexture("assets/Graphics/spritesheet-characters-double.png"),
.sprite_source_rect = (Rectangle) {
@@ -28,6 +32,34 @@ void add_player(float xpos, float ypos) {
add_entity(&player);
}
-void update_player(struct entity* entity, float dt) {
- move_and_collide(entity, dt);
+float get_x_acceleration_direction() {
+ if (IsKeyDown(KEY_A)) {
+ return -1.0;
+ } else if (IsKeyDown(KEY_D)) {
+ return 1.0;
+ }
+
+ return 0.0;
+}
+
+void handle_movement(struct entity* player, float dt) {
+ Vector2 accel = {
+ .x = get_x_acceleration_direction() * ACCEL_X,
+ .y = GRAVITY
+ };
+
+ player->velocity =
+ Vector2Add(player->velocity, Vector2Scale(accel, dt * 0.5));
+ move_and_collide(player, dt);
+ player->velocity =
+ Vector2Add(player->velocity, Vector2Scale(accel, dt * 0.5));
+}
+
+void handle_input(struct entity* player) {
+
+}
+
+void update_player(struct entity* player, float dt) {
+ handle_movement(player, dt);
+ handle_input(player);
}