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); } } }