Неделя 4 (октябрь 3): Крафт и рецепты.
Наконец пришло время крафта и рецептов. Так же как и в постройках, рецепт — это конфиг, а крафт — это инстанс. Получилось много слов обозначающих одно и то же. Просто самому рецепту инстанс не нужен, а при его инстанциировании он перестает быть рецептом и становится процессом — крафтом. Потом станет только хуже.
Суть крафта такая: есть набор рецептов, которые можно готовить только в постройках к которым рецепт приписан. У рецепта есть время приготовления, результат и ингредиенты. При установке рецепта в готовку, ингредиенты списываются из инвентаря, а после окончания готовки результат начисляется. Все это работает на конфигах из двух таблиц: рецепта и бонусов (начисляющих и вычитающих), идеологию которых я взял из Рыбного Места (спасибо ребята).
Если бы в тот момент я работал с таблицами, а не с текстовым JSONом выглядело бы это примерно так:
Конечно это не могло работать без интерфейса крафта, который состоит из панели собственно крафта и панели доступных рецептов, который находится в разработке, видимо, уже на протяжении 3х недель. Интерфейс тут — самое сложное.
У рецепта есть 3 состояния: в очереди, готовится и готов. Очередь необходима потому, что игрок имеет возможность поставить несколько рецептов в очередь производства, а в постройках есть слоты под эту очередь (пока я значение этого параметра просто захардкодил). При окончании готовки одного рецепта должен начинаться другой. А удаление (при удалении или взятии результата готового) рецепта должно приводить к смещению списка очереди. В общем механизм оказался довольно сложным.
Естественно это все рассчитывается и за офлайн. Если поставить в очередь производства несколько рецептов то в зависимости от прошедшего времени они все могут приготовиться. Это как раз оказалось не очень сложно.
На видео работа крафта и баловство с моноснапом.