MIF_E31230535/pintukeluarruangjaga.gd

67 lines
2.3 KiB
GDScript

extends Area2D
# Tarik file scene Stage 3 atau Map berikutnya ke slot ini di Inspector
@export_file("*.tscn") var scene_tujuan: String = "res://Stage2_2.tscn"
# KUNCI UTAMA: Tarik node LokerPeta kamu ke dalam slot ini di Inspector
@export var node_loker: Area2D
var player_didalam_area: Node2D = null
func _ready() -> void:
pass
func _on_body_entered(body: Node2D) -> void:
if body.is_in_group("pemain"):
player_didalam_area = body
# Cek apakah player sudah ambil peta di loker atau belum
if node_loker and node_loker.sudah_diambil:
print("🚪 Pintu keluar terbuka! Tekan interaksi untuk kabur dan selesaikan Stage 2!")
else:
print("🔒 Pintu terkunci! Kamu harus mengambil Peta Artileri di loker dulu sebelum kabur!")
func _on_body_exited(body: Node2D) -> void:
if body == player_didalam_area:
player_didalam_area = null
print("Player menjauh dari pintu keluar.")
func _input(event: InputEvent) -> void:
if not event.is_action_pressed("interact"):
return
if player_didalam_area == null:
return
# Validasi keamanan: Cek apakah node_loker sudah dipasang di Inspector
if node_loker == null:
print("⚠️ Peringatan: Kamu belum memasukkan node LokerPeta ke Inspector PintuKeluar!")
return
# Jika tombol ditekan TAPI peta belum diambil, abaikan perpindahan scene
if not node_loker.sudah_diambil:
print("❌ Tidak bisa keluar! Peta Artileri Dinding Atlantik belum diamankan!")
return
# --- JIKA SYARAT TERPENUHI, PROSES TRANSISI DIMULAI ---
print("🏃‍♂️ Misi Stage 2 Sukses! Menyiapkan pelarian...")
# Panggil target AnimationPlayer absolut seperti di pintu ruangan jaga kemarin
if get_node_or_null("/root/Node2D/TransitionLayer/fade_to_black"):
var anim_player = get_node("/root/Node2D/TransitionLayer/fade_to_black")
anim_player.play("fadeout")
print("🎬 Memutar animasi fadeout...")
# Tunggu dengan sabar sampai layar benar-benar hitam pekat
await anim_player.animation_finished
else:
print("⚠️ Peringatan: Jalur /root/Node2D/TransitionLayer/fade_to_black tidak ditemukan di stage ini!")
# Setelah layar gelap murni, baru pindah ke map berikutnya!
print("🚪 Melarikan diri ke area berikutnya: ", scene_tujuan)
var error_code = get_tree().change_scene_to_file(scene_tujuan)
if error_code != OK:
print("❌ Gagal pindah scene! Periksa apakah path file sudah benar: ", scene_tujuan)