67 lines
2.3 KiB
GDScript
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)
|