20 #include <QJsonDocument>
21 #include <QJsonObject>
37 materialsNumber(materials_number),
44 items.append(new_item);
58 return *item1 < *item2;
62 for (
int n=0; n<array.size(); ++n) {
63 const QJsonObject item = array.at(n).toObject();
76 for (
const auto item :
items) {
83 for (
int sub=0; sub<
LAST_SUB; ++sub) {
84 QFile file(QString(
":/recipes/%1.json").
86 if ( not file.open(QIODevice::ReadOnly | QIODevice::Text) )
continue;
87 const QJsonArray recipes =
88 QJsonDocument::fromJson(file.readAll()).array();
89 for (
int i=0; i<recipes.size(); ++i) {
90 const QJsonObject recipeObject = recipes.at(i).toObject();
91 const QJsonArray materials = recipeObject[
"materials"].toArray();
95 recipe->
LoadItems(recipeObject[
"products"].toArray());
102 for (
int sub=0; sub<
LAST_SUB; ++sub) {
131 if ( tried == *recipe ) {
static int StringToSub(QString)
If string is not convertible to substance, returns LAST_SUB.
bool MiniCraft(CraftItem **) const
const int materialsNumber
int GetMaterialsNumber() const
bool CraftSub(CraftList *items, int sub) const
CraftList(int materials_number)
static QString SubToString(int sub)
If substance is unknown, returns "unknown_sub".
void operator<<(CraftItem *)
QList< CraftItem * > items
QList< CraftList * > recipesList[LAST_SUB]
bool operator<(const CraftItem &item) const
bool operator==(const CraftList &) const
static int StringToKind(QString)
If string is not convertible to kind, returns LAST_KIND.
void LoadItems(const QJsonArray &)
bool ItemsLess(const CraftItem *item1, const CraftItem *item2)
CraftItem * at(int item_position) const
bool Craft(CraftList *items, int sub) const
This class represents craft recipe.
const CraftManager * craft_manager
static constexpr int MakeId(const int kind, const int sub)