43 lines
1.3 KiB
GDScript
43 lines
1.3 KiB
GDScript
extends Node3D
|
|
|
|
@onready var world: Node3D = $World/ChunkManager
|
|
@onready var dolphin: CharacterBody3D = $Dolphin
|
|
@onready var hud: CanvasLayer = $Dolphin/HUD
|
|
@onready var plankton_follower: Node3D = $PlanktonFollower
|
|
|
|
|
|
func _ready() -> void:
|
|
dolphin.block_break_requested.connect(_on_block_break)
|
|
dolphin.block_place_requested.connect(_on_block_place)
|
|
dolphin.echolocation_triggered.connect(_on_echolocation)
|
|
|
|
if is_instance_valid(hud) and hud.has_method("connect_to_dolphin"):
|
|
hud.connect_to_dolphin(dolphin)
|
|
|
|
AudioManager.play_ambient_loop("underwater_ambient")
|
|
AudioManager.play_music("underwater_theme")
|
|
AudioManager.play_whale_call_random()
|
|
|
|
world.world_seed = 12345
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
world.update_player_position(dolphin.global_position)
|
|
plankton_follower.global_position = dolphin.global_position
|
|
|
|
|
|
func _on_block_break(hit_position: Vector3, _normal: Vector3) -> void:
|
|
var broken_id := world.break_block(hit_position)
|
|
if broken_id > 0:
|
|
AudioManager.play_bubble_sfx(hit_position)
|
|
|
|
|
|
func _on_block_place(hit_position: Vector3, normal: Vector3) -> void:
|
|
var place_pos := hit_position + normal * 0.5
|
|
var current_selected_block := 2
|
|
world.place_block(place_pos, current_selected_block)
|
|
|
|
|
|
func _on_echolocation(position: Vector3, _radius: float) -> void:
|
|
AudioManager.play_bubble_sfx(position)
|