// Update is called once per frame void Update() { switch (stateStack.Peek()) { case GameState.PlayerIdle: { endTurnButton.interactable = true; } ; break; case GameState.PlayerCardPending: { endTurnButton.interactable = false; if (currentCardAction.IsReadyOrCancelled()) { if (currentCardAction.WasCancelled()) { //card was cancelled, return it to the hand DeselectActiveCard(); } else { //card was played, put it in the discard pile DiscardCard(activeCard); interfaceManager.HideCancelButton(); energy -= GameplayContext.ActiveCard.cardData.energyCost; UpdatePlayerStatusEffectPanel(); } CleanDeadEnemies(); stateStack.Pop(); currentCardAction = null; GameplayContext.ActiveCard = null; } }; break; case GameState.EnemyTurn: { endTurnButton.interactable = false; if (turnTimer > 0) { turnTimer -= Time.deltaTime; } else { if (enemyTakingTurn is null) { StartNextEnemyTurn(); } else if (enemyTurnFinished) { turnTimer = timeBetweenTurns; } } }; break; case GameState.DrawingCards: { endTurnButton.interactable = false; if (cardDrawTimer <= 0) { DrawCard(); cardsLeftToDraw--; cardDrawTimer = cardDrawPause; //Debug.Log("Drew 1, " + cardsLeftToDraw + "cards remain"); } else { cardDrawTimer -= Time.deltaTime; } //stop drawing cards if empty or finished if ((drawPile.Count == 0 && discardPile.Count == 0) || cardsLeftToDraw == 0) { cardDrawTimer = 0; stateStack.Pop(); } }; break; } playerHealthBar.Value = player.Health.Current; drawPileNumber.text = drawPile.Count.ToString(); discardPileNumber.text = discardPile.Count.ToString(); energyNumber.text = energy.ToString(); if (worldGrid.GetHexUnderMouse() is Hex mousehex && worldGrid.GetEntityAtHex(mousehex) is Entity entUnderMouse && entUnderMouse != player) { enemyText.enabled = true; enemyText.text = entUnderMouse.entityName; enemyHealthBar.gameObject.SetActive(true); enemyHealthBar.MaxValue = entUnderMouse.Health.MaxHealth; enemyHealthBar.Value = entUnderMouse.Health.Current; enemyStatusEffectPanel.gameObject.SetActive(true); UpdateEnemyStatusEffectPanel(entUnderMouse); GameplayContext.EntityUnderMouse = entUnderMouse; }