xiandie/scene/ground/ground.gd

59 lines
1.9 KiB
GDScript

@tool
class_name Ground2D extends Node2D
@export_group("Player", "player_")
@export var player_y_fixed := true
@export var player_y := 45:
set(val):
player_y = val
if is_node_ready():
player.position.y = player_y
@export_group("Sound")
@export_enum("none", "ghost", "walking", "running", "crawling", "concrete")
var footstep_type: String = "concrete":
set(val):
footstep_type = val
if is_node_ready():
_load_footstep_audio()
@onready var player = %MainPlayer as MainPlayer
@onready var directional_light := %DirectionalLight2D as DirectionalLight2D
@onready var foreground = %ParallaxForeground as ParallaxBackground
@onready var footstep_audio = %FootstepAudioPlayer as RandomAudioStreamPlayer
const FOOTSTEP_AUDIO = {
#"wood": preload("res://config/audio/footstep/footstep_wood.tres"),
#"carpet": preload("res://config/audio/footstep/footstep_carpet.tres"),
"concrete": preload("res://config/audio/footstep/footstep_concrete.tres"),
#"grass": preload("res://config/audio/footstep/footstep_grass.tres"),
#"snow": preload("res://config/audio/footstep/footstep_snow.tres"),
"ghost": preload("res://config/audio/sfx/footstep_ghost.tres"),
"walking": preload("res://config/audio/sfx/footstep_walking.tres"),
"running": preload("res://config/audio/sfx/footstep_running.tres"),
"crawling": preload("res://config/audio/sfx/footstep_crawling.tres"),
}
func _ready() -> void:
foreground.layer = GlobalConfig.CANVAS_LAYER_FG
player.position.y = player_y
if Engine.is_editor_hint():
return
_load_footstep_audio()
# %ColorRectTop.visible = true
# %ColorRectBottom.visible = true
func _load_footstep_audio():
# foot step sound
footstep_audio.audio_collections.clear()
if footstep_type != "none":
var audio = FOOTSTEP_AUDIO[footstep_type] as AudioStreamCollection
footstep_audio.audio_collections.append(audio)
func play_footstep_sound() -> void:
if not footstep_audio.audio_collections.is_empty():
footstep_audio.play_random()