extends CharacterBody2D class_name Player @export var SPEED := 4 var last_direction = 0 var interaction_location: Vector2i @onready var animation_player: AnimationPlayer = $AnimationPlayer @onready var interaction_timer: Timer = $InteractionTimer func _physics_process(delta: float) -> void: var input_direction := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") velocity = input_direction * SPEED / delta move_and_slide() if input_direction: animation_player.current_animation = "walk" animation_player.play() last_direction = input_direction.angle() + 3 * PI / 2 rotation = last_direction interaction_location = Grid.world_to_grid(position) + Vector2i(input_direction.round()) Grid.set_selected_tile(interaction_location) else: animation_player.stop() func _input(event: InputEvent) -> void: if event.is_action_pressed("ui_accept"): Grid.get_location_data(interaction_location).interact(interaction_timer) print("interaction started") func _finished_interaction(results: Dictionary) -> void: print("interaction finished: %s" % results) func _unhandled_input(event): if event is InputEventMouseButton: match event.button_index: MOUSE_BUTTON_WHEEL_DOWN: $Camera2D.zoom -= Vector2(0.01, 0.01) MOUSE_BUTTON_WHEEL_UP: $Camera2D.zoom += Vector2(0.01, 0.01)