using Cirno.Scripts.Components.Actors; using Cirno.Scripts.Resources; using Godot; namespace Cirno.Scripts.Components.FSM.Player; public partial class PlayerFSMItemUseModule : ModuleBase { [Export] public ActorResourceProvider Health { get; set; } [Export] public ActorResourceProvider Shield { get; set; } private PlayerStorageModule _storageModule; public Vector2 FacingDirection { get => _storageModule.FacingDirection; private set => _storageModule.FacingDirection = value; } public bool Enabled { get; set; } public override void EnterState(PlayerState state) { Enabled = true; } public override void ExitState(PlayerState state) { Enabled = false; } private IStateMachine _machine; public IStateMachine Machine => _machine; public override void Init(IStateMachine machine) { InventoryManager.Instance.ItemUsed += this.UseItem; _machine = machine; _storageModule ??= StateMachine.GetModule(); } private void UseItem(LootItem item, int totalcount) { if (!Enabled) return; GD.Print($"Used {item.ItemName} in player"); item.ItemEffect?.Execute(this, item); } public override void Process(double delta) { } public override void PhysicsProcess(double delta) { } }