А пока предлагаю здесь описать что должно быть у предмета (стековая система, крафтовые операции и т.д.) контейнера, инвентаря и куклы.
Пишите как можно больше идей, чтобы из них сделать шаблон. нет эти возможности не будут в библиотеке - их много. Вместо этого будет шаблон который каждый сможет просто изменять по своим нужнам. Но чтобы была такая расширяемость - надо примерно представлять всю фантазию пользователя-программиста
Вот, первый набросок доки
Пользователь - программист использующий эту библиотеку в своих целях.
Предмет - сущность имеющая свойства. Данные свойства описывают поведение предмета в мире. Важно чтобы пользователь мог определять любое поведение предмета в зависимости от своих задач, библиотека не должна ограничивать его в этом.
Контейнер - сущность для хранения предметов. Является интерфейсом над предметами. Содержит бесчисленное число предметов. Все предметы хранятся в контейнерах, то есть нет предметов без контейнеров. Контейнеры также взаимодействуют друг с другом (передают предметы друг другу, копируют их и т.д.)
Интерфейс библиотеки - интерфейс позволяющий пользователю работать с контейнерами и предметами.
Предмет является структурой. Состоит из двух частей - интерфейса и базы.
База
Условное понятие. База содержит характеристики предмета. Но учитывая что невозможно угадать эти характеристики задуманные пользователям, база работает по системе ключ/значение. Количество ключей бесконечно (динамично). Ключ это уникальная строка названия характеристики. Значение - это строка содержащая описание характеристики.
Интерфейс
Позволяет пользователю получать из базы характеристики для последующего использования а также вносить изменения в эту базу.
Контейнер
Состоит из интерфейса, утилит и базы.
База - содержит бесконечное число предметов. Предметы имеют систему координат внутри контейнера - x указывает условное расположение предмета, а z - глубину вложения.
Интерфейс позволяет работать как в общем с инвентарем, так и с отдельными предметами
Утилиты - это функции дающие некоторые возможности (например сохранение, перенос содержимого контейнера в другой контейнер). Также имеются возможности
остается вопрос, как уникально хранить предметы внутри контейнера? Может по названию? Вроде плохо. Или банально по числу?