using Cirno.Scripts.Components.FSM.Player; using Godot; namespace Cirno.Scripts.Resources.ItemEffects; [GlobalClass] [Tool] public partial class SpiderbombEffectResource : ItemEffectResource { public override IITemEffectMachine Execute(PlayerFSMItemUseModule parent, LootItem item) { return new SpiderbombEffectmachine(this, parent, item).Execute(); } public class SpiderbombEffectmachine(SpiderbombEffectResource resource, PlayerFSMItemUseModule parent, LootItem item) : IITemEffectMachine { public IITemEffectMachine Execute() { var bullet = parent.CreateChildOf(GameManager.Instance.BulletsContainer, item.WeaponData.BulletData.BulletScene, parent.GlobalPosition); var bulletData = item.WeaponData.MakeBullet(parent.GlobalPosition); bullet.Initialize(bulletData, GameManager.Instance); bullet.SetDirection(parent.FacingDirection); bullet.RotateSpriteDegrees(-90); //bullet.SetDirection(_facingDirection); bullet.Speed = item.WeaponData.BulletData.BulletSpeed; parent.Machine.SetState(PlayerState.Controlling); //RequestMovementDisable(true); // set camera GameManager.Instance.CameraTargetObject(bullet); // set event destroy bullet.OnDestroy += () => { GameManager.Instance.CameraTargetPlayer(); parent.Machine.SetState(PlayerState.Active); //RequestMovementDisable(false); }; return this; } } }