using System; namespace GeometryTD.Definition { /// /// 背包内组件实例基类(非 DataTable,表示玩家持有物)。 /// [Serializable] public abstract class TowerCompItemData { /// /// 组件实例唯一 Id。 /// public long InstanceId { get; set; } /// /// 组件配置 Id(对应 DataTable Id)。 /// public int ConfigId { get; set; } /// /// 组件槽位类型。 /// public TowerCompSlotType SlotType { get; protected set; } /// /// 组件名称。 /// public string Name { get; set; } /// /// 组件品质。 /// public RarityType Rarity { get; set; } /// /// 组件当前耐久(0~100)。 /// public float Endurance { get; set; } = 100f; /// /// 组件约束(先沿用 DataTable 原定义)。 /// public string Constraint { get; set; } /// /// 组件当前 Tag(实例态)。 /// public TagType[] Tags { get; set; } } [Serializable] public sealed class MuzzleCompItemData : TowerCompItemData { public MuzzleCompItemData() { SlotType = TowerCompSlotType.Muzzle; } public int[] AttackDamage { get; set; } public float DamageRandomRate { get; set; } public AttackMethodType AttackMethodType { get; set; } } [Serializable] public sealed class BearingCompItemData : TowerCompItemData { public BearingCompItemData() { SlotType = TowerCompSlotType.Bearing; } public float[] RotateSpeed { get; set; } public float[] AttackRange { get; set; } } [Serializable] public sealed class BaseCompItemData : TowerCompItemData { public BaseCompItemData() { SlotType = TowerCompSlotType.Base; } public float[] AttackSpeed { get; set; } public AttackPropertyType AttackPropertyType { get; set; } } [Serializable] public sealed class AccessoryItemData : TowerCompItemData { public AccessoryItemData() { SlotType = TowerCompSlotType.Accessory; } } }