# HG changeset patch # User Wuzzy # Date 1521026231 -3600 # Node ID 7d9462d49d4ce797af9b15716f86771d19a4445c # Parent 290815bbd4e1f7a0b6484c8fb435dee0b8523aa9 Fix bad import of old ammo schemes, improve debug output when importing schemes from old .ini files diff -r 290815bbd4e1 -r 7d9462d49d4c QTfrontend/model/ammoSchemeModel.cpp --- a/QTfrontend/model/ammoSchemeModel.cpp Wed Mar 14 01:33:37 2018 +0100 +++ b/QTfrontend/model/ammoSchemeModel.cpp Wed Mar 14 12:17:11 2018 +0100 @@ -732,29 +732,37 @@ schemes.append(spaceinvasion); schemes.append(hedgeeditor); - if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); + if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) { + QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); + } if (!QDir(directory).exists()) { QDir().mkdir(directory); + qDebug("No /Schemes/Game directory found. Trying to import game schemes from schemes.ini."); + int size = fileConfig.beginReadArray("schemes"); + int imported = 0; for (int i = 0; i < size; ++i) { fileConfig.setArrayIndex(i); - if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString())) + QString schemeName = fileConfig.value(spNames[0]).toString(); + if (!predefSchemesNames.contains(schemeName)) { QList scheme; - QSettings file(directory + "/" + fileConfig.value(spNames[0]).toString() + ".hwg", QSettings::IniFormat); + QSettings file(directory + "/" + schemeName + ".hwg", QSettings::IniFormat); for (int k = 0; k < spNames.size(); ++k) { scheme << fileConfig.value(spNames[k], defaultScheme[k]); file.setValue(spNames[k], fileConfig.value(spNames[k], defaultScheme[k])); } file.sync(); + imported++; schemes.append(scheme); } } + qDebug("%d game scheme(s) imported.", imported); fileConfig.endArray(); } else { QStringList scheme_dir = QDir(directory).entryList(); diff -r 290815bbd4e1 -r 7d9462d49d4c QTfrontend/ui/widget/selectWeapon.cpp --- a/QTfrontend/ui/widget/selectWeapon.cpp Wed Mar 14 01:33:37 2018 +0100 +++ b/QTfrontend/ui/widget/selectWeapon.cpp Wed Mar 14 12:17:11 2018 +0100 @@ -85,32 +85,37 @@ QFrame(parent), m_numItems(numItems) { - if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); + if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) { + QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); + } if (!QDir(cfgdir->absolutePath() + "/Schemes/Ammo").exists()) { + qDebug("No /Schemes/Ammo directory found. Trying to import weapon schemes from weapons.ini."); QDir().mkdir(cfgdir->absolutePath() + "/Schemes/Ammo"); wconf = new QSettings("Hedgewars", "Hedgewars"); wconf->clear(); QSettings old_wconf(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat); - QList defaultAmmos; + QStringList defaultAmmos; for(int i = 0; i < cDefaultAmmos.size(); ++i) { wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second); defaultAmmos.append(cDefaultAmmos[i].first); } QStringList keys = old_wconf.allKeys(); + int imported = 0; for(int i = 0; i < keys.size(); i++) { - wconf->setValue(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString())); - if (!defaultAmmos.contains(keys[i])) { + wconf->setValue(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString())); QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + keys[i] + ".hwa"); if (file.open(QIODevice::WriteOnly)) { QTextStream stream( &file ); stream << old_wconf.value(keys[i]).toString() << endl; } + imported++; } } + qDebug("%d weapon scheme(s) imported.", imported); } else { wconf = new QSettings("Hedgewars", "Hedgewars"); wconf->clear();