using Godot; using System; using System.Collections.Generic; using System.Linq; using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Quest; using Babushka.scripts.CSharp.GameEntity.Entities; using Babushka.scripts.CSharp.GameEntity.Management; public partial class DetectInventoryContains : QuestFulfillmentBase { [Export(PropertyHint.ArrayType)] private ItemInstance[] _itemsToContain = null!; public override void _Ready() { QuestManager.Instance!.QuestsChanged += CheckInventory; EntityManager.Instance.GetUniqueEntity().inventory.InventoryContentsChanged += CheckInventory; CheckInventory(); } public override void _ExitTree() { QuestManager.Instance!.QuestsChanged -= CheckInventory; EntityManager.Instance.GetUniqueEntity().inventory.InventoryContentsChanged -= CheckInventory; } private void CheckInventory() { if (IsQuestActive() && EntityManager.Instance.GetUniqueEntity().inventory.HasItems(_itemsToContain)) { Fulfill(); } } }