private List <IUnit> GetFirstLine(IArmy army) { var firstLine = new List <IUnit>(); var unitsInRow = Math.Min(GameStrategy.SizeOfRow, army.Count()); for (int i = 0; i < unitsInRow; i++) { firstLine.Add(army[army.Count() - 1 - i]); } return(firstLine); }
private List <ISpecialAction> GetSpecialUnitsInRow(IArmy army, int Column) { var specialActions = new List <ISpecialAction>(); for (int i = army.Count() - Column - 1; i >= 0; i -= GameStrategy.SizeOfRow) { if (army[i] is ISpecialAction) { specialActions.Add(army[i] as ISpecialAction); } } return(specialActions); }
private void Fight(IArmy firstArmy, IArmy secondArmy) { if (EndGame()) { return; } List <IUnit> firstLineFirstArmy = GetFirstLine(firstArmy); List <IUnit> firstLineSecondArmy = GetFirstLine(secondArmy); var minPossiblePairs = Math.Min(GameStrategy.SizeOfRow, Math.Min(firstArmy.Count(), secondArmy.Count())); //Сражаются бойцы, у которых есть противник for (int i = 0; i < minPossiblePairs; i++) { IUnit Attecker = firstLineFirstArmy[i]; IUnit Defender = firstLineSecondArmy[i]; StepInfo += $"\n\nАрмия {firstArmy.ArmyName} - {Attecker.GetInfo()}\n\n\t\t\t|--|--СРАЖАЕТСЯ С--|--|\n\nАрмией {secondArmy.ArmyName} - {Defender.GetInfo()}\n"; IUnit attackedUnit = Attecker.Fight(Defender); if (attackedUnit == null) { StepInfo += $"\n\t\t\t -------ИТОГ-------\n\nАрмия {secondArmy.ArmyName} АТТАКОВАНА! Пострадал {Defender.GetInfo()}!\n"; } else { StepInfo += $"\n\t\t\t -------ИТОГ-------\n\nВ армии {secondArmy.ArmyName} СМЕРТЬ! Погиб {Defender.Name}!\n"; if (Subscribed == true) { StepInfo += $"\n\t\t\t{secondArmy.NotifyAboutDeath()}\n"; } secondArmy.Remove(attackedUnit); } } if (EndGame()) { return; } }