Implement statuses, GolemCharge, GolemBerserk, stun
This commit is contained in:
parent
caf782c884
commit
ef9ec43c8a
16 changed files with 260 additions and 38 deletions
|
|
@ -175,6 +175,9 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
|
||||
// End of hero turn
|
||||
this.heroDeck.DiscardHand();
|
||||
foreach (BattleHero hero in this.heroes) {
|
||||
hero.TickStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator RunMonsterTurn() {
|
||||
|
|
@ -199,6 +202,9 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
|
||||
// End of monster turn
|
||||
this.monsterDeck.DiscardHand();
|
||||
foreach (BattleMonster monster in this.monsters) {
|
||||
monster.TickStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
public void NotifyHeroCardUsed(HeroCard card) {
|
||||
|
|
@ -243,11 +249,11 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
}
|
||||
|
||||
public bool CanUseHeroCard(HeroCard card) {
|
||||
return this.heroTurn && card.Owner.IsAlive() && this.heroEnergy.CanPayForCard(card);
|
||||
return this.heroTurn && card.Owner.CanUseCard(card) && this.heroEnergy.CanPayForCard(card);
|
||||
}
|
||||
|
||||
public bool CanUseMonsterCard(MonsterCard card) {
|
||||
return !this.heroTurn && card.Owner.IsAlive() && this.monsterEnergy.CanPayForCard(card);
|
||||
return !this.heroTurn && card.Owner.CanUseCard(card) && this.monsterEnergy.CanPayForCard(card);
|
||||
}
|
||||
|
||||
public BattleDeck<HeroCard> GetHeroDeck() {
|
||||
|
|
@ -305,14 +311,29 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
effect.Target.IncreaseMaxHP(effect.Amount);
|
||||
}
|
||||
|
||||
public void AcquireHeroCards(AcquireCardsEffect effect) {
|
||||
public void AcquireCards(AcquireCardsEffect effect) {
|
||||
if (effect.Participant == null) return;
|
||||
BattleHero hero = (BattleHero) effect.Participant;
|
||||
foreach (CardId cardId in effect.CardIds) {
|
||||
HeroCard acquiredCard = this.heroCardDatabase.CreateCard((int) cardId, hero);
|
||||
|
||||
if (effect.Participant.IsHero()) {
|
||||
this.AcquireCardsTyped(effect, this.heroDeck, this.heroCardDatabase);
|
||||
} else {
|
||||
this.AcquireCardsTyped(effect, this.monsterDeck, this.monsterCardDatabase);
|
||||
}
|
||||
}
|
||||
|
||||
private void AcquireCardsTyped<BaseCardT>(
|
||||
AcquireCardsEffect effect,
|
||||
BattleDeck<BaseCardT> deck,
|
||||
CardDatabase<BaseCardT> cardDatabase)
|
||||
where BaseCardT : BaseCard {
|
||||
foreach (int cardId in effect.CardIds) {
|
||||
BaseCardT acquiredCard = cardDatabase.CreateCard(cardId, effect.Participant);
|
||||
switch (effect.Zone) {
|
||||
case BattleZone.DrawPile:
|
||||
this.heroDeck.PutCardOnTopOfDrawPile(acquiredCard);
|
||||
deck.PutCardOnTopOfDrawPile(acquiredCard);
|
||||
break;
|
||||
case BattleZone.DiscardPile:
|
||||
deck.MoveCardToDiscard(acquiredCard);
|
||||
break;
|
||||
default:
|
||||
throw new System.NotImplementedException();
|
||||
|
|
@ -320,7 +341,7 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
}
|
||||
|
||||
if (effect.Zone == BattleZone.DrawPile) {
|
||||
this.heroDeck.ShuffleDrawPile();
|
||||
deck.ShuffleDrawPile();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -328,9 +349,11 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
private List<DamageTrigger> damageTriggers = new List<DamageTrigger>();
|
||||
|
||||
public int DealDamage(DealDamageEffect effect) {
|
||||
Debug.Log("DealDamage to " + effect.Target.GetDisplayName() + " " + effect.Amount);
|
||||
if (effect.Target == null) return 0;
|
||||
|
||||
int damageDealt = effect.Target.DealDamage(effect.Amount);
|
||||
Debug.Log("damageDealt " + damageDealt);
|
||||
foreach (DamageTrigger dt in this.damageTriggers) {
|
||||
if (dt.IsTriggeredBy(effect)) {
|
||||
EnqueueActivatedTrigger(dt);
|
||||
|
|
@ -355,6 +378,11 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
|
|||
effect.Target.AddBlock(effect.Amount);
|
||||
}
|
||||
|
||||
public void AddStatus(StatusEffect effect) {
|
||||
if (effect.Target == null) return;
|
||||
effect.Target.AddStatus(effect.Status, effect.Amount);
|
||||
}
|
||||
|
||||
public void ArmDamageTrigger(DamageTrigger damageTrigger) {
|
||||
this.damageTriggers.Add(damageTrigger);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue