public IEnumerator Turn() { is_turn_end = false; foreach (var unit in good_units) { unit.OnTurnStart(); if (unit.stun) { unit.stun = false; } if (unit.poison > 0.0f) { unit.current_hp -= unit.poison; } ability_ui.gameObject.SetActive(true); yield return(ability_ui.WaitInput(unit, good_units, evil_units, OnAbilitySelected)); ability_ui.gameObject.SetActive(false); yield return(new WaitForSeconds(1.0f)); } RemoveDead(); foreach (var unit in evil_units) { unit.OnTurnStart(); if (unit.poison > 0) { unit.current_hp -= unit.poison; } if (unit.current_hp > 0.0f) { if (unit.stun) { unit.stun = false; } if (unit.poison > 0.0f) { unit.current_hp -= unit.poison; } else { AI.MakeAction(unit, evil_units, good_units); } } yield return(new WaitForSeconds(1.0f)); } RemoveDead(); is_turn_end = true; yield return(null); }
public IEnumerator Turn() { is_turn_end = false; foreach (var unit in good_units) { if (unit.GetStunStatus() != null) { unit.OnTurnStart(); if (unit.IsUnitStatuses()) { unit.StatusDamage(); yield return(new WaitForSeconds(1.0f)); } } else { unit.OnTurnStart(); boss.GetComponent <Button>().interactable = true; ability_ui.gameObject.SetActive(true); yield return(ability_ui.WaitInput(unit, good_units, evil_units, OnAbilitySelected)); if (unit.IsUnitStatuses()) { unit.StatusDamage(); yield return(new WaitForSeconds(1.0f)); } ability_ui.gameObject.SetActive(false); boss.GetComponent <Button>().interactable = false; } RemoveDead(); if (GameIsEnd()) { StopCoroutine(Turn()); intWindow.ShowWindow(); } yield return(new WaitForSeconds(1.0f)); unit.OnTurnEnd(); } RemoveDead(); if (GameIsEnd()) { StopCoroutine(Turn()); intWindow.ShowWindow(); } foreach (var unit in evil_units) { unit.OnTurnStart(); if (unit.IsUnitStatuses()) { if (unit.GetStunStatus() == null) { AI.MakeAction(unit, evil_units, good_units); } else { unit.StatusDamage(); } yield return(new WaitForSeconds(1.0f)); } else { //Debug.Log(unit.unit_name + " Нет статусов"); AI.MakeAction(unit, evil_units, good_units); } if (unit.current_hp > 0.0f) { yield return(new WaitForSeconds(1.0f)); } unit.OnTurnEnd(); } RemoveDead(); if (GameIsEnd()) { StopCoroutine(Turn()); intWindow.ShowWindow(); } is_turn_end = true; yield return(null); }