extends Node2D @onready var area = $Area2D var sprite: Sprite2D var colonized_icon: Sprite2D var orbit_center: Vector2 var orbit_radius: float var rotation_speed: float = 0.02 var angle: float = 0.0 # Połączenie z globalnymi danymi var data: Dictionary signal show_stats(planet) signal hide_stats() func _ready(): _ensure_sprite() angle = randf() * TAU colonized_icon = Sprite2D.new() colonized_icon.texture = load("res://assets/icons/col_icon.png") colonized_icon.centered = true colonized_icon.visible = false colonized_icon.scale = Vector2(0.02, 0.02) add_child(colonized_icon) if area: area.mouse_entered.connect(_on_mouse_entered) area.mouse_exited.connect(_on_mouse_exited) area.input_event.connect(_on_area_input) func _ensure_sprite(): if sprite == null: sprite = Sprite2D.new() add_child(sprite) sprite.centered = true func _process(delta): # Ruch orbitalny angle += rotation_speed * delta if orbit_center and orbit_radius: position = orbit_center + Vector2(cos(angle), sin(angle)) * orbit_radius # Aktualizacja ikonki kolonizacji if colonized_icon: colonized_icon.visible = data["is_colonized"] var y_offset = 0 if sprite and sprite.texture: y_offset = -sprite.texture.get_size().y * 0.13 colonized_icon.position = Vector2(0, y_offset) func set_texture(tex: Texture2D): _ensure_sprite() sprite.texture = tex sprite.scale = get_scale_for_size(data["size"]) func get_scale_for_size(size: int) -> Vector2: match size: 1: return Vector2(0.20, 0.20) 2: return Vector2(0.30, 0.30) 3: return Vector2(0.42, 0.42) 4: return Vector2(0.60, 0.60) return Vector2(0.3, 0.3) func _on_area_input(viewport, event, shape_idx): if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: colonize() func colonize(): if not data["is_colonized"]: data["is_colonized"] = true data["population"] = 10 print(data["name"] + " has been colonized!") emit_signal("show_stats", self) func _on_mouse_entered(): if sprite: sprite.scale = get_scale_for_size(data["size"]) * 1.15 emit_signal("show_stats", self) func _on_mouse_exited(): if sprite: sprite.scale = get_scale_for_size(data["size"]) emit_signal("hide_stats")