- ConfigBase - базовый класс конфигураций. Содержит Level, общий для всех сущностей.
- ItemConfig / SpawnerConfig - конкретные конфиги предметов и спавнеров.
- SpawnerConfig дополнительно содержит SpawnTable с вероятностями.
- ConfigRegistry - централизованное хранилище конфигураций. Отдаёт конфиг по уровню.
- FieldEntity - базовый класс для объектов, размещаемых на поле.
- ItemEntity / SpawnerEntity – конкретные реализации FieldEntity.
- SpawnSystem - логика спавна предметов из спавнера.
- MergeSystem - логика объединения сущностей.
- FieldService – предоставление доступа к полю.
- EntityFactory - создание игровых сущностей из конфигов.
- DragHandler – обработка drag & drop логики (перемещение, попытка мёрджа, возврат на место, размещение на пустой клетке).
- SpawnerTimerButton – UI кнопка и таймер, создаёт спавне S1 после завершения таймера.
- GameBoostraper – регистрирует сервисы, создаёт стартовый спавнер.
- Services – обычный service locator для доступа к системам, в дальнейшем можно поменять на Zenject.
Выбрана около ECS архитектура.
Почему? – минимальные зависимости, легко масштабировать, разделение ответственности.
- Фабрика – единая точка создания сущностей.
- Service Locator – доступ к системам без жёстких зависимостей.
- Data Drive – вся прогрессия вынесена в ScriptableObject.
- Связь Drag & Drop + merge – подобрать правильный порядок.
- Проверка какой item или spawner под нами и есть ли он вообще.
- Стоит ли вернуть предмет обратно, начать мёрджить или просто переместить на новую ячейку.
- Если проект разрастётся, то ServiceLocator’а будет недостаточно, стоит заменить на Zenject или VContainer.
- Стоит UI вынести в отдельный сервис.
- Расширить конфиги для дальнейшей визуализации проекта, добавить кастомные иконки под нужный уровень и т.д.