cirnogodot/Scripts/Resources/ItemEffects/SpiderbombEffectResource.cs

45 lines
No EOL
1.6 KiB
C#

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<Bullet>(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;
}
}
}