A RPG I'm messing with made in Raylib.
at main 82 lines 1.9 kB view raw
1#include "../../include/player_state/walk.h" 2 3#include "../../include/player_state/default.h" 4 5#include "../../include/player.h" 6#include "../../include/raylib.h" 7 8static void player_state_walk_update(PlayerState *state, Player *player) 9{ 10 if (IsKeyDown(KEY_LEFT_SHIFT)) 11 { 12 player->speed = 24.0f; 13 } 14 else 15 { 16 player->speed = 12.0f; 17 } 18 19 if (IsKeyDown(KEY_UP)) 20 { 21 player->texture = player->textures[PLAYER_TEXTURE_WALK_BACKWARD]; 22 } 23 else if (IsKeyDown(KEY_DOWN)) 24 { 25 player->texture = player->textures[PLAYER_TEXTURE_WALK_FORWARD]; 26 } 27 else if (IsKeyDown(KEY_RIGHT)) 28 { 29 player->texture = player->textures[PLAYER_TEXTURE_WALK_RIGHT]; 30 } 31 else if (IsKeyDown(KEY_LEFT)) 32 { 33 player->texture = player->textures[PLAYER_TEXTURE_WALK_LEFT]; 34 } 35 36 if (IsKeyDown(KEY_RIGHT)) 37 { 38 player->control.x = 1; 39 } 40 else if (IsKeyDown(KEY_LEFT)) 41 { 42 player->control.x = -1; 43 } 44 else 45 { 46 player->control.x = 0; 47 } 48 49 if (IsKeyDown(KEY_DOWN)) 50 { 51 player->control.y = 1; 52 } 53 else if (IsKeyDown(KEY_UP)) 54 { 55 player->control.y = -1; 56 } 57 else 58 { 59 player->control.y = 0; 60 } 61 62 Vector2 normalized = Vector2Normalize(player->control); 63 64 player->velocity = Vector2Add( 65 player->velocity, Vector2Scale(normalized, player->speed)); 66 67 player->position.x += player->velocity.x * GetFrameTime(); 68 player->position.y += player->velocity.y * GetFrameTime(); 69 70 player->velocity = Vector2Scale(player->velocity, player->friction); 71 72 if (Vector2Length(player->velocity) < 0.1f) 73 { 74 player_state_transition_to_default(state, player); 75 } 76} 77 78void player_state_transition_to_walk(PlayerState *state, Player *player) 79{ 80 state->name = "Walk"; 81 state->update = player_state_walk_update; 82}