extends CharacterBody2D @onready var collision_shape_2d: CollisionShape2D = $CollisionShape2D @onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D @onready var player: CharacterBody2D = $"." var hovered_unit = null var hover_indicator = preload("res://assets/sprites/ui/ui_icons_green_down4.png") func _ready(): var hover_sprite = Sprite2D.new() hover_sprite.texture = hover_indicator hover_sprite.position.y = -15 hover_sprite.visible = false hover_sprite.name = "HoverIndicator" hover_sprite.z_index = 100 player.add_child(hover_sprite) var player_data = { "stats": { "health": 100, "speed": 3, "attack": 10, "defense": 5 }, "inventory": [], "name": "Hero" } func _input(event): if event is InputEventMouseMotion: check_hover() func check_hover(): var mouse_pos = get_global_mouse_position() print("Mouse pos: ", mouse_pos, " Player pos: ", player.position) if hovered_unit: hovered_unit.get_node("HoverIndicator").visible = false hovered_unit = null if player.has_node("CollisionShape2D"): var collision = player.get_node("CollisionShape2D") var shape = collision.shape var local_pos = player.to_local(mouse_pos) if shape is RectangleShape2D: var extents = shape.extents if local_pos.x >= -extents.x and local_pos.x <= extents.x and \ local_pos.y >= -extents.y and local_pos.y <= extents.y: hovered_unit = player player.get_node("HoverIndicator").visible = true func set_unit_position(x, y, z): var z_layer = z #var x_position = x var x_position = x + 16 var y_position = y #var y_position = y + get_sprite_size().size.y/2 # Update the visual z-index directly animated_sprite.z_index = z_layer animated_sprite.position = Vector2i(x_position, y_position) print("Palyer Global Pos: ", animated_sprite.position) print("Palyer Z-Layer: ", z_layer) func get_sprite_size(): return collision_shape_2d.shape func _process(_delta: float): check_hover() play_player_animation("idle") func play_player_animation(state="idle"): if state == "idle": animated_sprite.play("down")