using Godot; using System; using System.Diagnostics; using System.Linq; using Cirno.Scripts; using Cirno.Scripts.Resources; using Godot.Collections; public partial class Interactable : Area2D { [Export] public Array Requirements = new Array(); protected InventoryManager _inventoryManager; public override void _Ready() { _inventoryManager = this.GetInventoryManager(); } protected bool MeetsRequirements() { if (Requirements.Any()) { if (_inventoryManager.HasItems(Requirements.Select(x => x.Item).ToList())) { GD.Print($"Requirements for activation of {this.Name} successfully met: {string.Join(",", Requirements.Select(x => x.Item))} "); return true; } else { GD.Print($"Requirements for activation of {this.Name} not met: {string.Join(",", Requirements.Select(x => x.Item))} "); return false; } } return true; } public virtual bool Activate() { return true; } public virtual bool CanActivate() { return true; } }