Files
Generic/Assets/Scripts/BattleController.cs

146 lines
4.1 KiB
C#
Raw Normal View History

2025-04-26 21:54:32 +01:00
using UnityEngine;
public class BattleController : MonoBehaviour
{
public static BattleController instance;
private void Awake()
{
instance = this;
}
public int startingMana = 4, maxMana = 12;
public int playerMana;
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;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
currentPlayerMaxMana = startingMana;
FillPlayerMana();
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 FillPlayerMana()
{
//playerMana = startingMana;
playerMana = currentPlayerMaxMana;
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();
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);
}
}