diff options
Diffstat (limited to 'client/player')
-rw-r--r-- | client/player/controllable_player.gd | 14 | ||||
-rw-r--r-- | client/player/follow_camera.gd | 19 |
2 files changed, 16 insertions, 17 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 6e922983..65b225aa 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -24,7 +24,7 @@ const BOOST_FACTOR = 2.5 const BOOST_DURATION = 0.3 const BOOST_RESTORE = 0.5 -var onscreen_controls = preload("res://player/onscreen_controls/controls.tscn").instantiate() +var onscreen_controls = preload ("res://player/onscreen_controls/controls.tscn").instantiate() var facing := Vector2(1, 0) var velocity_ := Vector2(0, 0) @@ -58,7 +58,7 @@ func _input(_event): chat_open = !chat_open enable_input = !enable_input -const MAX_DT = 1./50. +const MAX_DT = 1. / 50. func _process(delta): marker.position = G.interpolate(marker.position, marker_target, delta * 30.) while delta > 0.001: @@ -68,7 +68,7 @@ func _process(delta): super(delta) func _process_movement(delta): - var input = Input.get_vector("left", "right", "forward", "backwards") if enable_input else Vector2.ZERO + var input = Input.get_vector("left", "right", "forward", "backwards") if not game.menu.covered else Vector2.ZERO var boost = Input.is_action_pressed("boost") or (Global.get_setting("latch_boost") and boosting) input = input.rotated( - game.camera.angle_target) if Input.is_action_pressed("interact") or Input.is_action_just_released("interact"): @@ -88,7 +88,7 @@ func _process_movement(delta): position_anim = position_ rotation_anim = rotation_ -func update(dt: float,boost: bool): +func update(dt: float, boost: bool): direction = direction.limit_length(1.); if direction.length() > 0.1: self.facing = direction + (self.facing - direction) * exp( - dt * 10.) @@ -152,8 +152,7 @@ func take_item(tile: Tile): Input.start_joy_vibration(0, 0.1, 0.0, 0.075) func interact(): - if not enable_input: - return + if game.menu.covered: return var tile = game.map.get_tile_instance(target) if tile != null: marker.set_interactive(game.get_tile_interactive(target)) @@ -168,6 +167,3 @@ func interact(): marker.set_interacting(false) else: marker.visible = false - -func set_input_enabled(b: bool): - enable_input = b diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd index 70dd2a96..fd4c9d16 100644 --- a/client/player/follow_camera.gd +++ b/client/player/follow_camera.gd @@ -43,6 +43,7 @@ var angle_up: float = 1 var ground: Vector3 var camera_distance: float = 10. var camera_distance_target: float = camera_distance +var disable_input := false func _ready(): if target == null: @@ -51,22 +52,23 @@ func _ready(): ground = target.position func _process(delta): - if target != null && get_tree().root.get_node("Entry/GameMenu/IngameMenu") == null: + if target != null: follow(delta) func _input(_event): + if disable_input: return if Input.is_action_just_pressed("reset"): angle_target = 0 angle_up_target = 1 camera_distance_target = 10 func follow(delta): - angle_target += Input.get_axis("rotate_left", "rotate_right") * ( + if not disable_input: angle_target += Input.get_axis("rotate_left", "rotate_right") * ( ROTATE_SPEED * delta * (-1 if Global.get_setting("invert_camera") else 1) ) angle = G.interpolate_angle(angle, angle_target, delta * ROTATE_WEIGHT) - angle_up_target += Input.get_axis("rotate_down", "rotate_up") * ( + if not disable_input: angle_up_target += Input.get_axis("rotate_down", "rotate_up") * ( ROTATE_UP_SPEED * delta * (-1 if Global.get_setting("invert_camera") else 1) ) angle_up_target = clamp(angle_up_target, ANGLE_UP_MIN, ANGLE_UP_MAX) @@ -90,11 +92,12 @@ func follow(delta): # add 0.5, this is the head height ground = G.interpolate(ground, target.position + Vector3(0., 0.5, 0.), delta * MOVE_WEIGHT) - var zoom_dist = Input.get_axis("zoom_in", "zoom_out") * delta - zoom_dist += float(Input.is_action_just_pressed("zoom_out_discrete")) * DISCRETE_DURATION - zoom_dist -= float(Input.is_action_just_pressed("zoom_in_discrete")) * DISCRETE_DURATION - camera_distance_target *= exp(zoom_dist * ZOOM_SPEED) - camera_distance_target = clamp(camera_distance_target, MIN_ZOOM, MAX_ZOOM) + if not disable_input: + var zoom_dist = Input.get_axis("zoom_in", "zoom_out") * delta + zoom_dist += float(Input.is_action_just_pressed("zoom_out_discrete")) * DISCRETE_DURATION + zoom_dist -= float(Input.is_action_just_pressed("zoom_in_discrete")) * DISCRETE_DURATION + camera_distance_target *= exp(zoom_dist * ZOOM_SPEED) + camera_distance_target = clamp(camera_distance_target, MIN_ZOOM, MAX_ZOOM) camera_distance = G.interpolate(camera_distance, camera_distance_target, delta * ZOOM_WEIGHT) |