@tool class_name Ground2D extends Node2D @export var scene_config: SceneConfig # @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() 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) # # collision boarder # if scene_config.boarder: # _load_collision_boarder() # light color # directional_light.color = scene_config.light_color # 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