//Последний шаг битвы. public void FinalStep() { //Каждому персонажу в команде победителя даем 100 опыта. foreach (Person person in Winner.People) { person.GetExperience(100); } //Объявляем победителя, а также чистим класс битвы для последующих битв MessageBox.Show("Команда " + Winner.Name + "победила"); FirstTeam.Loser = false; SecondTeam.Loser = false; CurrentEnemyCard = null; CurrentStepCard = null; FighterCards.Clear(); Winner = null; step = 0; FirstTeam = null; SecondTeam = null; //FormService.ShowForm(Forms.ChoosingFightForm); //Вызываем контрол для выбора битв. ChoosingFightControl choosingFightControl = MainForm.GetChoosingFight(); choosingFightControl.Show(); }
//Третий шаг битвы. public void ThirdStep() { //Проверяем всех бойцов на отрицательное хп. Если меньше нуля, то удаляем этого бойца из общего списка бойцов. Соответственно, из проверки на иницативу он тоже убирается for (int i = 0; i < FighterCards.Count; i++) { if (FighterCards[i].HP <= 0) { FighterCards.Remove(FighterCards[i]); } } FirstTeam.Loser = true; SecondTeam.Loser = true; //Проверяем, есть ли в команде персонажи с хп больше нуля. Если нет, то команда объявлется НЕпроигавшей foreach (FighterCard fighterCard in FirstTeam.FighterCards) { if (fighterCard.HP > 0) { FirstTeam.Loser = false; } } foreach (FighterCard fighterCard in SecondTeam.FighterCards) { if (fighterCard.HP > 0) { SecondTeam.Loser = false; } } //Проверяем, проиграла ли какая-то команда и назначаем победиля. if (FirstTeam.Loser == true) { this.Winner = SecondTeam; } if (SecondTeam.Loser == true) { this.Winner = FirstTeam; } //Проверка победителя. if (Winner != null) { FinalStep(); return; } //Возвращаемся к первому шагу. this.FirstStep(); }
//Установка команд. Первая команда и вторая команда. public void SetTeams(Team firstTeam, Team secondTeam) { //перед битвой - очищаем список бойцов-карт, список людей, далее идем в команды - очищаем в них список бойцов, устанавливаем команды FighterCards.Clear(); People.Clear(); firstTeam.FighterCards.Clear(); secondTeam.FighterCards.Clear(); FirstTeam = firstTeam; SecondTeam = secondTeam; //В цикле перебираем всех персонажей в двух командах и заносим их в список людей foreach (Person person in FirstTeam.People) { People.Add(person); } foreach (Person person in SecondTeam.People) { People.Add(person); } }