27 lines
1.3 KiB
C#
27 lines
1.3 KiB
C#
// МОДУЛЬ БОЕВОЙ СИСТЕМЫ: урон, потери, исход. Документ: Docs/Modules/Battle.md
|
|||
|
|
// Без Unity и без float: этот же код без изменений сможет считать бои на сервере.
|
||
|
|
//
|
||
|
|
// Правила пока самые простые: побеждает тот, у кого больше солдат.
|
||
|
|
// Потом сюда добавятся типы войск, герой, технологии -- остальные модули менять не придётся.
|
||
|
|
public sealed class BattleSystem : IBattleSystem
|
||
|
|
{
|
||
|
|
public BattleOutcome Resolve(BattleRequest request)
|
||
|
|
{
|
||
|
|
int attackers = request.Attackers;
|
||
|
|
int defenders = request.Defenders;
|
||
|
|
bool victory = attackers > defenders; // ничья -- в пользу защитника
|
||
|
|
|
||
|
|
// Проигравший теряет половину своего войска, победитель -- столько же
|
||
|
|
int loserArmy = victory ? defenders : attackers;
|
||
|
|
int losses = (loserArmy + 1) / 2;
|
||
|
|
|
||
|
|
return new BattleOutcome
|
||
|
|
{
|
||
|
|
Victory = victory,
|
||
|
|
AttackerLosses = losses,
|
||
|
|
DefenderLosses = losses,
|
||
|
|
Survivors = attackers - losses
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|