diff options
| -rw-r--r-- | src/constants.h | 3 | ||||
| -rw-r--r-- | src/player.c | 38 |
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); } |
