void ProcessTurn(Battler battler) { List <Battler> targets = new List <Battler> (); for (int i = 0; i < teams.Length; i++) { if (teams [i] != battler.team) { targets.AddRange(teams [i].battlers); } } // pick random target Battler target = targets[Random.Range(0, targets.Count)]; // attack target battler.Attack(target); }
// Update is called once per frame void Update() { if (beginBattle) { beginBattle = false; // SHOW GUI battleUI.Show(); if (!attacker) { attacker = player.gameObject; } switch (attacker.tag) { case "Player": player.attackPreview = player.entity.PreviewAttack(enemy.entity); enemy.defencePreview = new Dictionary <string, int>(player.attackPreview); if (enemy.entity.WithinAttackRange(player.entity.currentCellIndex)) { enemy.attackPreview = player.entity.PreviewAttack(enemy.entity); player.defencePreview = new Dictionary <string, int>(player.attackPreview); } player.Attack(enemy); player.OnAttackComplete.AddListener(delegate { enemy.OnAttackComplete.AddListener(delegate { if (this.enabled) { battleUI.DestroyBars(); OnBattleComplete.Invoke(); this.enabled = false; } }); enemy.Attack(player); }); // Add Player EXP return; case "Enemy": enemy.attackPreview = enemy.entity.PreviewAttack(player.entity); player.defencePreview = new Dictionary <string, int>(enemy.attackPreview); if (player.entity.WithinAttackRange(enemy.entity.currentCellIndex)) { player.attackPreview = player.entity.PreviewAttack(enemy.entity); enemy.defencePreview = new Dictionary <string, int>(player.attackPreview); } enemy.Attack(player); enemy.OnAttackComplete.AddListener(delegate { player.OnAttackComplete.AddListener(delegate { if (this.enabled) { battleUI.DestroyBars(); if (enemy.HealthPoints == 0) { enemy.OnDeathComplete.AddListener(delegate { OnBattleComplete.Invoke(); }); } else { OnBattleComplete.Invoke(); } this.enabled = false; } }); player.Attack(enemy); }); // Add Player EXP return; case "Other": print("Other"); return; } } }