MIF_E31230535/stage_1.gd

78 lines
3.1 KiB
GDScript

extends Node2D
# --- 🛠️ PRELOAD CETAKAN TUTORIAL UTAMA ---
const TUTORIAL_SCENE = preload("res://tutorial.tscn")
@onready var player = $Player
@onready var anim_player = $TransitionLayer/fade_to_black
# ==============================================================================
# 🎛️ SETELAN AUDIO MANUAL STAGE 1 (UBAH DI SINI)
# ==============================================================================
var VOLUME_AUDIO_1: float = -5.0
var VOLUME_AUDIO_2: float = -0.0
var DURASI_FADE_IN_1: float = 3.0
var DURASI_FADE_IN_2: float = 2.0
var DURASI_FADE_OUT: float = 1.5
# ==============================================================================
@onready var audio_player_1 = $AudioStreamPlayer
@onready var audio_player_2 = $AudioStreamPlayer2
# 🛠️ BARU: Variabel pengaman agar area tutorial stealth hanya aktif sekali saja
var stealth_tutorial_sudah_dipicu: bool = false
func _ready():
player.SPEED = 500
# 🎬 MEMULAI ANIMASI FADE IN SAAT STAGE 1 PERTAMA KALI DIMUAT
if anim_player and anim_player.has_animation("fadein"):
anim_player.play("fadein")
print("🎬 Stage 1 Dimulai: Memutar animasi fadein...")
else:
print("⚠️ Peringatan: AnimationPlayer atau animasi 'fadein' tidak ditemukan di Stage 1!")
# 🎵 SISTEM FADE IN OTOMATIS AUDIO 1
if audio_player_1:
if audio_player_1.stream and audio_player_1.stream is AudioStreamOggVorbis:
audio_player_1.stream.loop = true
audio_player_1.volume_db = -80.0
audio_player_1.play()
var tween1 = create_tween()
tween1.tween_property(audio_player_1, "volume_db", VOLUME_AUDIO_1, DURASI_FADE_IN_1)\
.set_trans(Tween.TRANS_QUAD)\
.set_ease(Tween.EASE_OUT)
# 🎵 SISTEM FADE IN OTOMATIS AUDIO 2
if audio_player_2:
if audio_player_2.stream and audio_player_2.stream is AudioStreamOggVorbis:
audio_player_2.stream.loop = true
audio_player_2.volume_db = -80.0
audio_player_2.play()
var tween2 = create_tween()
tween2.tween_property(audio_player_2, "volume_db", VOLUME_AUDIO_2, DURASI_FADE_IN_2)\
.set_trans(Tween.TRANS_QUAD)\
.set_ease(Tween.EASE_OUT)
print("🎵 Kedua Audio di Stage 1 berhasil diputar dengan efek Fade-In terpisah!")
# 🛠️ BARU: FUNGSI TRIGGER SAAT PLAYER MASUK KE AREA2D TUTORIAL STEALTH
func _on_tutorial_area_body_entered(body: Node2D) -> void:
# Memastikan yang masuk grup pemain, belum pernah aktif, dan game sedang jalan
if body.is_in_group("pemain") and not stealth_tutorial_sudah_dipicu:
stealth_tutorial_sudah_dipicu = true # Kunci area agar tidak bisa meledak lagi
print("💡 Player mendekati musuh pertama. Memunculkan tutorial stealth takedown...")
var tutorial_instance = TUTORIAL_SCENE.instantiate()
# Masukkan teks narasi dan panduan tombol mekanik sergap belakang
tutorial_instance.teks_panduan = "Ada prajurit musuh didepanmu! Jalanmu kini terhalang.\n\nTutorial:\nDekati musuh dari belakang, kemudian klik tombol 'Interact' untuk menghabisi diam-diam!"
# Munculkan ke rumpun adegan aktif (Otomatis mem-pause game via Engine.time_scale di dalam tutorial.gd)
get_tree().current_scene.add_child(tutorial_instance)