Files
tiny_tackle_heroes/Assets/_Project/Scripts/Enemies/EnemyModel.cs
T

64 lines
1.9 KiB
C#

using BumpCombat.Core;
using UnityEngine;
namespace BumpCombat.Enemies
{
[DisallowMultipleComponent]
public sealed class EnemyModel : CharacterModel
{
private EnemyDefinition definition;
private float maxHealthMultiplier = 1f;
private float moveSpeedMultiplier = 1f;
private float attackDamageMultiplier = 1f;
public EnemyDefinition Definition => definition;
public override float MaxHealth => definition == null
? 0f
: Evaluate(
CharacterStat.MaxHealth,
definition.MaxHealth * maxHealthMultiplier);
public override float MoveSpeed => definition == null
? 0f
: Evaluate(
CharacterStat.MoveSpeed,
definition.MoveSpeed * moveSpeedMultiplier);
public float AttackDamage => definition == null
? 0f
: CalculateAttackDamage(
definition.AttackDamage * attackDamageMultiplier);
public void ConfigureDefinition(EnemyDefinition enemyDefinition)
{
definition = enemyDefinition;
}
public void ConfigureEventMultipliers(
float healthMultiplier,
float speedMultiplier,
float damageMultiplier)
{
maxHealthMultiplier = Mathf.Max(1f, healthMultiplier);
moveSpeedMultiplier = Mathf.Max(0f, speedMultiplier);
attackDamageMultiplier = Mathf.Max(0f, damageMultiplier);
}
public float CalculatePatternDamage(
float patternMultiplier,
bool applyEventTuning)
{
if (definition == null)
{
return 0f;
}
float damage = definition.AttackDamage * patternMultiplier;
if (applyEventTuning)
{
damage *= attackDamageMultiplier;
}
return CalculateAttackDamage(damage);
}
}
}