Files
MVP1/Docs/Modules/World.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.9 KiB
Raw Blame History

Глобальный мир

Карта и перемещения: замок с боссом, 20 соседних городов, походы по реальному времени (идут, даже когда игра закрыта).

  • Сборки:
    • Bogatyri.World.Simulation — карта и походы, чистый C# без Unity (переедет на сервер);
    • Bogatyri.World — MarchManager, Unity-часть.
  • Папка: Assets/Scripts/Modules/World.
  • Зависит от: ядра. Войска — через IArmy, добыча — через IEconomy, бой — через IBattleSystem.

Контракт IWorld

Член Что делает
ActiveMarches Сколько походов в пути.
TryStartMarch(targetId, soldiers, out error) Отправить войско на цель.

Получить: GameServices.Get<IWorld>(). Интерфейсу карты (WorldMapController) можно обращаться к MarchManager.Instance и его C#-событиям: там полные данные похода.

События

Публикует:

  • MarchStartedEvent — войско выступило;
  • MarchBattleResolvedEvent — бой у цели прошёл;
  • MarchReturnedEvent — войско вернулось, солдаты и добыча зачислены.

Слушает: ничего. App/GameModules по этим событиям считает статистику для заданий (marchesSent, dailyMarches, worldWins).

Сохранение

Секция "world": { "marches": [ MarchData ] }.

Сброс (ResetState): все походы отменяются. Войска в походе не возвращаются: их сбрасывает GameProgress вместе с армией.

Раньше походы лежали в progress.json (sashaMarches). При первом запуске App/GameModules переносит их в модуль Мира и удаляет из progress.json только после записи save.json.

Файлы

Файл Что это
MarchManager.cs Ведёт походы, реализует IWorld и ISaveParticipant. Создаётся сам при запуске игры.
Simulation/WorldMapLayout.cs Карта: замок, город игрока, 20 соседей из seed.
Simulation/WorldSimulation.cs Походы: старт, бой по прибытии, возвращение. Бой получает через IBattleSystem.

В слое приложения остаются WorldMap/WorldMapController.cs, MarchView.cs, MapCameraController.cs, SceneNavigator.cs.

В игре одна карта мира — сцена WorldMap. Открывается кнопкой «БОЙ» и кнопкой «МИР» в городе (UIPanelManager.Open("World") ведёт в эту сцену).

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

  • Этап 0, решено 19.10.2026: осталась одна карта мира — эта. Маленькая карта (панель «МИР», Meta/World) удалена. Перед удалением проверены ссылки в коде, сценах и префабах. Перенос сохранений: солдаты из её походов (marches в progress.json) возвращаются в город при загрузке — отправленные, а если отряд уже шёл назад, то выжившие. Добыча таких походов не переносится.
  • Этап 4 (утверждён без изменений): у позиций на карте — месторождения и их качество.
  • Этап 6: временные ресурсные точки и кристальные разломы; войска на точке недоступны дома.

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

Дата Кто Что
19.10.2026 Claude Маленькая карта мира (Meta/World: WorldSystem, WorldMapPanel, WorldData, WorldLine) удалена, окно Panel_World убрано из сцены города. Кнопка «МИР» открывает эту карту. Солдаты из походов старой карты возвращаются в город.
19.10.2026 Claude ResetState(): при сбросе сохранений походы отменяются.
19.10.2026 Claude Модуль выделен. MarchManager больше не обращается к GameProgress и ResourceManager: войска через IArmy, добыча через IEconomy, сохранение — своя секция "world", статистика — через события. Формула боя вынесена в модуль Боя.