Randoloot/scripts/abilities/scanner_ability.gd
2026-10-11 21:39:53 +02:00

25 lines
857 B
GDScript

extends ActiveAbility
const SCAN_DURATION := 8.0
const OVERLAY := preload("res://scripts/ui/scanner_overlay.gd")
func unavailable_reason(ship: CharacterBody2D) -> String:
if ship.has_node("ScannerOverlay"):
return "Skaner jest aktywny"
return "Wymagane 50% energii" if float(ship.get("energy")) < float(ship.get("max_energy")) * 0.5 else ""
func activate(ship: CharacterBody2D) -> void:
if not unavailable_reason(ship).is_empty():
return
ship.set("energy", float(ship.get("energy")) - float(ship.get("max_energy")) * 0.5)
var layer := CanvasLayer.new()
layer.name = "ScannerOverlay"
layer.layer = 8
ship.add_child(layer)
var overlay := Control.new()
overlay.set_script(OVERLAY)
overlay.set("player", ship)
overlay.set("remaining", SCAN_DURATION)
layer.add_child(overlay)
overlay.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)