ArkSol/scripts/star.gd

56 lines
1.8 KiB
GDScript

extends Node2D
class_name Star
# Parametry ustawiane w Inspektorze (łatwe do edycji!)
@export var radius: float = 400.0 # Promień okręgu
@export var color: Color = Color.GRAY
@export var thickness: float = 0.5 # Grubość linii konturu
@export var segments: int = 64
@onready var label = $Label
@onready var system_owner = ""
@onready var station_scene = preload("res://scenes/Station.tscn") # scena stacji kosmicznej
var has_station: bool = false
var station_sprite: Sprite2D = null
@export var star_name: String = ""
@export var planet_count: int = 0
var planets: Array = []
var texture: Texture2D
func _ready():
#print("Gwiazda %s z %d planetami" % [star_name, planet_count])
label.text = star_name
var area = $Sprite2D/Area2D
area.connect("input_event", Callable(self, "_on_area_input"))
# Stała do rysowania pełnego okręgu
const TAU = 6.2831853 # 2 * PI
# Funkcja _draw() jest automatycznie wywoływana przez Godot, aby narysować węzeł
func _draw():
# draw_arc() rysuje kontur okręgu/łuku w Godot 4.x
# Argumenty: centrum, promień, kąt początkowy (0), kąt końcowy (TAU), liczba segmentów, kolor, grubość
draw_arc(
Vector2.ZERO,
radius,
0.0,
TAU,
segments,
color,
thickness
)
func _on_area_input(viewport, event, shape_idx):
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
capture_system(PlayerData.PlayerName)
print("System przejęty przez:", system_owner)
func capture_system(player_name: String) -> void:
if system_owner != "":
return # już przejęty
system_owner = player_name
# Dodaj stację kosmiczną obok gwiazdy
var station = station_scene.instantiate()
station.position = position + Vector2(35, 0) # obok gwiazdy
label.add_theme_color_override("font_color", Color(0.788, 0.332, 0.196, 1.0))
get_parent().add_child(station)