/// <summary> /// Items the action. /// </summary> public void ItemAction() { currentState = EnumBattleState.SelectingTarget; battlAction = EnumBattleAction.Item; SelectTheFirstEnemy(); PassAction(); }
/// <summary> /// Accepts the decision. /// </summary> public void AcceptDecision() { SoundManager.UISound(); currentState = EnumBattleState.SelectedTarget; HideTargetSelector(); HideDecision(); PlayerAction(); }
/// <summary> /// Declines the decision. /// </summary> public void DeclineDecision() { SoundManager.UISound(); currentState = EnumBattleState.PlayerTurn; ShowMenu(); HideTargetSelector(); HideDecision(); }
/// <summary> /// Magics the action. /// </summary> public void MagicAction() { currentState = EnumBattleState.SelectingTarget; battlAction = EnumBattleAction.Magic; SelectTheFirstEnemy(); HideMenu(); ShowDecision(); }
/// <summary> /// Nexts the battle sequence. /// </summary> public void NextBattleSequence() { var x = turnByTurnSequenceList.Where(w => w.First == EnumPlayerOrEnemy.Enemy).Count(); var y = turnByTurnSequenceList.Where(w => w.First == EnumPlayerOrEnemy.Player).Count(); if (x <= 0) { currentState = EnumBattleState.PlayerWon; return; } else if (y <= 0) { currentState = EnumBattleState.EnemyWon; return; } if (sequenceEnumerator.MoveNext()) { PositionSelector(sequenceEnumerator.Current.Second); if (sequenceEnumerator.Current.First == EnumPlayerOrEnemy.Player) { currentState = EnumBattleState.PlayerTurn; selectedPlayer = sequenceEnumerator.Current.Second; selectedPlayerDatas = GetCharacterDatas(selectedPlayer.name); BattlePanels.SelectedCharacter = selectedPlayerDatas; } else if (sequenceEnumerator.Current.First == EnumPlayerOrEnemy.Enemy) { currentState = EnumBattleState.EnemyTurn; } } else { sequenceEnumerator = turnByTurnSequenceList.GetEnumerator(); NextBattleSequence(); } }
/// <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(); } }