- Ядро (Bogatyri.Core): контракты модулей, EventBus, GameServices, SaveRegistry - Модули: Экономика, Поселение, Армия, Глобальный мир, Боевая система, Сохранения (каждый — отдельный asmdef, видит только ядро) - App/GameModules: регистрация модулей и связь с GameProgress/Казармами - Сохранения v2 по секциям модулей, перенос старого save.json и походов из progress.json - Сброс сохранений: ISaveSystem.ResetAll, ResetState у модулей, меню Tools - EditMode-тесты модулей, документы по каждому модулю с журналом изменений Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
|
|
};
|
|
}
|
|
}
|