Clean up events, add weapon tag for weaker on swing

This commit is contained in:
2026-02-09 23:50:15 -08:00
parent aba325ff2b
commit 90d054a3c6
34 changed files with 301 additions and 125 deletions

View File

@@ -11,13 +11,18 @@ public partial class UnlockableDoor : Node3D, IDoor
public void OnReady()
{
UnlockArea.AreaEntered += UnlockArea_AreaEntered;
UnlockArea.AreaEntered += UnlockArea_AreaEntered;
}
private void UnlockArea_AreaEntered(Area3D area)
{
var children = GetChildren();
foreach (var child in children)
child.QueueFree();
var children = GetChildren();
foreach (var child in children)
child.QueueFree();
}
public void OnExitTree()
{
UnlockArea.AreaEntered -= UnlockArea_AreaEntered;
}
}

View File

@@ -61,4 +61,10 @@ public partial class Altar : SpecialFloor, IDungeonFloor
}
public void ExitReached() => Game.FloorExitReached();
public void OnExitTree()
{
Exit.AreaEntered -= Exit_AreaEntered;
NoExitArea.AreaEntered -= NoExitArea_AreaEntered;
}
}

View File

@@ -72,4 +72,12 @@ public partial class BossRoomA : SpecialFloor, IBossRoom, IDungeonFloor
}
public override (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() { return (PlayerSpawn.Rotation, new Vector3(PlayerSpawn.GlobalPosition.X, -2.5f, PlayerSpawn.GlobalPosition.Z)); }
public void OnExitTree()
{
ActivateTrap.BodyEntered -= ActivateTrap_BodyEntered;
_exit.AreaEntered -= Exit_AreaEntered;
OxFace.HealthComponent.HealthReachedZero -= CheckForBossFightEnd;
HorseHead.HealthComponent.HealthReachedZero -= CheckForBossFightEnd;
}
}

View File

@@ -1,7 +1,6 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
using System.Collections.Immutable;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
@@ -47,4 +46,10 @@ public partial class BossRoomB : SpecialFloor, IBossRoom, IDungeonFloor
if (area.GetOwner() is IPlayer)
ExitReached();
}
public void OnExitTree()
{
ActivateTrap.BodyEntered -= ActivateTrap_AreaEntered;
_exit.AreaEntered -= Exit_AreaEntered;
}
}

View File

@@ -18,13 +18,18 @@ public partial class CorridorRoom : Node3D
public void Setup()
{
if (_room != null)
_room.BodyEntered += Room_BodyEntered;
if (_room != null)
_room.BodyEntered += Room_BodyEntered;
}
private void Room_BodyEntered(Node3D body)
{
if (!Game.CurrentFloor.FloorIsLoaded)
return;
if (!Game.CurrentFloor.FloorIsLoaded)
return;
}
public void OnExitTree()
{
_room.BodyEntered -= Room_BodyEntered;
}
}

View File

@@ -18,15 +18,21 @@ public partial class ExitRoom : DungeonRoom
public override void _Ready()
{
_exit.AreaEntered += Exit_AreaEntered;
_exit.AreaEntered += Exit_AreaEntered;
}
public void ExitReached()
=> Game.FloorExitReached();
=> Game.FloorExitReached();
private void Exit_AreaEntered(Area3D area)
{
if (area.GetOwner() is IPlayer)
ExitReached();
if (area.GetOwner() is IPlayer)
ExitReached();
}
public new void OnExitTree()
{
base.OnExitTree();
_exit.AreaEntered -= Exit_AreaEntered;
}
}

View File

@@ -3,6 +3,7 @@ using Chickensoft.Introspection;
using Godot;
using System.Linq;
using Zennysoft.Ma.Adapter;
using static System.Net.Mime.MediaTypeNames;
namespace Zennysoft.Game.Ma;
@@ -24,4 +25,9 @@ public partial class FinalFloor : SpecialFloor
{
_player.Die();
}
public void OnExitTree()
{
Exit.AreaEntered -= Exit_AreaEntered;
}
}

View File

@@ -28,4 +28,10 @@ public partial class JumpScareRoom : DungeonRoom
DialogueController.ShowDialogue(Dialogue, "general");
JumpScare.SetMonitoring(false);
}
public new void OnExitTree()
{
base.OnExitTree();
JumpScare.AreaEntered -= JumpScare_AreaEntered;
}
}

View File

@@ -85,4 +85,12 @@ public partial class Overworld : SpecialFloor, IDungeonFloor
public override (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() { return (PlayerSpawnPoint.Rotation, new Vector3(PlayerSpawnPoint.GlobalPosition.X, 2.4f, PlayerSpawnPoint.GlobalPosition.Z)); }
public void OnExitTree()
{
Exit.AreaEntered -= Exit_AreaEntered;
RestoreArea.AreaEntered -= RestoreArea_AreaEntered;
RestoreArea.AreaExited -= RestoreArea_AreaExited;
RestoreTimer.Timeout -= RestoreTimer_Timeout;
}
}