public IEnumerator Enemy2Turn() { Debug.Log(unitData.currentHp); if (unitData.currentHp <= 0) { BattleSystemClass.gameState = GameState.PLAYERTURN; BattleSystemClass.unitState = UnitState.KNIGHT; UIManager.EnableKnightSkillBar(); } _enemyStartingPosition = enemyGO.transform.position; int randomPlayerUnitIndex = Random.Range(0, UIManager.playerUnitGOs.Count); GameObject attackedPlayerGO = UIManager.playerUnitGOs[randomPlayerUnitIndex]; Unit attackedPlayerUnit = attackedPlayerGO.GetComponent <Unit> (); Vector3 playerPos = attackedPlayerGO.transform.position; AnimationManager.PlayAnim("Dash", 5); enemyGO.transform.Translate(-Time.deltaTime * 1000, 0, 0, CameraTransform); if (Vector3.Distance(enemyGO.transform.position, playerPos) < unitData.errorDistance) { enemyGO.transform.position = new Vector3(playerPos.x + 2f, playerPos.y, playerPos.z); } yield return(new WaitForSeconds(0.5f)); //StartCoroutine(CameraManager.MoveTowardsTarget(attackedPlayerGO)); AnimationManager.PlayAnim("Attack", 5); AudioManager.PlaySound("basicAttack"); AnimationManager.PlayAnim("Hit", randomPlayerUnitIndex); //calculate damage float damageDone = CalculationManager.CalculateDamage(unitData); bool isDead = CalculationManager.DealDamage(damageDone, attackedPlayerUnit); //damagePopup GameObject cloneTextGO = Instantiate(unitData.floatingDamagePrefab, attackedPlayerGO.transform.position + unitData.damageOffset, Quaternion.identity); UIManager.DamagePopup(damageDone, unitData, cloneTextGO); UIManager.SetPlayerUnitHp(attackedPlayerUnit.unitData.currentHp, randomPlayerUnitIndex); AudioManager.PlaySound("hurtSound"); yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Idle", randomPlayerUnitIndex); enemyGO.transform.position = _enemyStartingPosition; AnimationManager.PlayAnim("Idle", 5); if (isDead) { AudioManager.PlaySound("KnightDeath"); AnimationManager.PlayAnim("Dead", randomPlayerUnitIndex); } BattleSystemClass.gameState = GameState.PLAYERTURN; BattleSystemClass.unitState = UnitState.KNIGHT; UIManager.EnableKnightSkillBar(); }
public IEnumerator KnightBasicAttack(int enemyID, GameObject enemyToAttackGO) { Unit attackedEnemyUnit = enemyToAttackGO.GetComponent <Unit> (); Vector3 enemyPos = enemyToAttackGO.transform.position; BattleSystemClass.gameState = GameState.WAITING; AudioManager.PlaySound("KnightOpeners"); Vector2 startingPos = knightGO.transform.position; AnimationManager.PlayAnim("Dash", 0); knightGO.transform.Translate(Time.deltaTime * 1000, 0, 0, CameraTransform); if (Vector3.Distance(knightGO.transform.position, enemyPos) < unitData.errorDistance) { knightGO.transform.position = new Vector3(enemyPos.x - 2f, enemyPos.y, enemyPos.z); } //StartCoroutine(CameraManager.MoveTowardsTarget(enemyToAttackGO)); yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Attack", 0); AudioManager.PlaySound("basicAttack"); //calculate damage float damageDone = CalculationManager.CalculateDamage(unitData); bool isDead = CalculationManager.DealDamage(damageDone, attackedEnemyUnit); //damagePopup GameObject cloneTextGO = Instantiate(unitData.floatingDamagePrefab, enemyPos + unitData.damageOffset, Quaternion.identity); UIManager.DamagePopup(damageDone, unitData, cloneTextGO); UIManager.SetEnemyHp(attackedEnemyUnit.unitData.currentHp, enemyID); AnimationManager.PlayAnim("Hit", enemyID); AudioManager.PlaySound("hurtSound"); yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Idle", enemyID); knightGO.transform.position = startingPos; AnimationManager.PlayAnim("Idle", 0); if (isDead) { //play animation on attacked enemy AnimationManager.PlayAnim("Dead", enemyID); //observer.NotifyUnitDeath (enemyID); UnitDied(enemyID); //check if there is an alive enemy } //Warrior's turn starts BattleSystemClass.gameState = GameState.PLAYERTURN; BattleSystemClass.unitState = UnitState.WARRIOR; UIManager.DisableKnightSkillBar(); UIManager.EnableWarriorSkillBar(); }
public IEnumerator WarriorBasicAttack(int enemyID, GameObject enemyToAttackGO) { Unit enemyToAttackUnit = enemyToAttackGO.GetComponent <Unit> (); Vector3 enemyPos = enemyToAttackGO.transform.position; BattleSystemClass.gameState = GameState.WAITING; Vector2 startingPos = warriorGO.transform.position; AnimationManager.PlayAnim("Dash", 1); warriorGO.transform.Translate(Time.deltaTime * 1000, 0, 0, CameraTransform); if (Vector3.Distance(warriorGO.transform.position, enemyPos) < unitData.errorDistance) { warriorGO.transform.position = new Vector3(enemyPos.x - 2f, enemyPos.y, enemyPos.z); } yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Attack", 1); AudioManager.PlaySound("basicAttack"); //StartCoroutine(CameraManager.MoveTowardsTarget(enemyToAttackGO)); //calculate damage float damageDone = CalculationManager.CalculateDamage(unitData); bool isDead = CalculationManager.DealDamage(damageDone, enemyToAttackUnit); //damagePopup GameObject floatingDamageGO = Instantiate(unitData.floatingDamagePrefab, enemyPos + unitData.damageOffset, Quaternion.identity); UIManager.DamagePopup(damageDone, unitData, floatingDamageGO); UIManager.SetEnemyHp(enemyToAttackUnit.unitData.currentHp, enemyID); AnimationManager.PlayAnim("Hit", enemyID); AudioManager.PlaySound("hurtSound"); yield return(new WaitForSeconds(1f)); AnimationManager.PlayAnim("Idle", enemyID); warriorGO.transform.position = startingPos; AnimationManager.PlayAnim("Idle", 1); if (isDead) { AnimationManager.PlayAnim("Dead", enemyID); UnitDied(enemyID); } BattleSystemClass.gameState = GameState.PLAYERTURN; BattleSystemClass.unitState = UnitState.WIZARD; UIManager.DisableWarriorSkillBar(); UIManager.EnableWizardSkillBar(); }
public IEnumerator WizardBasicAttack(int enemyID, GameObject enemyToAttackGO) { Unit enemyToAttackUnit = enemyToAttackGO.GetComponent <Unit> (); Vector3 enemyPos = enemyToAttackGO.transform.position; BattleSystemClass.gameState = GameState.WAITING; AnimationManager.PlayAnim("Attack1", 2); GameObject explosionGO = Instantiate(explosionAnim, enemyPos, Quaternion.identity); //StartCoroutine(CameraManager.MoveTowardsTarget(enemyToAttackGO)); Destroy(explosionGO, 1f); //calculate damage float damageDone = CalculationManager.CalculateDamage(unitData); bool isDead = CalculationManager.DealDamage(damageDone, enemyToAttackUnit); //damagePopup GameObject floatingDamageGO = Instantiate(unitData.floatingDamagePrefab, enemyPos + unitData.damageOffset, Quaternion.identity); UIManager.DamagePopup(damageDone, unitData, floatingDamageGO); UIManager.SetEnemyHp(enemyToAttackUnit.unitData.currentHp, enemyID); AnimationManager.PlayAnim("Hit", enemyID); AudioManager.PlaySound("hurtSound"); yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Idle", enemyID); AnimationManager.PlayAnim("Idle", 2); if (isDead) { AnimationManager.PlayAnim("Dead", enemyID); UnitDied(enemyID); } BattleSystemClass.gameState = GameState.ENEMYTURN; BattleSystemClass.unitState = UnitState.ENEMY1; UIManager.DisableWizardSkillBar(); yield return(new WaitForSeconds(1f)); StartCoroutine(_enemy1Class.EnemyTurn()); }
public IEnumerator WizardAreaAttack() { Vector3[] enemyPositions = new Vector3[2]; GameObject[] attackedEnemies = GameObject.FindGameObjectsWithTag("EnemyUnit"); for (int i = 0; i < attackedEnemies.Length; i++) { enemyPositions[i] = attackedEnemies[i].transform.position; } BattleSystemClass.gameState = GameState.WAITING; AnimationManager.PlayAnim("Attack1", 2); for (int i = 0; i < attackedEnemies.Length; i++) { GameObject explosionGO = Instantiate(explosionAnim, enemyPositions[i], Quaternion.identity); Destroy(explosionGO, 1f); } //calculate damage float damageDone = CalculationManager.CalculateDamage(unitData); bool isDead1 = CalculationManager.DealDamage(damageDone, attackedEnemies[0].GetComponent <Unit> ()); bool isDead2 = CalculationManager.DealDamage(damageDone, attackedEnemies[1].GetComponent <Unit> ()); //damagePopup for (int i = 0; i < attackedEnemies.Length; i++) { GameObject floatingDamageGO = Instantiate(unitData.floatingDamagePrefab, enemyPositions[i] + unitData.damageOffset, Quaternion.identity); UIManager.DamagePopup(damageDone, unitData, floatingDamageGO); } UIManager.SetEnemyHp(attackedEnemies[0].GetComponent <Unit> ().unitData.currentHp, 4); UIManager.SetEnemyHp(attackedEnemies[1].GetComponent <Unit> ().unitData.currentHp, 5); AnimationManager.PlayAnim("Hit", 4); AnimationManager.PlayAnim("Hit", 5); AudioManager.PlaySound("hurtSound"); yield return(new WaitForSeconds(0.5f)); AnimationManager.PlayAnim("Idle", 4); AnimationManager.PlayAnim("Idle", 5); AnimationManager.PlayAnim("Idle", 2); if (isDead1) { AnimationManager.PlayAnim("Dead", 4); UnitDied(4); } if (isDead2) { AnimationManager.PlayAnim("Dead", 5); UnitDied(5); } else { BattleSystemClass.gameState = GameState.ENEMYTURN; BattleSystemClass.unitState = UnitState.ENEMY1; UIManager.DisableWizardSkillBar(); yield return(new WaitForSeconds(1f)); StartCoroutine(_enemy1Class.EnemyTurn()); } }