From d513657396d9eb7bf11a6aa2d9b9db8ddb9daa60 Mon Sep 17 00:00:00 2001 From: henriquenakashima Date: Wed, 30 Sep 2020 19:25:38 -0400 Subject: [PATCH] Monsters play emotions from hand --- Assets/Battle/BattleController.cs | 10 +- Assets/Battle/CardsMonsters/EagernessMCard.cs | 17 ++++ .../CardsMonsters/EagernessMCard.cs.meta | 11 +++ Assets/Battle/CheatBattle.cs | 17 +++- Assets/Battle/MonsterCardDatabase.cs | 3 + Assets/Resources/CardArt/MonsterEagerness.jpg | Bin 0 -> 14797 bytes .../CardArt/MonsterEagerness.jpg.meta | 92 ++++++++++++++++++ TODO.txt | 1 - 8 files changed, 140 insertions(+), 11 deletions(-) create mode 100644 Assets/Battle/CardsMonsters/EagernessMCard.cs create mode 100644 Assets/Battle/CardsMonsters/EagernessMCard.cs.meta create mode 100644 Assets/Resources/CardArt/MonsterEagerness.jpg create mode 100644 Assets/Resources/CardArt/MonsterEagerness.jpg.meta diff --git a/Assets/Battle/BattleController.cs b/Assets/Battle/BattleController.cs index 9ce5f56..7b03a75 100644 --- a/Assets/Battle/BattleController.cs +++ b/Assets/Battle/BattleController.cs @@ -35,6 +35,7 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe private EnergyPool monsterEnergy; private InsightLevel insightLevel; private HandPlayability heroHandPlayability; + private HandPlayability monsterHandPlayability; private delegate void BattleStateChangedAction(); private event BattleStateChangedAction OnBattleStateChanged; @@ -129,6 +130,9 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe this.heroHandPlayability = new HandPlayability( this.state, this.heroEnergy, TeamChoice.Heroes, this.heroDeck); this.OnBattleStateChanged += this.heroHandPlayability.NotifyBattleStateChanged; + this.monsterHandPlayability = new HandPlayability( + this.state, this.monsterEnergy, TeamChoice.Monsters, this.monsterDeck); + this.OnBattleStateChanged += this.monsterHandPlayability.NotifyBattleStateChanged; this.battlePlayerControls.Init( this.heroDeck, this.monsterDeck, this.playArea, this.insightLevel, @@ -220,10 +224,6 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe yield return new WaitForSeconds(0.5f); // Start of monster turn - // TODO: Play emotions from hand - if (this.monsterEnergy.MaxEnergy < 9) { - this.monsterEnergy.DropOneEmotion(); - } foreach (BattleMonster monster in this.monsters) { monster.ResetBlock(); } @@ -288,7 +288,7 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe } public bool CanUseMonsterCard(MonsterCard card) { - return !this.state.HeroTurn && card.Owner.CanUseCard(card) && this.monsterEnergy.CanPayForCard(card); + return this.monsterHandPlayability.IsPlayable(card); } public BattleDeck GetHeroDeck() { diff --git a/Assets/Battle/CardsMonsters/EagernessMCard.cs b/Assets/Battle/CardsMonsters/EagernessMCard.cs new file mode 100644 index 0000000..a988ef1 --- /dev/null +++ b/Assets/Battle/CardsMonsters/EagernessMCard.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EagernessMCard : MonsterCard +{ + public EagernessMCard(BattleParticipant owner) + : base(owner, MCardId.Eagerness, "Eagerness", 0, CardType.Emotion, + "1 Energy") { + } + + public override IEnumerator Use(IBattleEffectApplier effectApplier, + MonsterViewpoint viewpoint) { + effectApplier.Apply(new DropEmotionEffect(1, this.owner.Team)); + yield break; + } +} diff --git a/Assets/Battle/CardsMonsters/EagernessMCard.cs.meta b/Assets/Battle/CardsMonsters/EagernessMCard.cs.meta new file mode 100644 index 0000000..f314536 --- /dev/null +++ b/Assets/Battle/CardsMonsters/EagernessMCard.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b071ea4a665da14989cc845ee07936a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Battle/CheatBattle.cs b/Assets/Battle/CheatBattle.cs index 639e1ee..eff8cbc 100644 --- a/Assets/Battle/CheatBattle.cs +++ b/Assets/Battle/CheatBattle.cs @@ -42,24 +42,31 @@ public class CheatBattle: MonoBehaviour MonsterId.Bat, }; - MCardId[] mCardIds = new MCardId[10] { + MCardId[] mCardIds = new MCardId[17] { + MCardId.Eagerness, + MCardId.Eagerness, + MCardId.Eagerness, MCardId.GraniteDefense, MCardId.GraniteDefense, MCardId.GolemCharge, MCardId.GolemFist, + MCardId.Eagerness, + MCardId.Eagerness, MCardId.VampireFangs, MCardId.VampireFangs, MCardId.Whirlwind, + MCardId.Eagerness, + MCardId.Eagerness, MCardId.VampireFangs, MCardId.VampireFangs, MCardId.Whirlwind, }; - int[] mCardOwnerIndexes = new int[10] { - 0, 0, 0, 0, - 1, 1, 1, - 2, 2, 2, + int[] mCardOwnerIndexes = new int[17] { + 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, }; BattleParameters parameters = new BattleParameters(); parameters.SetHeroes(heroIds, hCardIds, hCardOwnerIndexes); diff --git a/Assets/Battle/MonsterCardDatabase.cs b/Assets/Battle/MonsterCardDatabase.cs index 510abfd..4adc922 100644 --- a/Assets/Battle/MonsterCardDatabase.cs +++ b/Assets/Battle/MonsterCardDatabase.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using UnityEngine; public enum MCardId { + Eagerness, QuickSwiftDeath, VampireFangs, Whirlwind, @@ -21,6 +22,8 @@ public class MonsterCardDatabase : CardDatabase MCardId monsterCardId = (MCardId) id; switch (monsterCardId) { + case MCardId.Eagerness: + return new EagernessMCard(owner); case MCardId.QuickSwiftDeath: return new QuickSwiftDeathMCard(owner); case MCardId.VampireFangs: diff --git a/Assets/Resources/CardArt/MonsterEagerness.jpg b/Assets/Resources/CardArt/MonsterEagerness.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9aef33b54a5b638bdb2e15c62664731d4b299cac GIT binary patch literal 14797 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 z