mirror of
https://github.com/kodzukye/scrap-signal.git
synced 2026-04-26 19:17:35 +00:00
- Replace GridContainer-based puzzle with drag-and-drop wire system - Add draw_wires() and on_canvas_input() driven by WireCanvas node - Shuffle right-side endpoints for varied puzzle layout - Fix type inference errors (Dictionary values cast to Array/Color) - Fix WireCanvas size_flags_vertical to SIZE_SHRINK_CENTER - Set Panel custom_minimum_size and VBox to prevent layout overflow - Title and StatusLabel now always visible
67 lines
1.9 KiB
GDScript
67 lines
1.9 KiB
GDScript
extends Node
|
|
|
|
var music_player : AudioStreamPlayer
|
|
var sfx_player : AudioStreamPlayer
|
|
|
|
const AMBIANCE_VOLUME_DB := -12.0
|
|
const SFX_VOLUME_DB := -8.0
|
|
|
|
const AMBIANCES := {
|
|
"entrepot": preload("res://assets/audio/music/entrepot.ogg"),
|
|
"atelier": preload("res://assets/audio/music/atelier.ogg"),
|
|
"cour": preload("res://assets/audio/music/cour.ogg"),
|
|
}
|
|
|
|
const SFX := {
|
|
"item_pickup": preload("res://assets/audio/sfx/item_pickup.ogg"),
|
|
"interact": preload("res://assets/audio/sfx/interact.ogg"),
|
|
"door_unlock": preload("res://assets/audio/sfx/door_unlocking.ogg"),
|
|
"repair_success": preload("res://assets/audio/sfx/succesful_repair.ogg"),
|
|
}
|
|
|
|
func _ready() -> void:
|
|
process_mode = Node.PROCESS_MODE_ALWAYS
|
|
|
|
music_player = AudioStreamPlayer.new()
|
|
music_player.name = "MusicPlayer"
|
|
music_player.bus = "Ambient"
|
|
music_player.volume_db = AMBIANCE_VOLUME_DB
|
|
add_child(music_player)
|
|
music_player.process_mode = Node.PROCESS_MODE_ALWAYS
|
|
|
|
sfx_player = AudioStreamPlayer.new()
|
|
sfx_player.name = "SfxPlayer"
|
|
sfx_player.bus = "SFX"
|
|
sfx_player.volume_db = SFX_VOLUME_DB
|
|
add_child(sfx_player)
|
|
sfx_player.process_mode = Node.PROCESS_MODE_ALWAYS
|
|
|
|
func _on_music_finished() -> void:
|
|
music_player.play()
|
|
|
|
func play_ambiance(zone: String) -> void:
|
|
if not AMBIANCES.has(zone):
|
|
return
|
|
if music_player.stream == AMBIANCES[zone] and music_player.playing:
|
|
return
|
|
|
|
var tween := create_tween()
|
|
tween.tween_property(music_player, "volume_db", -40.0, 0.8)
|
|
tween.tween_callback(func():
|
|
music_player.stream = AMBIANCES[zone]
|
|
music_player.play()
|
|
)
|
|
tween.tween_property(music_player, "volume_db", AMBIANCE_VOLUME_DB, 1.2)
|
|
|
|
func stop_ambiance() -> void:
|
|
var tween := create_tween()
|
|
tween.tween_property(music_player, "volume_db", -40.0, 1.0)
|
|
tween.tween_callback(music_player.stop)
|
|
|
|
func play_sfx(sfx_name: String) -> void:
|
|
if not SFX.has(sfx_name):
|
|
push_warning("SFX introuvable : " + sfx_name)
|
|
return
|
|
sfx_player.stream = SFX[sfx_name]
|
|
sfx_player.play()
|