182 lines
5.3 KiB
C#
182 lines
5.3 KiB
C#
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;
|
|
|
|
public int manaRefillAmount = 1;
|
|
|
|
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 += manaRefillAmount; // Use manaRefillAmount for refill
|
|
if (currentPlayerMaxMana > maxMana)
|
|
{
|
|
currentPlayerMaxMana = maxMana; // Ensure it doesn't exceed maxMana
|
|
}
|
|
}
|
|
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 += manaRefillAmount; // Use manaRefillAmount for refill
|
|
if (currentEnemyMaxMana > maxMana)
|
|
{
|
|
currentEnemyMaxMana = maxMana; // Ensure it doesn't exceed maxMana
|
|
}
|
|
}
|
|
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);
|
|
}
|
|
}
|