78 lines
3.1 KiB
GDScript
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)
|