DealDamageEffect know how much was really dealt
This commit is contained in:
parent
8423a2a87a
commit
169210efbe
4 changed files with 15 additions and 7 deletions
|
|
@ -128,7 +128,8 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
monster.ResetBlock();
|
||||
}
|
||||
|
||||
this.Apply(new DealDamageEffect(heroes[this.enemyTarget], 2));
|
||||
DealDamageEffect damageEffect = new DealDamageEffect(heroes[this.enemyTarget], 2);
|
||||
this.Apply(damageEffect);
|
||||
|
||||
DecideEnemyTarget();
|
||||
StartHeroTurn();
|
||||
|
|
@ -222,14 +223,18 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
private List<Trigger> activatedTriggers = new List<Trigger>();
|
||||
private List<DamageTrigger> damageTriggers = new List<DamageTrigger>();
|
||||
|
||||
public void DealDamage(DealDamageEffect effect) {
|
||||
effect.Target.DealDamage(effect.Amount);
|
||||
public int DealDamage(DealDamageEffect effect) {
|
||||
int damageDealt = effect.Target.DealDamage(effect.Amount);
|
||||
foreach (DamageTrigger dt in this.damageTriggers) {
|
||||
if (dt.IsTriggeredBy(effect)) {
|
||||
EnqueueActivatedTrigger(dt);
|
||||
}
|
||||
}
|
||||
|
||||
// Do this after the card resolution is over to avoid reentraint effects.
|
||||
RunActivatedTriggers();
|
||||
|
||||
return damageDealt;
|
||||
}
|
||||
|
||||
public void AddBlock(BattleParticipant target, int amount) {
|
||||
|
|
|
|||
|
|
@ -31,14 +31,15 @@ public class BattleParticipant
|
|||
return this.maxHP;
|
||||
}
|
||||
|
||||
public void DealDamage(int damage) {
|
||||
public int DealDamage(int damage) {
|
||||
int blockedDamage = Math.Min(damage, this.block);
|
||||
if (blockedDamage > 0) {
|
||||
this.block -= blockedDamage;
|
||||
damage -= blockedDamage;
|
||||
}
|
||||
damage = Math.Min(this.hp, damage);
|
||||
this.hp -= damage;
|
||||
if (this.hp < 0) this.hp = 0;
|
||||
return damage;
|
||||
}
|
||||
|
||||
public void AddBlock(int block) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ public class DealDamageEffect : IBattleEffect
|
|||
{
|
||||
private BattleParticipant target;
|
||||
private int amount;
|
||||
private int amountDealt;
|
||||
|
||||
public DealDamageEffect(BattleParticipant target, int amount) {
|
||||
this.target = target;
|
||||
|
|
@ -13,9 +14,10 @@ public class DealDamageEffect : IBattleEffect
|
|||
}
|
||||
|
||||
public void Apply(IBattleEffectResolver resolver) {
|
||||
resolver.DealDamage(this);
|
||||
this.amountDealt = resolver.DealDamage(this);
|
||||
}
|
||||
|
||||
public BattleParticipant Target {get => this.target;}
|
||||
public int Amount {get => this.amount;}
|
||||
public int AmountDealt {get => this.amountDealt;}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||
using UnityEngine;
|
||||
|
||||
public interface IBattleEffectResolver {
|
||||
void DealDamage(DealDamageEffect effect);
|
||||
int DealDamage(DealDamageEffect effect);
|
||||
void AddBlock(BattleParticipant target, int amount);
|
||||
void IncreaseHeroMaxEnergy(int delta);
|
||||
void IncreaseMaxHP(IncreaseMaxHPEffect effect);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue