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;
public bool IsAssembledIntoTower { get; set; }
///
/// 组件约束(先沿用 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;
}
}
}