xiandie/scene/ground/ground.gd

64 lines
1.9 KiB
GDScript3
Raw Normal View History

@tool
class_name Ground2D extends Node2D
@export var scene_config: SceneConfig
2025-01-06 08:06:20 +00:00
# @export var build_boarder := false:
# set(new_val):
# build_boarder = false
# _build_boarder()
@export var reload := false:
set(new_val):
reload = false
load_config()
@onready var directional_light := %DirectionalLight2D as DirectionalLight2D
@onready var foreground = %ParallaxForeground as ParallaxBackground
var footstep_audio = RandomAudioStreamPlayer.new()
2025-01-06 08:06:20 +00:00
func play_footstep_sound() -> void:
if not footstep_audio.audio_collections.is_empty():
footstep_audio.play_random()
func _ready() -> void:
foreground.layer = GlobalConfig.CANVAS_LAYER_FG
# %ColorRectTop.visible = true
# %ColorRectBottom.visible = true
add_child(footstep_audio)
load_config()
func load_config():
if not scene_config:
return
var type = scene_config.footstep_type
# foot step sound
footstep_audio.audio_collections.clear()
if type != "none":
var audio = SceneConfig.FOOTSTEP_AUDIO[type] as AudioStreamCollection
footstep_audio.audio_collections.append(audio)
2025-01-06 08:06:20 +00:00
# # collision boarder
# if scene_config.boarder:
# _load_collision_boarder()
# light color
# directional_light.color = scene_config.light_color
2025-01-06 08:06:20 +00:00
# func _build_boarder() -> void:
# if scene_config and $BGSprite2D and $BGSprite2D.texture:
# var image = $BGSprite2D.texture.get_image()
# var origin = $BGSprite2D.position + $BGSprite2D.offset
# var points = PackedVector2Array()
# for i in range(image.get_width()):
# for j in range(image.get_height()):
# if image.get_pixel(i, j).a > 0:
# points.append(origin + Vector2(i, j))
# var boarder = Geometry2D.convex_hull(points)
# scene_config.boarder = boarder
# _load_collision_boarder()
# func _load_collision_boarder() -> void:
# if scene_config and scene_config.boarder and $StaticBody2D/CollisionPolygon2D:
# $StaticBody2D/CollisionPolygon2D.polygon = scene_config.boarder