summaryrefslogtreecommitdiff
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c38
1 files changed, 35 insertions, 3 deletions
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);
}