diff options
Diffstat (limited to 'src/player.odin')
| -rw-r--r-- | src/player.odin | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/player.odin b/src/player.odin index 5c001da..149e1ce 100644 --- a/src/player.odin +++ b/src/player.odin @@ -12,8 +12,9 @@ import "tiled" PLAYER_SPEED :: 100 PLAYER_ACCEL :: 10 PLAYER_JUMP_FORCE :: 350 +PLAYER_DOUBLE_JUMP_FORCE :: 250 PLAYER_JUMP_BUFFERING :: 0.07 -PLAYER_COYOTE_TIME :: 0.05 +PLAYER_COYOTE_TIME :: 0.06 PLAYER_JUMP_RELEASE_CUT :: -100 PLAYER_DASH_SPEED :: 500 @@ -38,7 +39,10 @@ player: struct { dash_timer: f32, state: Player_State, + outside_room: bool, + + has_double_jumped: bool, } init_player :: proc() { @@ -109,12 +113,21 @@ default_state :: proc(dt: f32) { if .DOWN in body.collisions { player.coyote_time = PLAYER_COYOTE_TIME + player.has_double_jumped = false } - if player.jump_buffer > 0 && player.coyote_time > 0 { - player.jump_buffer = 0 - player.coyote_time = 0 - body.vel.y = -PLAYER_JUMP_FORCE + if player.jump_buffer > 0 { + if player.coyote_time > 0 { + body.vel.y = -PLAYER_JUMP_FORCE + + player.jump_buffer = 0 + player.coyote_time = 0 + } else if !player.has_double_jumped { + body.vel.y = -PLAYER_DOUBLE_JUMP_FORCE + player.has_double_jumped = true + + player.jump_buffer = 0 + } } if .DOWN not_in body.collisions \ |
