From 611601934d5de23c33edf33e977a57f71c811e33 Mon Sep 17 00:00:00 2001 From: henriquenakashima Date: Sat, 19 Sep 2020 15:30:41 -0400 Subject: [PATCH] Create SingleTargeting --- Assets/Battle/BattleController.cs | 4 ++-- Assets/Battle/BattlePlayerControls.cs | 28 ++++++++++-------------- Assets/Battle/Cards/CardCover.cs | 9 ++++---- Assets/Battle/Cards/CardCrashingPunch.cs | 9 ++++---- Assets/Battle/SingleTargeting.cs | 23 +++++++++++++++++++ Assets/Battle/SingleTargeting.cs.meta | 11 ++++++++++ 6 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 Assets/Battle/SingleTargeting.cs create mode 100644 Assets/Battle/SingleTargeting.cs.meta diff --git a/Assets/Battle/BattleController.cs b/Assets/Battle/BattleController.cs index 9707dee..94f4fa1 100644 --- a/Assets/Battle/BattleController.cs +++ b/Assets/Battle/BattleController.cs @@ -43,7 +43,7 @@ public class BattleController : MonoBehaviour heroSprites[i].transform.position = new Vector3(-6 + 6 * i, 0, 0); BattleParticipantSprite bps = heroSprites[i].AddComponent(); bps.Init(battlePlayerControls, heroes[i]); - bps.OnSpriteClicked += battlePlayerControls.OnParticipantSpriteClicked; + bps.OnSpriteClicked += battlePlayerControls.NotifyParticipantSpriteClicked; heroUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI)); heroUIs[i].Init(heroSprites[i], heroes[i]); @@ -63,7 +63,7 @@ public class BattleController : MonoBehaviour monsterSprites[i].transform.position = new Vector3(-6 + 6 * i, 3, 0); BattleParticipantSprite bps = monsterSprites[i].AddComponent(); bps.Init(battlePlayerControls, monsters[i]); - bps.OnSpriteClicked += battlePlayerControls.OnParticipantSpriteClicked; + bps.OnSpriteClicked += battlePlayerControls.NotifyParticipantSpriteClicked; monsterUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI)); monsterUIs[i].Init(monsterSprites[i], monsters[i]); diff --git a/Assets/Battle/BattlePlayerControls.cs b/Assets/Battle/BattlePlayerControls.cs index 1925a21..f4f3183 100644 --- a/Assets/Battle/BattlePlayerControls.cs +++ b/Assets/Battle/BattlePlayerControls.cs @@ -61,41 +61,35 @@ public class BattlePlayerControls : MonoBehaviour } private void OnCardClicked(BaseCard card) { - if (!this.waitingForTarget) { + if (this.singleTargeting == null) { if (this.battleController.CanUseCard(card)) { OnCardUsed(card); } } } - private bool waitingForTarget = false; - private BattleParticipant participantClicked = null; + private SingleTargeting singleTargeting; - public IEnumerator ChooseTarget(System.Action targetCallback) { - this.waitingForTarget = true; - while (this.participantClicked == null) { - yield return null; - } - this.waitingForTarget = false; - targetCallback(participantClicked); - this.participantClicked = null; - yield break; + public IEnumerator ChooseTarget(SingleTargeting targeting) { + this.singleTargeting = targeting; + yield return this.singleTargeting.ChooseTarget(); + this.singleTargeting = null; } - public void OnParticipantSpriteClicked(BattleParticipant paticipant) { - if (this.waitingForTarget) { - this.participantClicked = paticipant; + public void NotifyParticipantSpriteClicked(BattleParticipant participant) { + if (this.singleTargeting != null) { + this.singleTargeting.NotifyParticipantSpriteClicked(participant); } } public void PassTurnButtonClicked() { - if (!this.waitingForTarget) { + if (this.singleTargeting == null) { OnTurnPassed(); } } public bool IsTargeting() { - return this.waitingForTarget; + return this.singleTargeting != null; } public void NotifyHandPileChanged() { diff --git a/Assets/Battle/Cards/CardCover.cs b/Assets/Battle/Cards/CardCover.cs index b1ad411..d9cdfc8 100644 --- a/Assets/Battle/Cards/CardCover.cs +++ b/Assets/Battle/Cards/CardCover.cs @@ -9,9 +9,10 @@ public class CardCover : BaseCard } public override IEnumerator Use(BattlePlayerControls playerControls) { - List target = new List(); - yield return playerControls.StartCoroutine(playerControls.ChooseTarget((t) => {target.Add(t);})); - Debug.Log("Covering " + target[0]); - target[0].AddBlock(3); + SingleTargeting singleTargeting = new SingleTargeting(); + yield return playerControls.StartCoroutine(playerControls.ChooseTarget(singleTargeting)); + BattleParticipant target = singleTargeting.GetTarget(); + Debug.Log("Covering " + target); + target.AddBlock(3); } } diff --git a/Assets/Battle/Cards/CardCrashingPunch.cs b/Assets/Battle/Cards/CardCrashingPunch.cs index 261a123..724dcda 100644 --- a/Assets/Battle/Cards/CardCrashingPunch.cs +++ b/Assets/Battle/Cards/CardCrashingPunch.cs @@ -9,9 +9,10 @@ public class CardCrashingPunch : BaseCard } public override IEnumerator Use(BattlePlayerControls playerControls) { - List target = new List(); - yield return playerControls.StartCoroutine(playerControls.ChooseTarget((t) => {target.Add(t);})); - Debug.Log("Punching " + target[0]); - target[0].DealDamage(3); + SingleTargeting singleTargeting = new SingleTargeting(); + yield return playerControls.StartCoroutine(playerControls.ChooseTarget(singleTargeting)); + BattleParticipant target = singleTargeting.GetTarget(); + Debug.Log("Punching " + target); + target.DealDamage(3); } } diff --git a/Assets/Battle/SingleTargeting.cs b/Assets/Battle/SingleTargeting.cs new file mode 100644 index 0000000..bc27831 --- /dev/null +++ b/Assets/Battle/SingleTargeting.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class SingleTargeting +{ + private BattleParticipant participantClicked; + + public IEnumerator ChooseTarget() { + while (this.participantClicked == null) { + yield return null; + } + } + + public void NotifyParticipantSpriteClicked(BattleParticipant paticipant) { + this.participantClicked = paticipant; + } + + public BattleParticipant GetTarget() { + return this.participantClicked; + } +} diff --git a/Assets/Battle/SingleTargeting.cs.meta b/Assets/Battle/SingleTargeting.cs.meta new file mode 100644 index 0000000..4d9d1dc --- /dev/null +++ b/Assets/Battle/SingleTargeting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e3ab2e9de8e9054ca09847226a7c1a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: