mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
Locked Doors
This commit is contained in:
parent
e62b539a1e
commit
e25da0fe16
20 changed files with 318 additions and 61 deletions
24
Scripts/Interactables/RogueliteDoorLock.cs
Normal file
24
Scripts/Interactables/RogueliteDoorLock.cs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
using Cirno.Scripts.Controllers;
|
||||
|
||||
namespace Cirno.Scripts.Interactables;
|
||||
|
||||
public partial class RogueliteDoorLock : Switch
|
||||
{
|
||||
public RoomConnection Connection { get; set; }
|
||||
|
||||
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
|
||||
{
|
||||
base.Activate(activationType);
|
||||
|
||||
if (!MeetsRequirements()) return false;
|
||||
|
||||
Connection.FromDoor.Activate(activationType);
|
||||
Connection.ToDoor.Activate(activationType);
|
||||
|
||||
InventoryManager.Instance.RemoveItem("GRAY_KEY", 1);
|
||||
|
||||
this.QueueFree();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
1
Scripts/Interactables/RogueliteDoorLock.cs.uid
Normal file
1
Scripts/Interactables/RogueliteDoorLock.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://6n7duf35c52l
|
||||
|
|
@ -25,15 +25,25 @@ public partial class Switch : Interactable
|
|||
|
||||
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
|
||||
{
|
||||
ActivationType activationTypeToUse;
|
||||
if (activationType is ActivationType.Use)
|
||||
{
|
||||
activationTypeToUse = ActivationType;
|
||||
}
|
||||
else
|
||||
{
|
||||
activationTypeToUse = activationType;
|
||||
}
|
||||
|
||||
if (!MeetsRequirements()) return false;
|
||||
_activationSound?.Play();
|
||||
|
||||
EmitSignal(SignalName.OnActivated, (int)activationType);
|
||||
EmitSignal(SignalName.OnActivated, (int)activationTypeToUse);
|
||||
|
||||
// Compatibility for old single system
|
||||
bool success = ActivateTarget(Target, activationType);
|
||||
bool success = ActivateTarget(Target, activationTypeToUse);
|
||||
|
||||
return Targets.Aggregate(success, (current, target) => ActivateTarget(target, activationType) | success);
|
||||
return Targets.Aggregate(success, (current, target) => ActivateTarget(target, activationTypeToUse) | success);
|
||||
}
|
||||
|
||||
private bool ActivateTarget(Node2D target, ActivationType activationType = ActivationType.Toggle)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue