diff --git a/mapeditor/CMakeLists.txt b/mapeditor/CMakeLists.txt index 4fc4679e6..dc69ed286 100644 --- a/mapeditor/CMakeLists.txt +++ b/mapeditor/CMakeLists.txt @@ -196,6 +196,7 @@ endif() target_sources(vcmieditor PRIVATE ${editor_SRCS} ${editor_HEADERS} + ${editor_FORMS} ${editor_RESOURCES} ) diff --git a/mapeditor/jsonutils.cpp b/mapeditor/jsonutils.cpp index 5ab2335af..e4eb884d6 100644 --- a/mapeditor/jsonutils.cpp +++ b/mapeditor/jsonutils.cpp @@ -17,7 +17,7 @@ static QVariantMap JsonToMap(const JsonMap & json) QVariantMap map; for(auto & entry : json) { - map.insert(QString::fromUtf8(entry.first.c_str()), JsonUtils::toVariant(entry.second)); + map.insert(QString::fromStdString(entry.first), JsonUtils::toVariant(entry.second)); } return map; } @@ -61,23 +61,18 @@ QVariant toVariant(const JsonNode & node) { switch(node.getType()) { - break; case JsonNode::JsonType::DATA_NULL: return QVariant(); - break; case JsonNode::JsonType::DATA_BOOL: return QVariant(node.Bool()); - break; case JsonNode::JsonType::DATA_FLOAT: - case JsonNode::JsonType::DATA_INTEGER: return QVariant(node.Float()); - break; + case JsonNode::JsonType::DATA_INTEGER: + return QVariant{static_cast(node.Integer())}; case JsonNode::JsonType::DATA_STRING: - return QVariant(QString::fromUtf8(node.String().c_str())); - break; + return QVariant(QString::fromStdString(node.String())); case JsonNode::JsonType::DATA_VECTOR: return JsonToList(node.Vector()); - break; case JsonNode::JsonType::DATA_STRUCT: return JsonToMap(node.Struct()); } @@ -87,33 +82,31 @@ QVariant toVariant(const JsonNode & node) QVariant JsonFromFile(QString filename) { QFile file(filename); - file.open(QFile::ReadOnly); - auto data = file.readAll(); + if(!file.open(QFile::ReadOnly)) + { + logGlobal->error("Failed to open file %s. Reason: %s", qUtf8Printable(filename), qUtf8Printable(file.errorString())); + return {}; + } - if(data.size() == 0) - { - logGlobal->error("Failed to open file %s", filename.toUtf8().data()); - return QVariant(); - } - else - { - JsonNode node(reinterpret_cast(data.data()), data.size(), filename.toStdString()); - return toVariant(node); - } + const auto data = file.readAll(); + JsonNode node(reinterpret_cast(data.data()), data.size(), filename.toStdString()); + return toVariant(node); } JsonNode toJson(QVariant object) { JsonNode ret; - if(object.canConvert()) - ret.Struct() = VariantToMap(object.toMap()); - else if(object.canConvert()) - ret.Vector() = VariantToList(object.toList()); - else if(object.userType() == QMetaType::QString) + if(object.userType() == QMetaType::QString) ret.String() = object.toString().toUtf8().data(); else if(object.userType() == QMetaType::Bool) ret.Bool() = object.toBool(); + else if(object.canConvert()) + ret.Struct() = VariantToMap(object.toMap()); + else if(object.canConvert()) + ret.Vector() = VariantToList(object.toList()); + else if(object.canConvert()) + ret.Integer() = object.toInt(); else if(object.canConvert()) ret.Float() = object.toFloat(); diff --git a/mapeditor/windownewmap.cpp b/mapeditor/windownewmap.cpp index 219a2da9c..f77b6e2f7 100644 --- a/mapeditor/windownewmap.cpp +++ b/mapeditor/windownewmap.cpp @@ -150,6 +150,10 @@ bool WindowNewMap::loadUserSettings() ui->monsterOpt4->setChecked(true); break; } + ui->roadDirt->setChecked(mapGenOptions.isRoadEnabled(Road::DIRT_ROAD)); + ui->roadGravel->setChecked(mapGenOptions.isRoadEnabled(Road::GRAVEL_ROAD)); + ui->roadCobblestone->setChecked(mapGenOptions.isRoadEnabled(Road::COBBLESTONE_ROAD)); + ret = true; } @@ -236,6 +240,10 @@ void WindowNewMap::on_okButton_clicked() mapGenOptions.setWaterContent(water); mapGenOptions.setMonsterStrength(monster); + + mapGenOptions.setRoadEnabled(Road::DIRT_ROAD, ui->roadDirt->isChecked()); + mapGenOptions.setRoadEnabled(Road::GRAVEL_ROAD, ui->roadGravel->isChecked()); + mapGenOptions.setRoadEnabled(Road::COBBLESTONE_ROAD, ui->roadCobblestone->isChecked()); saveUserSettings(); diff --git a/mapeditor/windownewmap.ui b/mapeditor/windownewmap.ui index 3b97e1a44..e4121de3c 100644 --- a/mapeditor/windownewmap.ui +++ b/mapeditor/windownewmap.ui @@ -7,7 +7,7 @@ 0 0 444 - 445 + 506 @@ -52,7 +52,7 @@ 0 20 281 - 68 + 73 @@ -72,7 +72,7 @@ - Qt::ImhDigitsOnly + Qt::InputMethodHint::ImhDigitsOnly 36 @@ -98,7 +98,7 @@ - Qt::ImhDigitsOnly + Qt::InputMethodHint::ImhDigitsOnly 36 @@ -132,10 +132,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Fixed + QSizePolicy::Policy::Fixed @@ -207,7 +207,7 @@ 10 140 431 - 301 + 361 @@ -237,7 +237,7 @@ 10 20 391 - 68 + 72 @@ -546,7 +546,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -675,7 +675,104 @@ - Qt::Horizontal + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + + 10 + 230 + 411 + 51 + + + + + 0 + 0 + + + + + 480 + 96 + + + + Roads + + + + + 0 + 20 + 411 + 26 + + + + + + + Dirt + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Gravel + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Cobblestone + + + + + + + Qt::Orientation::Horizontal @@ -692,9 +789,9 @@ 10 - 230 + 280 411 - 32 + 34 @@ -732,37 +829,37 @@ - - - false - + - 280 - 270 - 131 - 21 + 80 + 320 + 283 + 33 - - Qt::ImhDigitsOnly - - - 0 - - - - - - 110 - 270 - 161 - 20 - - - - Custom seed - + + + + + Custom seed + + + + + + + false + + + Qt::InputMethodHint::ImhDigitsOnly + + + 0 + + + +