Неделя 4 (октябрь 3): Крафт и рецепты.

Оглавление

Наконец пришло время крафта и рецептов. Так же как и в постройках, рецепт — это конфиг, а крафт — это инстанс. Получилось много слов обозначающих одно и то же. Просто самому рецепту инстанс не нужен, а при его инстанциировании он перестает быть рецептом и становится процессом — крафтом. Потом станет только хуже.

Суть крафта такая: есть набор рецептов, которые можно готовить только в постройках к которым рецепт приписан. У рецепта есть время приготовления, результат и ингредиенты. При установке рецепта в готовку, ингредиенты списываются из инвентаря, а после окончания готовки результат начисляется. Все это работает на конфигах из двух таблиц: рецепта и бонусов (начисляющих и вычитающих), идеологию которых я взял из Рыбного Места (спасибо ребята).

Если бы в тот момент я работал с таблицами, а не с текстовым JSONом выглядело бы это примерно так:

Это таблица рецептов. Тут видно что рецепты принадлежат каким-то постройкам.

Это таблица бонусов. Тут видно что рецепты Iron и Food не имеют ингредиентов, например.

Конечно это не могло работать без интерфейса крафта, который состоит из панели собственно крафта и панели доступных рецептов, который находится в разработке, видимо, уже на протяжении 3х недель. Интерфейс тут — самое сложное.

У рецепта есть 3 состояния: в очереди, готовится и готов. Очередь необходима потому, что  игрок имеет возможность поставить несколько рецептов в очередь производства, а в постройках есть слоты под эту очередь (пока я значение этого параметра просто захардкодил). При окончании готовки одного рецепта должен начинаться другой. А удаление (при удалении или взятии результата готового) рецепта должно приводить к смещению списка очереди. В общем механизм оказался довольно сложным.

Естественно это все рассчитывается и за офлайн. Если поставить в очередь производства несколько рецептов то в зависимости от прошедшего времени они все могут приготовиться. Это как раз оказалось не очень сложно.

На видео работа крафта и баловство с моноснапом.

Оглавление