aboutsummaryrefslogtreecommitdiff
path: root/src/player.odin
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-01-15 20:23:41 -0500
committeriamcheeseman <[hidden email]>2026-01-15 20:23:41 -0500
commitc353e0b095fb724ee50d6e09fb00cc82b51da250 (patch)
tree060f11a1e09352e3191b0fc1ad7970abc8b7e3a0 /src/player.odin
parent012a78995d9e360de1d931943b34f21d4f4a85af (diff)
unlockable abilities
Diffstat (limited to 'src/player.odin')
-rw-r--r--src/player.odin21
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")