diff options
Diffstat (limited to 'src/player.odin')
| -rw-r--r-- | src/player.odin | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/player.odin b/src/player.odin index 2029195..debfd44 100644 --- a/src/player.odin +++ b/src/player.odin @@ -40,6 +40,9 @@ player: struct { state: Player_State, outside_room: bool, has_double_jumped: bool, + + owns_double_jump: bool, + owns_dash: bool, } init_player :: proc() { @@ -101,7 +104,9 @@ _default_state :: proc(dt: f32) { player.jump_buffer = PLAYER_JUMP_BUFFERING } - if is_keybind_just_down(actions.dash) && player.dash_cooldown <= 0 { + if player.owns_dash && + is_keybind_just_down(actions.dash) && + player.dash_cooldown <= 0 { _enter_dash() return } @@ -148,7 +153,7 @@ _default_state :: proc(dt: f32) { player.jump_buffer = 0 player.coyote_time = 0 - } else if !player.has_double_jumped { + } else if player.owns_double_jump && !player.has_double_jumped { vel.y = -PLAYER_DOUBLE_JUMP_FORCE player.has_double_jumped = true @@ -176,10 +181,14 @@ _default_state :: proc(dt: f32) { @(private = "file") _enter_dash :: proc() { - // the sprite x scale is the direction the player is facing :) + input := _get_input_dir() + if input == 0 { + // the sprite x scale is the direction the player is facing :) + input = math.sign(player.sprite.scale.x) + } phys.set_velocity( player.body, - {math.sign(player.sprite.scale.x) * PLAYER_DASH_SPEED, 0}, + {input * PLAYER_DASH_SPEED, 0}, ) player.dash_timer = PLAYER_DASH_TIME @@ -290,7 +299,9 @@ update_player :: proc(dt: f32) { draw_player :: proc() { draw_sprite(player.sprite) - draw_sprite(player.gun_sprite) + if player.state != .DASH { + draw_sprite(player.gun_sprite) + } } @(private = "file") |
