aboutsummaryrefslogtreecommitdiff
path: root/src/text_file_functions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/text_file_functions.cpp')
-rw-r--r--src/text_file_functions.cpp75
1 files changed, 56 insertions, 19 deletions
diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp
index ee6db6b9..f1e1fbba 100644
--- a/src/text_file_functions.cpp
+++ b/src/text_file_functions.cpp
@@ -1,4 +1,5 @@
#include "text_file_functions.h"
+#include "aoutils.h"
QString AOApplication::read_theme()
{
@@ -900,22 +901,61 @@ int AOApplication::get_text_delay(QString p_char, QString p_emote)
QStringList AOApplication::get_effects(QString p_char)
{
- QString p_misc = read_char_ini(p_char, "effects", "Options");
- QString p_path = get_asset("effects/effects.ini", current_theme, get_subtheme(), default_theme, "");
- QString p_misc_path = get_asset("effects.ini", current_theme, get_subtheme(), default_theme, p_misc);
- QSettings effects_config(p_path, QSettings::IniFormat);
- effects_config.setIniCodec("UTF-8");
- QStringList effects = effects_config.childGroups();
- std::sort(effects.begin(), effects.end(), [] (const QString &a, const QString &b) {return a.split(":")[0].toInt() < b.split(":")[0].toInt();});
- if (p_path != p_misc_path) {
- // If misc path is different from default path, stack the new miscs on top of the defaults
- QSettings effects_config_misc(p_misc_path, QSettings::IniFormat);
- effects_config_misc.setIniCodec("UTF-8");
- QStringList misc_effects = effects_config_misc.childGroups();
- std::sort(misc_effects.begin(), misc_effects.end(), [] (const QString &a, const QString &b) {return a.split(":")[0].toInt() < b.split(":")[0].toInt();});
- effects += misc_effects;
+ const QStringList l_filepath_list{
+ get_asset("effects/effects.ini", current_theme, get_subtheme(), default_theme, ""),
+ get_asset("effects.ini", current_theme, get_subtheme(), default_theme, read_char_ini(p_char, "effects", "Options")),
+ };
+
+ QStringList l_effect_name_list;
+ for (const QString &i_filepath : l_filepath_list)
+ {
+ if (!QFile::exists(i_filepath))
+ {
+ continue;
+ }
+
+ QSettings l_effects_ini(i_filepath, QSettings::IniFormat);
+ l_effects_ini.setIniCodec("UTF-8");
+
+ // port legacy effects
+ if (!l_effects_ini.contains("version/major") || l_effects_ini.value("version/major").toInt() < 2)
+ {
+ AOUtils::migrateEffects(l_effects_ini);
+ }
+
+ QStringList l_group_list;
+ for (const QString &i_group : l_effects_ini.childGroups())
+ {
+ bool l_result;
+ i_group.toInt(&l_result);
+ if (l_result)
+ {
+ l_group_list.append(i_group);
+ }
+ }
+
+ std::sort(l_group_list.begin(), l_group_list.end(), [](const QString &lhs, const QString &rhs) {
+ return lhs.toInt() < rhs.toInt();
+ });
+
+ for (const QString &i_group : qAsConst(l_group_list))
+ {
+ const QString l_key = i_group + "/name";
+ if (!l_effects_ini.contains(l_key))
+ {
+ continue;
+ }
+
+ const QString l_effect_name = l_effects_ini.value(l_key).toString();
+ if (l_effect_name.isEmpty())
+ {
+ continue;
+ }
+
+ l_effect_name_list.append(l_effect_name);
+ }
}
- return effects;
+ return l_effect_name_list;
}
QString AOApplication::get_effect(QString effect, QString p_char,
@@ -949,10 +989,7 @@ QString AOApplication::get_effect_property(QString fx_name, QString p_char,
settings.setIniCodec("UTF-8");
QStringList char_effects = settings.childGroups();
for (int i = 0; i < char_effects.size(); ++i) {
- QString effect = char_effects[i];
- if (effect.contains(":")) {
- effect = effect.section(':', 1);
- }
+ QString effect = settings.value(char_effects[i] + "/name").toString();
if (effect.toLower() == fx_name.toLower()) {
f_result = settings.value(char_effects[i] + "/" + p_property).toString();
if (!f_result.isEmpty()) {