rundumdiewelten/rund-um-die-welten/planet/deathlaser.gd
phantomvines d8eec1150e upload
2025-09-19 16:37:23 +02:00

72 lines
2.4 KiB
GDScript

extends Node2D
@export var rotation_speed_in_deg_per_second = 100
@export var laser_color = "pink":
set(value):
laser_color = value
station_name = "State"+str(value).capitalize()
@export var death_message_overwrite: String
@export var clockwise = true
var active
var station_name:
set(value):
station_name = value
for i in ["StateOrange", "StatePink", "StateGreen"]:
get_node(i).visible = false
get_node(station_name).visible = true
func _ready() -> void:
$"HitboxStation".area_entered.connect(_on_station_area_entered)
$"HitboxLaser1".area_entered.connect(_on_laser_area_entered)
$"HitboxLaser2".area_entered.connect(_on_laser_area_entered)
GlobalVariables.button_changed_stage.connect(check_state)
station_name = "State"+str(laser_color).capitalize()
check_state()
func check_state():
change_laser_state_to(!GlobalVariables.active_buttons[laser_color])
func change_laser_state_to(state:bool):
active = state
for i in ["StateOrange", "StatePink", "StateGreen"]:
get_node(i + "/LaserSprite1").visible = false
get_node(i + "/LaserSprite1").visible = false
get_node(i + "/StationSprite").visible = false
get_node(station_name + "/StationSprite").visible = true
get_node(station_name + "/LaserSprite1").visible = active
get_node(station_name + "/LaserSprite2").visible = active
func toggle_laser():
active = !active
for i in ["StateOrange", "StatePink", "StateGreen"]:
get_node(i + "/LaserSprite1").visible = false
get_node(i + "/LaserSprite1").visible = false
get_node(station_name + "/LaserSprite1").visible = true
func _physics_process(delta: float) -> void:
if clockwise:
rotate(deg_to_rad(rotation_speed_in_deg_per_second * delta))
else:
rotate(deg_to_rad(rotation_speed_in_deg_per_second * -delta))
func _on_laser_area_entered(area: Area2D) -> void:
if active:
# if area in player group entered, kill player
if area.is_in_group("player"):
if death_message_overwrite:
GlobalVariables.emit_player_died(death_message_overwrite)
else:
GlobalVariables.emit_player_died("You crashed into an active " + str(laser_color) + " Laser")
print(area.position)
func _on_station_area_entered(area: Area2D) -> void:
# if area in player group entered, kill player
if area.is_in_group("player"):
if death_message_overwrite:
GlobalVariables.emit_player_died(death_message_overwrite)
else:
GlobalVariables.emit_player_died("You crashed into the " + str(laser_color) + " Station")
print(area.position)