using UnityEngine; public class BattleController : MonoBehaviour { public static BattleController instance; private void Awake() { instance = this; } public int startingMana = 4, maxMana = 12; public int playerMana, enemyMana; public int startingCardsAmount = 5; public int cardsToDrawPerTurn = 2; public enum TurnOrder { playerActive, playerCardAttacks, enemyActive, enemyCardAttacks } public TurnOrder currentPhase; public Transform discardPoint; public int playerHealth; public int enemyHealth; private int currentPlayerMaxMana, currentEnemyMaxMana; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { currentPlayerMaxMana = startingMana; FillPlayerMana(); currentEnemyMaxMana = startingMana; FillEnemyMana(); DeckController.instance.DrawMultipleCards(startingCardsAmount); UIController.instance.SetPlayerHealthText(playerHealth); UIController.instance.SetEnemyHealthText(enemyHealth); } // Update is called once per frame void Update() { if(Input.GetKeyDown(KeyCode.T)) { //AdvanceTurn(); } } public void SpendPlayerMana (int amountToSpend) { playerMana = playerMana - amountToSpend; if(playerMana < 0) { playerMana = 0; } UIController.instance.SetPlayerManaText(playerMana); } public void SpendEnemyMana (int amountToSpend) { enemyMana = enemyMana - amountToSpend; if(enemyMana < 0) { enemyMana = 0; } //UIController.instance.SetPlayerManaText(playerMana); } public void FillPlayerMana() { //playerMana = startingMana; playerMana = currentPlayerMaxMana; UIController.instance.SetPlayerManaText(playerMana); } public void FillEnemyMana() { //playerMana = startingMana; enemyMana = currentEnemyMaxMana; //UIController.instance.SetPlayerManaText(playerMana); } public void AdvanceTurn() { currentPhase++; if((int)currentPhase >= System.Enum.GetNames(typeof(TurnOrder)).Length) { currentPhase = 0; } switch (currentPhase) { case TurnOrder.playerActive: UIController.instance.endTurnBtn.SetActive(true); UIController.instance.drawCardBtn.SetActive(true); if(currentPlayerMaxMana < maxMana) { currentPlayerMaxMana++; } FillPlayerMana(); DeckController.instance.DrawMultipleCards(cardsToDrawPerTurn); break; case TurnOrder.playerCardAttacks: CardPointsController.instance.PlayerAttack(); break; case TurnOrder.enemyActive: //Debug.Log("Skipping enemy actions"); //AdvanceTurn(); if(currentEnemyMaxMana < maxMana) { currentEnemyMaxMana++; } FillEnemyMana(); EnemyController.instance.StartAction(); break; case TurnOrder.enemyCardAttacks: //Debug.Log("Skipping enemy card attacks"); //AdvanceTurn(); CardPointsController.instance.EnemyAttack(); break; } } public void EndPlayerTurn() { UIController.instance.endTurnBtn.SetActive(false); UIController.instance.drawCardBtn.SetActive(false); AdvanceTurn(); } public void DamagePlayer(int damageAmount) { if(playerHealth > 0) { playerHealth -= damageAmount; if(playerHealth <= 0) { playerHealth = 0; //End battle } UIController.instance.SetPlayerHealthText(playerHealth); UIDamageIndicator damageClone = Instantiate(UIController.instance.playerDamage, UIController.instance.playerDamage.transform.parent); damageClone.damageText.text = damageAmount.ToString(); damageClone.gameObject.SetActive(true); } } public void DamageEnemy(int damageAmount) { if (enemyHealth > 0) { enemyHealth -= damageAmount; if (enemyHealth <= 0) { enemyHealth = 0; //End battle } } UIController.instance.SetEnemyHealthText(enemyHealth); UIDamageIndicator damageClone = Instantiate(UIController.instance.enemyDamage, UIController.instance.enemyDamage.transform.parent); damageClone.damageText.text = damageAmount.ToString(); damageClone.gameObject.SetActive(true); } }