using System.Collections.Generic; using Cirno.Scripts.Resources; using Godot; namespace Cirno.Scripts.Components; public class BulletInfo(BulletResource originalBulletResource) { public BulletResource OriginalBulletResource { get; set; } = originalBulletResource; public Vector2 Position { get; set; } public Vector2 Direction { get; set; } public float Speed { get; set; } public float LifeTime { get; set; } public bool DestroyOnCollision { get; set; } public BulletOwner Owner { get; set; } public DamageType DamageType { get; set; } public float Damage { get; set; } public float Knockback { get; set; } public int BulletCount { get; set; } public float RotationSpeed { get; set; } public float RotationOffset { get; set; } //public double Time { get; set; } public float Spread { get; set; } public bool RotateSprite { get; set; } = false; public bool Controllabe { get; set; } = false; public bool Freezable { get; set; } = true; public PackedScene BulletScene { get; set; } public PackedScene DestructionParticlesScene { get; set; } public IBulletModifier Modifier { get; set; } public List TimeModifiers { get; set; } = new List(); public bool Grazeable { get; set; } public float GrazeValue { get; set; } public BulletFlags Attributes { get; set; } #region Laser public bool IsLaser { get; set; } public float SpawnDelay { get; set; } = 0.3f; // Delay before beam appears public float PreFireTime { get; set; } = 0.5f; // Time before laser becomes lethal public float LethalTime { get; set; } = 1.5f; // Time laser remains lethal public Color PreFireColor { get; set; } = new Color(1, 0, 0, 0.5f); // Thin red beam public Color LethalColor { get; set; } = new Color(1, 0, 0, 1.0f); // Thicker beam #endregion }