public void DamageEnemy(int index) { if (_enemiesDead.Contains(_enemiesInBattle[index])) { return; } _actualEnemy = _enemiesInBattle[index]; _playerCombat.DoAttack(); }
//Same as DamagePlayer, because the player doesnt have a reference about the enemy //he must delegate on this previous to do any damage. public void DamageEnemy(int index) { _enemyAttacked = index; if (_enemiesAlive[index] == false) { return; } _actualEnemy = _enemiesInCombat[index]; _playerCombat.DoAttack(); }
//This method will be called by an enemy in case that a player kills him //This could happen either because he kills them in his turn (in which case this //is the last function called by the player) this is not hard to distinguish because //we know in each moment public void ActualEnemyDied(int expGained, int goldGained, EnemyCombat ec) { if (_actualTurn == ActualTurn.EnemyTurn) { _enemiesAlive[_enemiesInCombat.IndexOf(ec)] = false; _expGained += expGained; _goldGained += goldGained; EnemyActionEnded(); } else if (_actualTurn == ActualTurn.PlayerTurn) { _enemiesAlive[_enemyAttacked] = false; _expGained += expGained; _goldGained += goldGained; PlayerAttackEnded(); } }
public void InitializeBattle(List <EnemyData> enemies, ActualTurn turn) { ControlManager.Instance.PlayerContext = PlayerContextType.InCombat; StatsManager.Instance.RecalculateStatsFromPlayer(); //loads stats + weapon _playerCombat = _combatUpdater.PlayerCombat; for (int i = 0; i < enemies.Count; i++) { if (enemies[i].TypeEnemy == TypeEnemy.Boss) { _bossBattle = true; } EnemyCombat ec = _combatUpdater.EnemiesSlots[i].GetComponent <EnemyCombat>(); _enemiesInBattle.Add(i, ec); _enemiesInBattle[i].SetEnemyData(enemies[i], StatsManager.Instance.InfoPlayer.ActualLevel); } UIManager.Instance.ShowUIMainPanel(UIMainPanel.Combat); //Combat panel -> 1st transit _actualTurn = turn; }
public void InitializeBattle() { ControlManager.Instance.PlayerContext = PlayerContextType.InCombat; StatsManager.Instance.RecalculateStatsFromPlayer(); //loads stats + weapon _playerCombat = _combatUpdater.PlayerCombat; _enemyAttacked = -1; for (int i = 0; i < _enemiesAddToBattle.Count; i++) { if ((int)_enemiesAddToBattle[i].TypeEnemy >= 100) { _bossBattle = true; } EnemyCombat ec = _combatUpdater.EnemiesSlots[i].GetComponent <EnemyCombat>(); _enemiesInCombat.Add(ec); _enemiesAlive.Add(true); _enemiesInCombat[i].SetEnemyData(_enemiesAddToBattle[i], StatsManager.Instance.InfoPlayer.ActualLevel); } UIManager.Instance.ShowUIMainPanel(UIMainPanel.Combat); //Combat panel -> 1st transit _actualTurn = _preloadTurn; }
private void EnableMenuInvestigationPlayer(int index) { if (_investigationPanelIsShown) { DisableMenuInvestigationPlayer(); } EnemyCombat ed = CombatTurnManager.Instance.EnemiesInBattle[index]; _actualLifeEnemyInvestigate.text = ed.LifeString(); _nameEnemyInvestigate.text = "<b>" + ed.Name + "</b>"; switch (ed.TypeEffect) { case TypeEffect.Stun: { _StatusEnemyInvestigate.text = "STUNNED!"; break; } case TypeEffect.Freeze: { _StatusEnemyInvestigate.text = "FROZEN!"; break; } case TypeEffect.Fire: { _StatusEnemyInvestigate.text = "BURNT!"; break; } case TypeEffect.None: { _StatusEnemyInvestigate.text = "None"; break; } } StartCoroutine(EnableInvestigationPanel()); }