63 lines
1.4 KiB
GDScript
63 lines
1.4 KiB
GDScript
extends Node2D
|
|
class_name Planet
|
|
@onready var label = $Label
|
|
|
|
@onready var info_label = $CanvasLayer/Info
|
|
@onready var area = $Area2D
|
|
|
|
|
|
var pname: String = ""
|
|
var orbit_radius: float = 30.0
|
|
var orbit_speed: float = 0.01
|
|
var biosfere: float = 0.1
|
|
var resources := {}
|
|
|
|
var texture: Texture2D
|
|
var angle = randf() * TAU
|
|
func _ready():
|
|
|
|
add_to_group("planets")
|
|
|
|
# Podłącz sygnały
|
|
area.mouse_entered.connect(_on_mouse_entered)
|
|
area.mouse_exited.connect(_on_mouse_exited)
|
|
#str(round(biosfere * 100) / 100.0)
|
|
_update_position()
|
|
|
|
|
|
func _process(delta):
|
|
angle += orbit_speed * delta # obrót w czasie
|
|
angle = fmod(angle, TAU) # utrzymanie kąta w 0..2π
|
|
_update_position()
|
|
|
|
label.text = str(pname)
|
|
|
|
func _update_position():
|
|
# pozycja lokalna względem gwiazdy
|
|
position = Vector2(cos(angle), sin(angle)) * orbit_radius
|
|
|
|
func _on_mouse_entered():
|
|
info_label.visible = true
|
|
|
|
var text = "🌍 %s\n" % pname
|
|
text += "Biosfera: %.2f\n" % biosfere
|
|
|
|
var has_any_resource = false
|
|
for key in resources.keys():
|
|
var res = resources[key]
|
|
if res.has("exist") and res["exist"]:
|
|
if not has_any_resource:
|
|
text += "Zasoby:\n"
|
|
has_any_resource = true
|
|
|
|
var display_name = tr(key) # tłumaczenie klucza przez system Godot
|
|
text += "%s:%s\n" % [display_name, str(res.get("amount", 0))]
|
|
|
|
info_label.text = text
|
|
|
|
|
|
|
|
|
|
func _on_mouse_exited():
|
|
info_label.visible = false
|