Improve targeting, add Pass Turn button

This commit is contained in:
henriquenakashima 2020-09-18 23:48:32 -04:00
parent d7c19e2572
commit d8af43db53
3 changed files with 43 additions and 14 deletions

View file

@ -35,6 +35,7 @@ public class BattleController : MonoBehaviour
heroSprites[i].name = "Hero" + i + "_Sprite"; heroSprites[i].name = "Hero" + i + "_Sprite";
heroSprites[i].transform.position = new Vector3(-6 + 6 * i, 0, 0); heroSprites[i].transform.position = new Vector3(-6 + 6 * i, 0, 0);
BattleParticipantSprite bps = heroSprites[i].AddComponent<BattleParticipantSprite>(); BattleParticipantSprite bps = heroSprites[i].AddComponent<BattleParticipantSprite>();
bps.Init(battlePlayerControls);
BattleParticipant participant = heroes[i]; BattleParticipant participant = heroes[i];
bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);}; bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);};
@ -55,6 +56,7 @@ public class BattleController : MonoBehaviour
monsterSprites[i].name = "Monster" + i + "_Sprite"; monsterSprites[i].name = "Monster" + i + "_Sprite";
monsterSprites[i].transform.position = new Vector3(-6 + 6 * i, 3, 0); monsterSprites[i].transform.position = new Vector3(-6 + 6 * i, 3, 0);
BattleParticipantSprite bps = monsterSprites[i].AddComponent<BattleParticipantSprite>(); BattleParticipantSprite bps = monsterSprites[i].AddComponent<BattleParticipantSprite>();
bps.Init(battlePlayerControls);
BattleParticipant participant = monsters[i]; BattleParticipant participant = monsters[i];
bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);}; bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);};
@ -63,6 +65,7 @@ public class BattleController : MonoBehaviour
} }
this.battlePlayerControls.OnCardUsed += this.OnCardUsed; this.battlePlayerControls.OnCardUsed += this.OnCardUsed;
this.battlePlayerControls.OnTurnPassed += this.OnTurnPassed;
this.battlePlayerControls.SetHand(5); this.battlePlayerControls.SetHand(5);
} }
@ -72,16 +75,12 @@ public class BattleController : MonoBehaviour
} }
public void HitRandomParticipant() {
if (Random.Range(0f, 1f) < 0.5f) {
heroes[Random.Range(0, heroes.Length)].DealDamage(1);
} else {
monsters[Random.Range(0, monsters.Length)].DealDamage(2);
}
}
public void OnCardUsed(BaseCard card) { public void OnCardUsed(BaseCard card) {
Debug.Log("OnCardClicked " + card); Debug.Log("OnCardClicked " + card);
StartCoroutine(card.Use(battlePlayerControls)); StartCoroutine(card.Use(battlePlayerControls));
} }
public void OnTurnPassed() {
Debug.Log("OnTurnPassed");
}
} }

View file

@ -7,6 +7,12 @@ public class BattleParticipantSprite : MonoBehaviour
public delegate void SpriteClickedAction(); public delegate void SpriteClickedAction();
public event SpriteClickedAction OnSpriteClicked; public event SpriteClickedAction OnSpriteClicked;
private BattlePlayerControls playerControls;
public void Init(BattlePlayerControls playerControls) {
this.playerControls = playerControls;
}
// Start is called before the first frame update // Start is called before the first frame update
void Start() { void Start() {
gameObject.AddComponent<BoxCollider2D>(); gameObject.AddComponent<BoxCollider2D>();
@ -14,6 +20,9 @@ public class BattleParticipantSprite : MonoBehaviour
// Update is called once per frame // Update is called once per frame
void Update() { void Update() {
if (colorChanged && !this.playerControls.IsTargeting()) {
OnMouseExit();
}
} }
void OnMouseDown() { void OnMouseDown() {
@ -22,15 +31,22 @@ public class BattleParticipantSprite : MonoBehaviour
} }
private Color savedColor; private Color savedColor;
private bool colorChanged;
void OnMouseEnter() { void OnMouseEnter() {
if (this.playerControls.IsTargeting()) {
SpriteRenderer sprite = GetComponent<SpriteRenderer>(); SpriteRenderer sprite = GetComponent<SpriteRenderer>();
this.savedColor = sprite.color; this.savedColor = sprite.color;
sprite.color = Color.Lerp(this.savedColor, Color.white, .5f); sprite.color = Color.Lerp(this.savedColor, Color.white, .5f);
this.colorChanged = true;
}
} }
void OnMouseExit() { void OnMouseExit() {
if (this.colorChanged) {
SpriteRenderer sprite = GetComponent<SpriteRenderer>(); SpriteRenderer sprite = GetComponent<SpriteRenderer>();
sprite.color = this.savedColor; sprite.color = this.savedColor;
this.colorChanged = false;
}
} }
} }

View file

@ -11,6 +11,8 @@ public class BattlePlayerControls : MonoBehaviour
public delegate void CardUsedAction(BaseCard card); public delegate void CardUsedAction(BaseCard card);
public event CardUsedAction OnCardUsed; public event CardUsedAction OnCardUsed;
public delegate void TurnPassedAction();
public event TurnPassedAction OnTurnPassed;
private List<BaseCard> cardsInHand; private List<BaseCard> cardsInHand;
private List<GameObject> cardsInHandUIs; private List<GameObject> cardsInHandUIs;
@ -53,8 +55,10 @@ public class BattlePlayerControls : MonoBehaviour
} }
private void OnCardClicked(BaseCard card) { private void OnCardClicked(BaseCard card) {
if (!this.waitingForTarget) {
OnCardUsed(card); OnCardUsed(card);
} }
}
private bool waitingForTarget = false; private bool waitingForTarget = false;
private BattleParticipant participantClicked = null; private BattleParticipant participantClicked = null;
@ -75,4 +79,14 @@ public class BattlePlayerControls : MonoBehaviour
this.participantClicked = paticipant; this.participantClicked = paticipant;
} }
} }
public void PassTurnButtonClicked() {
if (!this.waitingForTarget) {
OnTurnPassed();
}
}
public bool IsTargeting() {
return this.waitingForTarget;
}
} }