#include "../../include/player_state/walk.h" #include "../../include/player_state/default.h" #include "../../include/player.h" #include "../../include/raylib.h" static void player_state_walk_update(PlayerState *state, Player *player) { if (IsKeyDown(KEY_LEFT_SHIFT)) { player->speed = 24.0f; } else { player->speed = 12.0f; } if (IsKeyDown(KEY_UP)) { player->texture = player->textures[PLAYER_TEXTURE_WALK_BACKWARD]; } else if (IsKeyDown(KEY_DOWN)) { player->texture = player->textures[PLAYER_TEXTURE_WALK_FORWARD]; } else if (IsKeyDown(KEY_RIGHT)) { player->texture = player->textures[PLAYER_TEXTURE_WALK_RIGHT]; } else if (IsKeyDown(KEY_LEFT)) { player->texture = player->textures[PLAYER_TEXTURE_WALK_LEFT]; } if (IsKeyDown(KEY_RIGHT)) { player->control.x = 1; } else if (IsKeyDown(KEY_LEFT)) { player->control.x = -1; } else { player->control.x = 0; } if (IsKeyDown(KEY_DOWN)) { player->control.y = 1; } else if (IsKeyDown(KEY_UP)) { player->control.y = -1; } else { player->control.y = 0; } Vector2 normalized = Vector2Normalize(player->control); player->velocity = Vector2Add( player->velocity, Vector2Scale(normalized, player->speed)); player->position.x += player->velocity.x * GetFrameTime(); player->position.y += player->velocity.y * GetFrameTime(); player->velocity = Vector2Scale(player->velocity, player->friction); if (Vector2Length(player->velocity) < 0.1f) { player_state_transition_to_default(state, player); } } void player_state_transition_to_walk(PlayerState *state, Player *player) { state->name = "Walk"; state->update = player_state_walk_update; }