diff --git a/Assets/Battle/BattleController.cs b/Assets/Battle/BattleController.cs index b884848..ce42f18 100644 --- a/Assets/Battle/BattleController.cs +++ b/Assets/Battle/BattleController.cs @@ -92,7 +92,6 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe // Start is called before the first frame update void Start() { - DecideEnemyTarget(); StartHeroTurn(); } @@ -128,19 +127,12 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe monster.ResetBlock(); } - DealDamageEffect damageEffect = new DealDamageEffect(heroes[this.enemyTarget], 2); - this.Apply(damageEffect); + MonsterCard card = MonsterCardDatabase.CreateCard(MCardId.VampireFangs, this.monsters[0]); + StartCoroutine(UseMonsterCard(card)); - DecideEnemyTarget(); StartHeroTurn(); } - private int enemyTarget; - private void DecideEnemyTarget() { - this.enemyTarget = Random.Range(0, 3); - Debug.Log("Will attack " + this.heroes[this.enemyTarget].GetDisplayName()); - } - public void NotifyHeroCardUsed(HeroCard card) { if (!CanUseHeroCard(card)) { throw new System.InvalidOperationException("Cannot use card " + card.GetDisplayName()); @@ -159,6 +151,11 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe } } + public IEnumerator UseMonsterCard(MonsterCard card) { + yield return card.Use(this, this); + // TODO: Manage monster deck. + } + public void NotifyHeroTurnPassed() { if (this.heroTurn) { StartEnemyTurn(); diff --git a/Assets/Battle/CardDatabase.cs b/Assets/Battle/CardDatabase.cs index 5638cff..bb90ac1 100644 --- a/Assets/Battle/CardDatabase.cs +++ b/Assets/Battle/CardDatabase.cs @@ -20,7 +20,7 @@ public class CardDatabase {CardId.Thunderstorm, HeroId.Shaman}, }; - public static BaseCard CreateCard(CardId id, BattleParticipant owner) { + public static HeroCard CreateCard(CardId id, BattleParticipant owner) { switch (id) { case CardId.CrashingPunch: diff --git a/Assets/Battle/CardsMonsters/MCardVampireFangs.cs b/Assets/Battle/CardsMonsters/VampireFangsMCard.cs similarity index 89% rename from Assets/Battle/CardsMonsters/MCardVampireFangs.cs rename to Assets/Battle/CardsMonsters/VampireFangsMCard.cs index cefb794..b243e1b 100644 --- a/Assets/Battle/CardsMonsters/MCardVampireFangs.cs +++ b/Assets/Battle/CardsMonsters/VampireFangsMCard.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using UnityEngine; -public class MCardVampireFangs : MonsterCard +public class VampireFangsMCard : MonsterCard { - public MCardVampireFangs(BattleParticipant owner) + public VampireFangsMCard(BattleParticipant owner) : base(owner, MCardId.VampireFangs, "VampireFangs", 2, CardType.Attack, "Steals 2 HP from target.") { } diff --git a/Assets/Battle/CardsMonsters/MCardVampireFangs.cs.meta b/Assets/Battle/CardsMonsters/VampireFangsMCard.cs.meta similarity index 100% rename from Assets/Battle/CardsMonsters/MCardVampireFangs.cs.meta rename to Assets/Battle/CardsMonsters/VampireFangsMCard.cs.meta diff --git a/Assets/Battle/MonsterCardDatabase.cs b/Assets/Battle/MonsterCardDatabase.cs index 447634b..c424485 100644 --- a/Assets/Battle/MonsterCardDatabase.cs +++ b/Assets/Battle/MonsterCardDatabase.cs @@ -8,4 +8,13 @@ public enum MCardId { public static class MonsterCardDatabase { + public static MonsterCard CreateCard(MCardId id, BattleParticipant owner) { + switch (id) + { + case MCardId.VampireFangs: + return new VampireFangsMCard(owner); + default: + throw new System.ArgumentException("MCardId unknown", "id"); + } + } } diff --git a/TODO.txt b/TODO.txt index 3b9369a..60d663e 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1 +1,4 @@ - Make API of IBattleEffectResolver take in effects instead of params +- Make VampireFangs hit hero with highest HP +- Control flow of battle with state machine or coroutines +- Make battle end