2025-03-13 12:25:04 -06:00
|
|
|
extends Node3D
|
|
|
|
## Game mechanic testing level
|
|
|
|
|
|
|
|
@onready var gunk_hall: GunkBody = %GunkHall
|
|
|
|
|
|
|
|
@onready var bulkhead: Node3D = $Bulkhead
|
2025-03-13 13:34:35 -06:00
|
|
|
@onready var open_switch: Node3D = %OpenSwitch
|
|
|
|
@onready var close_switch: Node3D = %CloseSwitch
|
2025-03-13 12:25:04 -06:00
|
|
|
|
2025-03-13 13:34:35 -06:00
|
|
|
@onready var nodule_spawn_point: Marker3D = %NoduleSpawnPoint
|
|
|
|
@onready var alarm_spawn_point: Marker3D = %AlarmSpawnPoint
|
2025-03-14 15:27:55 -06:00
|
|
|
@onready var signal_test_spawn_point: Marker3D = %SignalTestSpawnPoint
|
2025-03-13 12:25:04 -06:00
|
|
|
|
|
|
|
static var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
|
2025-03-13 13:34:35 -06:00
|
|
|
static var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
|
2025-03-14 15:27:55 -06:00
|
|
|
static var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
|
2025-03-13 12:25:04 -06:00
|
|
|
|
|
|
|
|
|
|
|
func reset() -> void:
|
|
|
|
print("Resetting level!")
|
|
|
|
gunk_hall.mask_control.clear(Color.BLACK)
|
|
|
|
Callable(bulkhead, "close").call()
|
|
|
|
Callable(open_switch, "enable").call()
|
|
|
|
Callable(close_switch, "disable").call()
|
2025-03-14 15:27:55 -06:00
|
|
|
_do_spawn(signal_test_spawn_point, signal_test_scene)
|
2025-03-13 12:25:04 -06:00
|
|
|
|
|
|
|
|
2025-03-13 13:34:35 -06:00
|
|
|
func _do_spawn(spawn_point: Node3D, scene: PackedScene) -> void:
|
|
|
|
for c: Node in spawn_point.get_children():
|
2025-03-13 12:25:04 -06:00
|
|
|
c.queue_free()
|
2025-03-13 13:34:35 -06:00
|
|
|
var instance := scene.instantiate()
|
|
|
|
spawn_point.add_child(instance)
|
|
|
|
|
|
|
|
|
|
|
|
func spawn_nodule() -> void:
|
|
|
|
_do_spawn(nodule_spawn_point, nodule_scene)
|
|
|
|
|
|
|
|
|
|
|
|
func spawn_alarm() -> void:
|
|
|
|
_do_spawn(alarm_spawn_point, alarm_scene)
|
|
|
|
|
|
|
|
|
|
|
|
func trigger_spawned_alarm() -> void:
|
2025-03-14 15:27:55 -06:00
|
|
|
var alarm := alarm_spawn_point.get_child(0)
|
2025-03-13 13:34:35 -06:00
|
|
|
if alarm:
|
2025-03-14 15:27:55 -06:00
|
|
|
Callable(alarm, "trigger").call()
|