- удалены 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>
4.0 KiB
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 не изменён. |