public void EndPlayerTurn() { isPlayerTurn = false; playerCharacterObject.ReduceBuffLifetime(); if (OnTurnComplete != null) { OnTurnComplete.Invoke(playerCharacterObject); } if (OnEnemyTurn != null) { OnEnemyTurn.Invoke(); } }
// Update is called once per frame void Update() { if (hasWon == false) { //if (Input.GetKeyDown(KeyCode.R)) //{ // RemoveRandomCardFromHand(); //} Vector3 mousePos = Input.mousePosition; if (selectedCard != null) { mousePos.z = cardSelectedMouseWorldZ; } else { mousePos.z = mouseWorldZ; } Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(mousePos); if (mouseWorldObject != null) { mouseWorldObject.transform.position = worldMousePos; } if (isPlayerTurn) { if (handDealt == false) { if (cardObject != null && playerHandObject != null) { DealPlayerHand(currentMaxCardsInHand); handDealt = true; } //Debug.Log("start player turn"); } if (playerCharacterObject.isExecutingTurn == false) { Ray mouseRay = Camera.main.ScreenPointToRay(mousePos); RaycastHit mouseHit; if (selectedCard == null) { if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(mouseRay, out mouseHit, 100f, cardMask)) { if (mouseHit.transform.TryGetComponent(out selectedCard)) { selectedCard.isSelected = true; hasCardBeenSelected = true; } } } } if (Input.GetMouseButtonUp(0)) { hasCardBeenSelected = false; } if (hasCardBeenSelected) { if (selectedCardPositionObject != null) { splineStartPoint.transform.position = selectedCard.GetStartPosition() + splineStartPositionOffset; bezierPath.MovePoint(0, mouseWorldObject.transform.position); bezierPath.MovePoint(bezierPath.NumPoints - 1, splineStartPoint.transform.position); pathCreator.TriggerPathUpdate(); lineRenderer.enabled = true; //selectedCard.transform.position = selectedCardPositionObject.transform.position; } //selectedCard.transform.position = mouseWorldObject.transform.position; } else { if (selectedCard != null) { lineRenderer.enabled = false; if (selectedCard.cardDefinition.cardType == CARDTYPE.ATTACK) { if (selectedCard.cardDefinition.useOnGroup) { UseCardEnemyGroup(); } else { if (Physics.Raycast(mouseRay, out mouseHit, 100f, characterMask)) { UseCardSingleEnemy(mouseHit); } else { ResetCardPosition(selectedCard); } } } else if (selectedCard.cardDefinition.cardType == CARDTYPE.ABILITY) { UseCardAbility(); } selectedCard = null; } } if (CheckHasWon()) { ClearPlayerHand(); ReturnDiscardedToDeck(); hasWon = true; if (OnHasWon != null) { OnHasWon.Invoke(); } } } } else { ClearPlayerHand(); bool allEnemyTurnsExecuted = true; if (playerCharacterObject.isDead) { if (hasDied == false) { if (CheckHasDied()) { if (OnPlayerDestroyed != null) { OnPlayerDestroyed.Invoke(); } } } } else { //enemy turn foreach (CharacterObject enemy in enemyCharacters) { if (enemy.isExecutingTurn == false && enemy.turnComplete == false && playerCharacterObject.currentHealth > 0) { enemy.ExecuteTurn(playerCharacterObject.transform, null); allEnemyTurnsExecuted = false; } if (enemy.turnComplete == false) { allEnemyTurnsExecuted = false; break; } } if (allEnemyTurnsExecuted) { //Debug.Log("all enemy turns complete"); foreach (CharacterObject enemy in enemyCharacters) { enemy.ResetTurn(); if (OnTurnComplete != null) { OnTurnComplete.Invoke(enemy); } } //ReturnDiscardedToDeck(); isPlayerTurn = true; handDealt = false; ResetCardPoints(); if (OnEnemyTurnComplete != null) { OnEnemyTurnComplete.Invoke(); } if (OnTurnComplete != null) { OnTurnComplete.Invoke(playerCharacterObject); } } } } } //else //{ // if (hasDied == false) // { // if (CheckHasDied()) // { // if (OnHasDied != null) // { // OnHasDied.Invoke(); // } // } // } //} }