Input polling looks for exact match to avoid smashing modifier inputs

This commit is contained in:
Rob Kelly 2024-12-30 15:58:12 -07:00
parent 8dd9e0b4c5
commit b633ceb0c4
2 changed files with 26 additions and 26 deletions

View File

@ -579,7 +579,7 @@ func _process(_delta: float) -> void:
## Input Handling ## Input Handling
if control_disabled: if control_disabled:
if Input.is_action_just_pressed("camera_cancel"): if Input.is_action_just_pressed("camera_cancel", true):
if is_instance_valid(_free_camera) and not _returning_free_camera: if is_instance_valid(_free_camera) and not _returning_free_camera:
_returning_free_camera = true _returning_free_camera = true
var tween := get_tree().create_tween() var tween := get_tree().create_tween()
@ -599,76 +599,76 @@ func _process(_delta: float) -> void:
match phase: match phase:
Phase.AIM: Phase.AIM:
# Camera zoom # Camera zoom
if Input.is_action_just_pressed("shot_zoom_in"): if Input.is_action_just_pressed("shot_zoom_in", true):
camera_distance = max(camera_distance - 1.0, ZOOM_MIN) camera_distance = max(camera_distance - 1.0, ZOOM_MIN)
if Input.is_action_just_pressed("shot_zoom_out"): if Input.is_action_just_pressed("shot_zoom_out", true):
camera_distance = min(camera_distance + 1.0, ZOOM_MAX) camera_distance = min(camera_distance + 1.0, ZOOM_MAX)
# Club select # Club select
if Input.is_action_just_pressed("club_next"): if Input.is_action_just_pressed("club_next", true):
club_type = _get_relative_club(1) club_type = _get_relative_club(1)
if Input.is_action_just_pressed("club_previous"): if Input.is_action_just_pressed("club_previous", true):
club_type = _get_relative_club(-1) club_type = _get_relative_club(-1)
if Input.is_action_just_pressed("select_driver"): if Input.is_action_just_pressed("select_driver", true):
club_type = Club.Type.DRIVER club_type = Club.Type.DRIVER
if Input.is_action_just_pressed("select_iron"): if Input.is_action_just_pressed("select_iron", true):
club_type = Club.Type.IRON club_type = Club.Type.IRON
if Input.is_action_just_pressed("select_wedge"): if Input.is_action_just_pressed("select_wedge", true):
club_type = Club.Type.WEDGE club_type = Club.Type.WEDGE
if Input.is_action_just_pressed("select_special"): if Input.is_action_just_pressed("select_special", true):
club_type = Club.Type.SPECIAL club_type = Club.Type.SPECIAL
if Input.is_action_just_pressed("select_putter"): if Input.is_action_just_pressed("select_putter", true):
club_type = Club.Type.PUTTER club_type = Club.Type.PUTTER
# Ball select # Ball select
if Input.is_action_just_pressed("ball_next"): if Input.is_action_just_pressed("ball_next", true):
ball_type = player.next_ball(ball_type) ball_type = player.next_ball(ball_type)
if Input.is_action_just_pressed("ball_previous"): if Input.is_action_just_pressed("ball_previous", true):
ball_type = player.prev_ball(ball_type) ball_type = player.prev_ball(ball_type)
# Switch to free cam # Switch to free cam
if ( if (
Input.is_action_just_pressed("camera_back") Input.is_action_just_pressed("camera_back", true)
or Input.is_action_just_pressed("camera_forward") or Input.is_action_just_pressed("camera_forward", true)
or Input.is_action_just_pressed("camera_left") or Input.is_action_just_pressed("camera_left", true)
or Input.is_action_just_pressed("camera_right") or Input.is_action_just_pressed("camera_right", true)
): ):
insert_free_cam() insert_free_cam()
# Advance to next phase # Advance to next phase
if Input.is_action_just_pressed("shot_accept"): if Input.is_action_just_pressed("shot_accept", true):
if player.get_balls(ball_type) != 0: if player.get_balls(ball_type) != 0:
# Check that player has enough of the selected ball (<0 means unlimited) # Check that player has enough of the selected ball (<0 means unlimited)
phase = Phase.POWER_ADJUST phase = Phase.POWER_ADJUST
# TODO play UI bonk if player doesn't have balls (lmao) # TODO play UI bonk if player doesn't have balls (lmao)
Phase.POWER_ADJUST: Phase.POWER_ADJUST:
if Input.is_action_just_pressed("shot_accept"): if Input.is_action_just_pressed("shot_accept", true):
# TODO set power gauge parameters if needed # TODO set power gauge parameters if needed
character.start_upswing() character.start_upswing()
hud.start_power_bar() hud.start_power_bar()
if Input.is_action_just_pressed("shot_cancel"): if Input.is_action_just_pressed("shot_cancel", true):
hud.reset_power_bar() hud.reset_power_bar()
phase = Phase.AIM phase = Phase.AIM
if Input.is_action_just_released("shot_accept") and shot_power > 0: if Input.is_action_just_released("shot_accept", true) and shot_power > 0:
hud.stop_power_bar() hud.stop_power_bar()
phase = Phase.CURVE_ADJUST phase = Phase.CURVE_ADJUST
Phase.CURVE_ADJUST: Phase.CURVE_ADJUST:
if Input.is_action_just_pressed("shot_cancel"): if Input.is_action_just_pressed("shot_cancel", true):
hud.reset_curve_bar() hud.reset_curve_bar()
phase = Phase.POWER_ADJUST phase = Phase.POWER_ADJUST
if Input.is_action_just_pressed("shot_accept"): if Input.is_action_just_pressed("shot_accept", true):
hud.stop_curve_bar() hud.stop_curve_bar()
phase = Phase.DOWNSWING phase = Phase.DOWNSWING
Phase.SHOT: Phase.SHOT:
if reset_enabled and Input.is_action_just_pressed("shot_reset"): if reset_enabled and Input.is_action_just_pressed("shot_reset", true):
phase = Phase.SHOT_RESET phase = Phase.SHOT_RESET
reset_enabled = false reset_enabled = false
return_ball() return_ball()
if Input.is_action_just_pressed("activate_ball"): if Input.is_action_just_pressed("activate_ball", true):
game_ball.activate_ability() game_ball.activate_ability()
if driving_range and Input.is_action_just_pressed("shot_accept"): if driving_range and Input.is_action_just_pressed("shot_accept", true):
phase = Phase.AIM phase = Phase.AIM
return_ball() return_ball()
Phase.FINISHED: Phase.FINISHED:

View File

@ -42,7 +42,7 @@ func _physics_process(_delta: float) -> void:
var direction := (transform.basis * Vector3(xz_input.x, y_input.y, xz_input.y)).normalized() var direction := (transform.basis * Vector3(xz_input.x, y_input.y, xz_input.y)).normalized()
var speed := Game.settings.free_camera_speed var speed := Game.settings.free_camera_speed
if Input.is_action_pressed("camera_sprint"): if Input.is_action_pressed("camera_sprint", true):
speed *= SPRINT_MULT speed *= SPRINT_MULT
if direction: if direction: