/// <summary> /// This is the main loop and where the system detect the presed keys and send them to the controller. /// </summary> void Update() { if (HOTween.GetAllPlayingTweens().Any()) { return; } else if (currentState == EnumBattleState.SelectingTarget) { //Detecting if the player clicked on the left mouse button and also if there is no animation playing if (Input.GetButtonDown("Fire1")) { //The 3 following lines is to get the clicked GameObject and getting the RaycastHit2D that will help us know the clicked object RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.transform != null) { //TODO: Add tweening condition bool foundEnemy = false; foreach (var x in generatedEnemyList) { if (x.GetInstanceID() == hit.transform.gameObject.GetInstanceID()) { foundEnemy = true; selectedEnemy = hit.transform.gameObject; PositionTargetSelector(selectedEnemy); break; } } if (!foundEnemy) { return; } } } } else if (currentState == EnumBattleState.EnemyTurn) { Log(GameTexts.EnemyTurn); var z = turnByTurnSequenceList.Where(w => w.First == EnumPlayerOrEnemy.Player); var playerTargetedByEnemy = z.ElementAt(UnityEngine.Random.Range(0, z.Count() - 1)); var playerTargetedByEnemyDatas = GetCharacterDatas(playerTargetedByEnemy.Second.name); PositionTargetSelector(playerTargetedByEnemy.Second); EnemyAttack(playerTargetedByEnemy.Second, playerTargetedByEnemyDatas); NextBattleSequence(); } else if (currentState == EnumBattleState.PlayerTurn) { Log(GameTexts.PlayerTurn); HideTargetSelector(); ShowMenu(); currentState = EnumBattleState.None; } else if (currentState == EnumBattleState.PlayerWon) { Log(GameTexts.PlayerWon); HideTargetSelector(); HideMenu(); int totalXP = 0; foreach (var x in generatedEnemyList) { totalXP += x.GetComponent <EnemyCharacterDatas> ().XP; } foreach (var x in turnByTurnSequenceList) { var characterdatas = GetCharacterDatas(x.Second.name); characterdatas.XP += totalXP; var calculatedXP = Math.Floor(Math.Sqrt(625 + 100 * characterdatas.XP) - 25) / 50; characterdatas.Level = (int)calculatedXP; } var textTodisplay = GameTexts.EndOfTheBattle + "\n\n" + GameTexts.PlayerXP + totalXP; ShowDropMenu(textTodisplay); currentState = EnumBattleState.EndBattle; var go = GameObject.FindGameObjectsWithTag(Settings.Music).FirstOrDefault(); if (go) { go.GetComponent <AudioSource>().Stop(); } SoundManager.WinningMusic(); } else if (currentState == EnumBattleState.EnemyWon) { Log(GameTexts.EnemyWon); HideTargetSelector(); HideMenu(); var textTodisplay = GameTexts.EndOfTheBattle + "\n\n" + GameTexts.YouLost; ShowDropMenu(textTodisplay); currentState = EnumBattleState.None; var go = GameObject.FindGameObjectsWithTag(Settings.Music).FirstOrDefault(); if (go) { go.GetComponent <AudioSource>().Stop(); } SoundManager.GameOverMusic(); } }