Архитектурный ассет под ImmersiveSim/RPG в вакууме.
В данный момент создаётся логика для разных внутренних систем:
- API cистемs контейнеров с реализацией. По умолчанию принцип работы следующий.
1.1. Загружаются данные и создаются контейнеры - IContainer. Для сохранения данных можно использовать ContainerDTO и ContainerSlotDTO. Если у вас нет сохранённых данных предлагается использовать СontainerDefaultState. Этот ScriptableObject хранит в себе ItemMeta для загрузки состояния контейнера по умолчанию - до изменения его игроком.
1.2. Все загруженные контейнеры кладутся в IContainers, который представляет собой коллекцию только для чтения с перегруженным индексатором. По сути это глобальная база ВСЕХ контейнеров в игре/локации. В реализации под капотом сортированный словарь для увеличения скорости работы, где ключом указана строка (string), а значением IContainer.
1.3. IContainers передаётся в IContainerService. По задумке, это глобальный сервис, который по идентификатору выдаёт IContainerController содержащий в себе необходимый IContainer. IContainerController это обёртка над данными для работы с ними, что даёт бОльшую гибкость при необходимости поменять реализацию.
- API для боевой системы с расчётом урона и тд
- API для статов и накладываемых эффектов