Implement BGM and SFX event system

This commit is contained in:
2024-09-14 16:01:55 -07:00
parent 0a71339bbe
commit cd8806a9fe
38 changed files with 718 additions and 116 deletions

View File

@@ -10,7 +10,6 @@ namespace GameJamDungeon;
public interface IMap : INode3D
{
event Map.TeleportReachedEventHandler TeleportReached;
event Map.DungeonFinishedGeneratingEventHandler DungeonFinishedGenerating;
public List<IDungeonFloor> Floors { get; }
@@ -28,12 +27,12 @@ public partial class Map : Node3D, IMap
[Node] public Area3D Teleport { get; set; } = default!;
[Signal]
public delegate void TeleportReachedEventHandler();
[Signal]
public delegate void DungeonFinishedGeneratingEventHandler();
[Dependency]
public IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>();
public List<IDungeonFloor> Floors { get; set; } = default!;
private IDungeonFloor _currentFloor;
@@ -59,8 +58,5 @@ public partial class Map : Node3D, IMap
public Vector3 GetPlayerSpawnPosition() => _currentFloor.GetPlayerSpawnPoint();
private void OnTeleportEntered(Node3D body)
{
EmitSignal(SignalName.TeleportReached);
}
private void OnTeleportEntered(Node3D body) => GameEventDepot.OnTeleportEntered();
}

View File

@@ -1,6 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://bc1sp6xwe0j65"]
[gd_scene load_steps=5 format=3 uid="uid://bc1sp6xwe0j65"]
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="1_sr15j"]
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_hhw2n"]
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="4_pgrs5"]
[ext_resource type="Script" path="res://src/map/dungeon/floors/DungeonFloor.cs" id="5_bsukb"]
@@ -10,8 +11,9 @@ script = ExtResource("5_bsukb")
[node name="DungeonGenerator" type="Node3D" parent="."]
unique_name_in_owner = true
script = ExtResource("1_sr15j")
room_scenes = Array[PackedScene]([ExtResource("3_hhw2n")])
corridor_room_scene = ExtResource("4_pgrs5")
dungeon_size = Vector3i(20, 1, 20)
voxel_scale = Vector3(32, 32, 32)
dungeon_size = Vector3i(40, 1, 40)
voxel_scale = Vector3(16, 16, 16)
generate_on_ready = false
place_even_if_fail = true

File diff suppressed because one or more lines are too long