Interactable interface

This commit is contained in:
MaddoScientisto 2025-03-09 21:58:25 +01:00
commit 54d9824581
27 changed files with 102 additions and 61 deletions

View file

@ -33,7 +33,7 @@ public partial class AlarmBox : Interactable
_sprite.Play("alarmed");
}
public override bool Activate()
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (MeetsRequirements() && _alarmManager.IsAlarmOn)
{

View file

@ -1,10 +1,11 @@
using Godot;
using System;
using Cirno.Scripts;
public partial class Computer : Interactable
{
[Export] public Activable Target { get; set; }
public override bool Activate()
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (MeetsRequirements())
{

View file

@ -1,8 +1,12 @@
namespace Cirno.Scripts.Interactables;
using Godot;
namespace Cirno.Scripts.Interactables;
public interface IInteractable
{
public bool Activate();
public bool Activate(ActivationType activationType = ActivationType.Toggle);
public bool CanActivate();
public Vector2 GetPosition();
//protected bool MeetsRequirements();
}

View file

@ -8,7 +8,7 @@ public partial class ItemPickup : Interactable
{
[Export] public Array<LootItem> LootTable = new Array<LootItem>();
public override bool Activate()
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
GD.Print("Attempting to Pickup Item");

View file

@ -7,7 +7,7 @@ namespace Cirno.Scripts.Interactables;
public partial class Switch : Interactable
{
[Export] public Node2D Target { get; set; }
[Export] public Array<Node2D> Targets { get; private set; } = new Array<Node2D>();
[Export] public Array<Node2D> Targets { get; private set; } = [];
[Export] public ActivationType ActivationType { get; set; } = ActivationType.Toggle;
private AudioStreamPlayer2D _activationSound;
@ -19,7 +19,7 @@ public partial class Switch : Interactable
_activationSound = GetNodeOrNull<AudioStreamPlayer2D>(_activationSoundName);
}
public override bool Activate()
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (!MeetsRequirements()) return false;
_activationSound?.Play();

View file

@ -19,7 +19,7 @@ public partial class Valve : Interactable
SetState(_activationState);
}
public override bool Activate()
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (MeetsRequirements() && Target is IActivable activatable)
{