Files
MVP1/Docs/Modules/Army.md
T
AlexanderandClaude Opus 5.5 d570fddbc8 Одна карта мира: удалена маленькая карта Meta/World
- удалены WorldSystem, WorldMapPanel, WorldData, WorldLine и окно Panel_World из сцены города
- кнопка «МИР» в городе открывает большую карту (сцена WorldMap) через UIPanelManager.Open("World")
- перенос сохранений: солдаты из походов старой карты возвращаются в город при загрузке
  (отправленные, а если отряд шёл назад — выжившие); добыча таких походов не переносится
- ArmyBridge.TroopsInMarches: панель «Войска» показывает воинов в походах большой карты
- HUDPanelsBuilder: кнопка «МИР» без отдельной панели
- документы World, Army, README обновлены

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 19:27:34 +02:00

4.0 KiB

Армия

Войска и их характеристики: сколько воинов дома, как они уходят в поход и возвращаются.

  • Сборка: Bogatyri.Army (без Unity).
  • Папка: Assets/Scripts/Modules/Army.
  • Зависит от: ядра.

Контракт IArmy

Член Что делает
SoldiersAtHome Воинов в городе (все типы).
TakeForMarch(marchId, count) Забрать воинов в поход пропорционально составу армии и запомнить состав похода.
ReturnFromMarch(marchId, survivors) Вернуть выживших по тем же типам.

Получить: GameServices.Get<IArmy>().

Где сейчас данные

Войска пока хранятся в GameProgress (progress.json, поле troops, 4 типа). Поэтому контракт реализует мост Assets/Scripts/WorldMap/ArmyBridge.cs (ArmyBridge.Service), а модуль Армии содержит правила деления войск ArmyMath.

Решение команды от 19.10.2026: ArmyBridge не удалять, пока войска не переедут в модуль Армии вместе с миграцией сохранений (поле sashaMarchUnits).

События

  • Публикует: пока ничего.
  • Слушает: ничего (походы вызывают контракт напрямую).

Сохранение

Пока через GameProgress. Когда войска переедут в модуль, у него появится своя секция "army" и перенос из progress.json.

Файлы

Файл Что это
ArmyMath.cs TakeProportional — кого взять в поход; SplitSurvivors — как вернуть выживших. Без Unity.
../../WorldMap/ArmyBridge.cs (слой приложения) Реализация IArmy поверх GameProgress; TroopsInMarches — воинов в походах на карте мира.

Решения и план

  • Этап 5 (план разработки): солдат стоит 1 человека, 15 еды, 5 металла, 5 золота; содержание 0,2 еды в час; погибшие уменьшают население.
  • Решение команды от 19.10.2026:
    • войска набираются из населения с сохранением гражданского минимума;
    • гарнизон поселения: часть солдат назначается защищать город;
    • общая армия = гарнизон + доступные отряды + войска в походах, на точках и в гарнизоне Круга; один солдат не может быть в двух местах;
    • гарнизон ест еду и участвует в защите;
    • при голоде дебаффы действуют и на гарнизон, и на походы.
  • Следующий шаг модуля: перенести troops и sashaMarchUnits из GameProgress в модуль (секция "army"), заменить ArmyBridge на реализацию внутри модуля.

Журнал изменений

Дата Кто Что
19.10.2026 Claude ArmyBridge.TroopsInMarches для панели «Войска». После удаления маленькой карты войска в походах учитываются только здесь (sashaMarchUnits).
19.10.2026 Claude Модуль создан: ArmyMath (правила деления войск, без Unity, тесты на отсутствие двойного учёта). ArmyBridge сохранён и теперь реализует IArmy через ArmyMath; формат sashaMarchUnits не изменён.