Files
AlexanderandClaude Opus 5.5 964cb23d9d Модульная система: игровое ядро + 6 модулей, документы Docs/Modules
- Ядро (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>
2026-10-19 18:39:28 +02:00

3.4 KiB

Экономика

Ресурсы и производство: сколько у игрока дерева, еды, золота и остального, кто их добывает и тратит.

  • Сборка: Bogatyri.Economy.
  • Папка: Assets/Scripts/Modules/Economy.
  • Зависит от: ядра.

Контракт IEconomy

Метод Что делает
Get(type) Сколько ресурса сейчас.
Has(type, amount) Хватает ли.
Add(type, amount) Добавить (или отнять отрицательным числом; в минус не уходит).
TrySpend(type, amount) Потратить, если хватает.
CanAfford(cost) / TrySpend(cost) Проверить и списать цену из нескольких ресурсов — всё или ничего.

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

События

  • Публикует: ResourceChangedEvent — при любом изменении ресурса (тип и новое значение).
  • Слушает: ничего.

Для интерфейса остаётся C#-событие ResourceManager.OnResourceChanged (его слушает ResourceUIText).

Сохранение

Секция "economy": { "resources": [ { "type", "amount" } ] } — имена полей как в старом save.json.

Сброс (ResetState): стартовые значения из Inspector ResourceManager (startWood и т.д.).

Файлы

Файл Что это
ResourceManager.cs Хранилище ресурсов, реализует IEconomy и ISaveParticipant. Живёт между сценами.
ResourceProducer.cs Здание, добывающее ресурс по таймеру.
ResourceCollector.cs Временная добыча по клику. Реализует ILeveledBuilding.

Интерфейс экономики остаётся в слое приложения: Assets/Scripts/Economy/ResourceUIText.cs, BuildingUI.cs.

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

  • Этап 1 (план разработки): лимиты Склада и Амбара; Gems → BlueCrystal; Power убрать из ресурсов.
  • Решение команды от 19.10.2026: у синего кристалла отдельный небольшой настраиваемый лимит хранения, не бесконечный. Переполнение — одно правило для наград и добычи. Число не утверждено.
  • Этап 3: убрать кликер (ResourceCollector); производство = рабочие × норма × качество месторождения × бонус уровня.
  • Все числа — из EconomyConfig, не в коде.

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

Дата Кто Что
19.10.2026 Claude ResetState(): при сбросе сохранений ресурсы возвращаются к стартовым.
19.10.2026 Claude Модуль выделен: ResourceManager, ResourceProducer, ResourceCollector перенесены в Modules/Economy. ResourceManager реализует IEconomy, публикует ResourceChangedEvent, сам сохраняет секцию "economy".