重构清理敌人类

This commit is contained in:
2026-09-15 11:07:01 +08:00
parent 421f8bf619
commit 88ed35e757
34 changed files with 568 additions and 457 deletions
@@ -8,55 +8,47 @@ namespace SepCore.Entity
[Serializable]
public class EnemyData : TargetableObjectData
{
private readonly EnemyConfig _enemyConfig;
public EnemyConfig Config { get; }
public EnemyData(int entityId, EnemyConfig enemyConfig, int level)
: base(enemyConfig.Prefab, entityId, CampType.Enemy)
{
_enemyConfig = enemyConfig;
Config = enemyConfig;
int effectiveLevel = Mathf.Max(1, level);
MaxHealthBase = enemyConfig.MaxHealth + enemyConfig.HpAddPerLevel * (effectiveLevel - 1);
}
public EnemyType EnemyType => _enemyConfig.EnemyType;
public EnemyType EnemyType => Config.EnemyType;
public string LogicType => _enemyConfig.LogicType;
public string LogicType => Config.LogicType;
public override int MaxHealthBase { get; }
public int AttackDamage => _enemyConfig.AttackDamage;
public int AttackDamage => Config.AttackDamage;
public float AttackCooldown => _enemyConfig.AttackCooldown;
public float AttackCooldown => Config.AttackCooldown;
public float AttackRange => _enemyConfig.AttackRange;
public float AttackRange => Config.AttackRange;
public float SpeedBase => _enemyConfig.Speed;
public float SpeedBase => Config.Speed;
public int DropCoin => _enemyConfig.CoinDrop;
public int DropCoin => Config.CoinDrop;
public int DropExp => _enemyConfig.ExpDrop;
public int DropExp => Config.ExpDrop;
public float DropPercent => _enemyConfig.DropPercent;
public float DropPercent => Config.DropPercent;
public float Scale => _enemyConfig.Scale;
public float Scale => Config.Scale;
public Color Color
{
get
{
// 空/非法颜色值视为无染色(乘以白色)。
return ColorUtility.TryParseHtmlString(_enemyConfig.Color, out Color color)
return ColorUtility.TryParseHtmlString(Config.Color, out Color color)
? color
: Color.white;
}
}
public IReadOnlyDictionary<string, string> Params => null;
public bool TryGetParam(string key, out string value)
{
value = null;
return false;
}
}
}
@@ -8,7 +8,7 @@ namespace SepCore.Entity
public class EnemyProjectileData : EntityDataBase
{
public EnemyProjectileData(int entityId, int ownerEntityId, CampType ownerCamp, int attackDamage,
float speed, float lifeTime, Vector3 direction, string assetName = "BulletHandgun")
float speed, float lifeTime, Vector3 direction, string assetName = "Projectile")
: base(assetName, entityId)
{
OwnerEntityId = ownerEntityId;