From cb34dbc9df401088396fe78b64f3233c579f2e34 Mon Sep 17 00:00:00 2001 From: Chrezm Date: Mon, 24 Jan 2022 10:47:08 -0500 Subject: [PATCH 1/7] Remove text eliding in iniswap dropdown+Add horizontall scrollbar --- src/courtroom_widgets.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/courtroom_widgets.cpp b/src/courtroom_widgets.cpp index 946e6222a..ceae87d86 100644 --- a/src/courtroom_widgets.cpp +++ b/src/courtroom_widgets.cpp @@ -107,6 +107,10 @@ void Courtroom::create_widgets() ui_vp_chat_arrow->set_play_once(false); ui_iniswap_dropdown = new QComboBox(this); + QListView* view = new QListView(ui_iniswap_dropdown); + ui_iniswap_dropdown->setView(view); + view->setTextElideMode(Qt::TextElideMode::ElideNone); + view->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded); ui_ic_chatlog = new DRTextEdit(this); ui_ic_chatlog->setReadOnly(true); From e6a048e019db63ffa2e40528e79615f6848392ea Mon Sep 17 00:00:00 2001 From: Chrezm Date: Mon, 24 Jan 2022 12:18:39 -0500 Subject: [PATCH 2/7] All folders in characters folder now appear, even without char.ini --- src/courtroom_character.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index 112873c7f..f71446038 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -69,13 +70,11 @@ void Courtroom::update_iniswap_list() ui_iniswap_dropdown->clear(); QStringList l_name_list{"Default"}; - const QString l_path = ao_app->get_base_path() + "/characters"; + const QString l_path = ao_app->get_base_path() + "characters/"; const QFileInfoList l_info_list = QDir(l_path).entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot); for (const QFileInfo &i_info : l_info_list) { const QString l_name = i_info.fileName(); - if (!file_exists(ao_app->get_character_path(l_name, CHARACTER_CHAR_INI))) - continue; l_name_list.append(l_name); } From b0977500fb8989a26c3fc0ab236c4492f6dc15b2 Mon Sep 17 00:00:00 2001 From: Chrezm Date: Mon, 24 Jan 2022 19:27:15 -0500 Subject: [PATCH 3/7] For all character folders, list in iniswap dropdown earliest directory with a char.ini --- src/courtroom_character.cpp | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index f71446038..88a6575ba 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -64,19 +64,35 @@ void drSetItemIcon(QComboBox *p_widget, const int p_index, const QString &p_chr_ } } // namespace +void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, QString l_path_end) +{ + if (file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_INI)) + { + l_name_list->append(l_path_end.mid(1)); + return; + } + + QDirIterator it(l_path_start + l_path_end, QDir::Dirs | QDir::NoDotAndDotDot); + while (it.hasNext()) { + it.next(); + QFileInfo l_file_info = it.fileInfo(); + QString l_folder_name = l_file_info.fileName(); + if (l_folder_name == "emotions") + continue; + if (l_folder_name == "sounds") + continue; + _traverse_characters_folder(l_name_list, l_path_start, l_path_end + "/" + l_folder_name); + } +} + void Courtroom::update_iniswap_list() { QSignalBlocker b_ini_list(ui_iniswap_dropdown); ui_iniswap_dropdown->clear(); QStringList l_name_list{"Default"}; - const QString l_path = ao_app->get_base_path() + "characters/"; - const QFileInfoList l_info_list = QDir(l_path).entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot); - for (const QFileInfo &i_info : l_info_list) - { - const QString l_name = i_info.fileName(); - l_name_list.append(l_name); - } + const QString l_path_start = ao_app->get_base_path() + "characters/"; + _traverse_characters_folder(&l_name_list, l_path_start, ""); for (int i = 0; i < l_name_list.length(); ++i) { From 9ff2a7a2554ac60d9292d111e5469650741c52c5 Mon Sep 17 00:00:00 2001 From: Chrezm Date: Tue, 25 Jan 2022 09:29:38 -0500 Subject: [PATCH 4/7] Add basic outfit dropdown, missing linking selection to UI --- include/commondefs.h | 1 + include/courtroom.h | 2 ++ src/commondefs.cpp | 1 + src/courtroom.cpp | 2 ++ src/courtroom_character.cpp | 39 +++++++++++++++++++++++++++++++------ src/courtroom_widgets.cpp | 8 ++++++++ 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/include/commondefs.h b/include/commondefs.h index 6c2f60780..f3b0626d0 100644 --- a/include/commondefs.h +++ b/include/commondefs.h @@ -7,6 +7,7 @@ extern const QString BACKGROUND_DEFAULT_NAME; extern const QString BASE_CONFIG_INI; extern const QString CHARACTER_CHAR_INI; +extern const QString CHARACTER_CHAR_ROOT_INI; extern const QString CHARACTER_SOUNDS_INI; extern const QString CONFIG_SOUNDS_INI; diff --git a/include/courtroom.h b/include/courtroom.h index 4f59788df..673b6979d 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -111,6 +111,7 @@ class Courtroom : public QMainWindow QString get_character_ini(); QString get_character_content_url(); void update_iniswap_list(); + void update_outfit_list(); void update_default_iniswap_item(); void select_base_character_iniswap(); void refresh_character_content_url(); @@ -406,6 +407,7 @@ class Courtroom : public QMainWindow QComboBox *ui_emote_dropdown = nullptr; QComboBox *ui_iniswap_dropdown = nullptr; QComboBox *ui_pos_dropdown = nullptr; + QComboBox *ui_outfit_dropdown = nullptr; AOImageDisplay *ui_defense_bar = nullptr; AOImageDisplay *ui_prosecution_bar = nullptr; diff --git a/src/commondefs.cpp b/src/commondefs.cpp index 16b2ca463..49f82b571 100644 --- a/src/commondefs.cpp +++ b/src/commondefs.cpp @@ -7,6 +7,7 @@ const QString BACKGROUND_DEFAULT_NAME = "gs4"; const QString BASE_CONFIG_INI = "/base/config.ini"; const QString CHARACTER_CHAR_INI = "char.ini"; +const QString CHARACTER_CHAR_ROOT_INI = "char_root.ini"; const QString CHARACTER_SOUNDS_INI = "sounds.ini"; const QString CONFIG_SOUNDS_INI = "configs/sounds.ini"; diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 21142b8fd..a30f61f90 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -109,6 +109,7 @@ void Courtroom::setup_courtroom() ui_char_select_background->setVisible(l_chr_select_visible); update_iniswap_list(); + update_outfit_list(); m_shout_state = 0; m_shout_current = 0; @@ -187,6 +188,7 @@ void Courtroom::enter_courtroom(int p_cid) set_character_position(ao_app->get_char_side(l_chr_name)); select_base_character_iniswap(); refresh_character_content_url(); + update_outfit_list(); const int l_prev_emote_count = m_emote_list.count(); m_emote_list = ao_app->get_emote_list(l_chr_name); diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index 88a6575ba..912d4197d 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -64,14 +64,17 @@ void drSetItemIcon(QComboBox *p_widget, const int p_index, const QString &p_chr_ } } // namespace -void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, QString l_path_end) +void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, QString l_path_end, + bool l_ignore_char_root) { - if (file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_INI)) + if (file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_INI) || + (!l_ignore_char_root && file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_ROOT_INI))) { - l_name_list->append(l_path_end.mid(1)); + const QString l_name = l_path_end.mid(1); + if (!l_name.isEmpty()) + l_name_list->append(l_name); return; } - QDirIterator it(l_path_start + l_path_end, QDir::Dirs | QDir::NoDotAndDotDot); while (it.hasNext()) { it.next(); @@ -81,7 +84,7 @@ void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, continue; if (l_folder_name == "sounds") continue; - _traverse_characters_folder(l_name_list, l_path_start, l_path_end + "/" + l_folder_name); + _traverse_characters_folder(l_name_list, l_path_start, l_path_end + "/" + l_folder_name, l_ignore_char_root); } } @@ -92,7 +95,7 @@ void Courtroom::update_iniswap_list() QStringList l_name_list{"Default"}; const QString l_path_start = ao_app->get_base_path() + "characters/"; - _traverse_characters_folder(&l_name_list, l_path_start, ""); + _traverse_characters_folder(&l_name_list, l_path_start, "", false); for (int i = 0; i < l_name_list.length(); ++i) { @@ -112,6 +115,30 @@ void Courtroom::update_default_iniswap_item() drSetItemIcon(ui_iniswap_dropdown, 0, get_character(), ao_app); } +void Courtroom::update_outfit_list() +{ + QSignalBlocker b_ini_list(ui_outfit_dropdown); + ui_outfit_dropdown->clear(); + + QStringList l_name_list{"Default"}; + const QString char_ini = get_character_ini(); + if (!char_ini.isEmpty()) + { + const QString l_path_start = ao_app->get_base_path() + "characters/" + char_ini + "/"; + _traverse_characters_folder(&l_name_list, l_path_start, "", true); + } + + for (int i = 0; i < l_name_list.length(); ++i) + { + const QString &i_name = l_name_list.at(i); + ui_outfit_dropdown->addItem(i_name); + if (i == 0) + continue; + drSetItemIcon(ui_iniswap_dropdown, i, get_character() + "/" + i_name, ao_app); + } + drSetItemIcon(ui_iniswap_dropdown, 0, get_character(), ao_app); +} + void Courtroom::select_base_character_iniswap() { const QString l_current_chr = get_character_ini(); diff --git a/src/courtroom_widgets.cpp b/src/courtroom_widgets.cpp index ceae87d86..8550541f5 100644 --- a/src/courtroom_widgets.cpp +++ b/src/courtroom_widgets.cpp @@ -111,6 +111,11 @@ void Courtroom::create_widgets() ui_iniswap_dropdown->setView(view); view->setTextElideMode(Qt::TextElideMode::ElideNone); view->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded); + ui_outfit_dropdown = new QComboBox(this); + QListView* view2 = new QListView(ui_outfit_dropdown); + ui_outfit_dropdown->setView(view2); + view2->setTextElideMode(Qt::TextElideMode::ElideNone); + view2->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded); ui_ic_chatlog = new DRTextEdit(this); ui_ic_chatlog->setReadOnly(true); @@ -387,6 +392,7 @@ void Courtroom::reset_widget_names() {"emote_right", ui_emote_right}, {"emote_dropdown", ui_emote_dropdown}, {"iniswap_dropdown", ui_iniswap_dropdown}, + {"outfit_dropdown", ui_outfit_dropdown}, {"pos_dropdown", ui_pos_dropdown}, {"defense_bar", ui_defense_bar}, {"prosecution_bar", ui_prosecution_bar}, @@ -722,6 +728,8 @@ void Courtroom::set_widgets() set_size_and_pos(ui_iniswap_dropdown, "iniswap_dropdown", COURTROOM_DESIGN_INI, ao_app); set_stylesheet(ui_iniswap_dropdown, "[INISWAP DROPDOWN]", COURTROOM_STYLESHEETS_CSS, ao_app); + set_size_and_pos(ui_outfit_dropdown, "outfit_dropdown", COURTROOM_DESIGN_INI, ao_app); + set_size_and_pos(ui_pos_dropdown, "pos_dropdown", COURTROOM_DESIGN_INI, ao_app); set_stylesheet(ui_pos_dropdown, "[POS DROPDOWN]", COURTROOM_STYLESHEETS_CSS, ao_app); From 385aed8d02bf0201501b48392d6dadb2a53a9cbd Mon Sep 17 00:00:00 2001 From: Chrezm Date: Thu, 27 Jan 2022 18:56:28 -0500 Subject: [PATCH 5/7] Link outfit dropdown to ini changes --- include/courtroom.h | 6 +++- src/courtroom.cpp | 8 +++-- src/courtroom_character.cpp | 70 ++++++++++++++++++++++++++++++++++--- src/courtroom_widgets.cpp | 1 + 4 files changed, 77 insertions(+), 8 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index 673b6979d..2dc680e23 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -109,11 +109,14 @@ class Courtroom : public QMainWindow public: QString get_character(); QString get_character_ini(); + QString get_character_base_ini(); + QString get_character_outfit_ini(); QString get_character_content_url(); void update_iniswap_list(); void update_outfit_list(); void update_default_iniswap_item(); - void select_base_character_iniswap(); + void select_character_base_iniswap(); + void select_character_outfit_iniswap(); void refresh_character_content_url(); // Set the showname of the client @@ -594,6 +597,7 @@ private slots: void on_emote_dropdown_changed(int p_index); void on_iniswap_dropdown_changed(int p_index); + void on_outfit_dropdown_changed(int p_index); void on_pos_dropdown_changed(int p_index); void on_evidence_name_edited(); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index a30f61f90..3be0d9d8c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -165,6 +165,8 @@ void Courtroom::enter_courtroom(int p_cid) const int l_current_cursor_pos = l_current_field->cursorPosition(); const QString l_chr_name = get_character_ini(); + const QString l_base_chr_name = get_character_base_ini(); + if (is_spectating()) { ao_app->get_discord()->clear_character_name(); @@ -184,11 +186,12 @@ void Courtroom::enter_courtroom(int p_cid) } } const bool l_changed_chr = l_chr_name != l_prev_chr_name; + if (l_changed_chr) set_character_position(ao_app->get_char_side(l_chr_name)); - select_base_character_iniswap(); - refresh_character_content_url(); + select_character_base_iniswap(); update_outfit_list(); + refresh_character_content_url(); const int l_prev_emote_count = m_emote_list.count(); m_emote_list = ao_app->get_emote_list(l_chr_name); @@ -214,6 +217,7 @@ void Courtroom::enter_courtroom(int p_cid) ui_emotes->setHidden(is_spectating()); ui_emote_dropdown->setDisabled(is_spectating()); ui_iniswap_dropdown->setDisabled(is_spectating()); + ui_outfit_dropdown->setDisabled(is_spectating()); ui_ic_chat_message->setDisabled(is_spectating()); // restore line field focus diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index 912d4197d..2edc5f379 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -36,6 +36,42 @@ QString Courtroom::get_character_ini() return ao_config->character_ini(get_character()); } +QString Courtroom::get_character_base_ini() +{ + QString l_chr_ini = get_character_ini(); + if (l_chr_ini.isEmpty()) + return ""; + if (ui_iniswap_dropdown->findText(l_chr_ini) != -1) + return l_chr_ini; + + + const QStringList l_item_list = l_chr_ini.split(QRegularExpression("[\\/]")); + QString l_chr_ini_full = ao_app->get_base_path() + "characters/" + l_chr_ini; + for (auto it = l_item_list.crbegin(); it != l_item_list.crend(); it++) + { + QString name = *it; + int l_folder_length = name.length() + 1; // Acount for "/" + l_chr_ini_full = l_chr_ini_full.chopped(l_folder_length); + l_chr_ini = l_chr_ini.chopped(l_folder_length); + if (dir_exists(l_chr_ini_full)) + return l_chr_ini; + } + return ""; +} + +QString Courtroom::get_character_outfit_ini() +{ + const QString l_chr_ini = get_character_ini(); + if (l_chr_ini.isEmpty()) + return ""; + const QString l_chr_base_ini = get_character_base_ini(); + if (l_chr_ini == l_chr_base_ini) + return ""; + + const QString l_chr_outfit_ini = l_chr_ini.mid(l_chr_base_ini.length()+1); // Account for "/" + return l_chr_outfit_ini; +} + QString Courtroom::get_character_content_url() { QFile l_contentFile(ao_app->get_character_path(get_character_ini(), "CONTENT.txt")); @@ -106,8 +142,7 @@ void Courtroom::update_iniswap_list() drSetItemIcon(ui_iniswap_dropdown, i, i_name, ao_app); } update_default_iniswap_item(); - - select_base_character_iniswap(); + select_character_base_iniswap(); } void Courtroom::update_default_iniswap_item() @@ -121,7 +156,7 @@ void Courtroom::update_outfit_list() ui_outfit_dropdown->clear(); QStringList l_name_list{"Default"}; - const QString char_ini = get_character_ini(); + const QString char_ini = get_character_base_ini(); if (!char_ini.isEmpty()) { const QString l_path_start = ao_app->get_base_path() + "characters/" + char_ini + "/"; @@ -137,11 +172,12 @@ void Courtroom::update_outfit_list() drSetItemIcon(ui_iniswap_dropdown, i, get_character() + "/" + i_name, ao_app); } drSetItemIcon(ui_iniswap_dropdown, 0, get_character(), ao_app); + select_character_outfit_iniswap(); } -void Courtroom::select_base_character_iniswap() +void Courtroom::select_character_base_iniswap() { - const QString l_current_chr = get_character_ini(); + QString l_current_chr = get_character_base_ini(); if (get_character() == l_current_chr) { ui_iniswap_dropdown->setCurrentIndex(0); @@ -150,6 +186,17 @@ void Courtroom::select_base_character_iniswap() ui_iniswap_dropdown->setCurrentText(l_current_chr); } +void Courtroom::select_character_outfit_iniswap() +{ + QString l_current_outfit = get_character_outfit_ini(); + if (l_current_outfit.isEmpty()) + { + ui_outfit_dropdown->setCurrentIndex(0); + return; + } + ui_outfit_dropdown->setCurrentText(l_current_outfit); +} + void Courtroom::refresh_character_content_url() { const QString l_new_content_url = get_character_content_url(); @@ -164,3 +211,16 @@ void Courtroom::on_iniswap_dropdown_changed(int p_index) ao_config->set_character_ini(get_character(), p_index == 0 ? get_character() : ui_iniswap_dropdown->itemText(p_index)); } + +void Courtroom::on_outfit_dropdown_changed(int p_index) +{ + QString l_character = get_character(); + QString l_chr_base_ini = get_character_base_ini(); + if (p_index == 0) + ao_config->set_character_ini(l_character, l_chr_base_ini); + else + { + QString l_character_outfit = l_chr_base_ini + "/" + ui_outfit_dropdown->itemText(p_index); + ao_config->set_character_ini(l_character, l_character_outfit); + } +} diff --git a/src/courtroom_widgets.cpp b/src/courtroom_widgets.cpp index 8550541f5..5af10a971 100644 --- a/src/courtroom_widgets.cpp +++ b/src/courtroom_widgets.cpp @@ -273,6 +273,7 @@ void Courtroom::connect_widgets() connect(ui_emote_dropdown, SIGNAL(activated(int)), this, SLOT(on_emote_dropdown_changed(int))); connect(ui_iniswap_dropdown, SIGNAL(activated(int)), this, SLOT(on_iniswap_dropdown_changed(int))); + connect(ui_outfit_dropdown, SIGNAL(activated(int)), this, SLOT(on_outfit_dropdown_changed(int))); connect(ui_pos_dropdown, SIGNAL(activated(int)), this, SLOT(on_pos_dropdown_changed(int))); connect(ao_config, SIGNAL(showname_changed(QString)), this, SLOT(on_showname_changed(QString))); From 5b206435283c7d7263cfd8885d37d6a20630126c Mon Sep 17 00:00:00 2001 From: Chrezm Date: Thu, 27 Jan 2022 20:07:38 -0500 Subject: [PATCH 6/7] Change "Default"->"" + Fix outfits not working if root char had char.ini --- src/courtroom_character.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index 2edc5f379..147a9c4e1 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -101,10 +101,9 @@ void drSetItemIcon(QComboBox *p_widget, const int p_index, const QString &p_chr_ } // namespace void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, QString l_path_end, - bool l_ignore_char_root) + bool l_is_root_dir) { - if (file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_INI) || - (!l_ignore_char_root && file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_ROOT_INI))) + if (!l_is_root_dir & file_exists(l_path_start + l_path_end + "/" + CHARACTER_CHAR_INI)) { const QString l_name = l_path_end.mid(1); if (!l_name.isEmpty()) @@ -120,7 +119,7 @@ void _traverse_characters_folder(QStringList *l_name_list, QString l_path_start, continue; if (l_folder_name == "sounds") continue; - _traverse_characters_folder(l_name_list, l_path_start, l_path_end + "/" + l_folder_name, l_ignore_char_root); + _traverse_characters_folder(l_name_list, l_path_start, l_path_end + "/" + l_folder_name, false); } } @@ -129,9 +128,9 @@ void Courtroom::update_iniswap_list() QSignalBlocker b_ini_list(ui_iniswap_dropdown); ui_iniswap_dropdown->clear(); - QStringList l_name_list{"Default"}; + QStringList l_name_list{""}; const QString l_path_start = ao_app->get_base_path() + "characters/"; - _traverse_characters_folder(&l_name_list, l_path_start, "", false); + _traverse_characters_folder(&l_name_list, l_path_start, "", true); for (int i = 0; i < l_name_list.length(); ++i) { @@ -155,7 +154,7 @@ void Courtroom::update_outfit_list() QSignalBlocker b_ini_list(ui_outfit_dropdown); ui_outfit_dropdown->clear(); - QStringList l_name_list{"Default"}; + QStringList l_name_list{""}; const QString char_ini = get_character_base_ini(); if (!char_ini.isEmpty()) { From 68c735c66d0e075cbdcff7ada7eaec6b6be6f897 Mon Sep 17 00:00:00 2001 From: Chrezm Date: Thu, 27 Jan 2022 20:29:39 -0500 Subject: [PATCH 7/7] Properly look for root character folder --- include/commondefs.h | 1 - src/commondefs.cpp | 1 - src/courtroom_character.cpp | 16 ++++++++-------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/include/commondefs.h b/include/commondefs.h index f3b0626d0..6c2f60780 100644 --- a/include/commondefs.h +++ b/include/commondefs.h @@ -7,7 +7,6 @@ extern const QString BACKGROUND_DEFAULT_NAME; extern const QString BASE_CONFIG_INI; extern const QString CHARACTER_CHAR_INI; -extern const QString CHARACTER_CHAR_ROOT_INI; extern const QString CHARACTER_SOUNDS_INI; extern const QString CONFIG_SOUNDS_INI; diff --git a/src/commondefs.cpp b/src/commondefs.cpp index 49f82b571..16b2ca463 100644 --- a/src/commondefs.cpp +++ b/src/commondefs.cpp @@ -7,7 +7,6 @@ const QString BACKGROUND_DEFAULT_NAME = "gs4"; const QString BASE_CONFIG_INI = "/base/config.ini"; const QString CHARACTER_CHAR_INI = "char.ini"; -const QString CHARACTER_CHAR_ROOT_INI = "char_root.ini"; const QString CHARACTER_SOUNDS_INI = "sounds.ini"; const QString CONFIG_SOUNDS_INI = "configs/sounds.ini"; diff --git a/src/courtroom_character.cpp b/src/courtroom_character.cpp index 147a9c4e1..22534f116 100644 --- a/src/courtroom_character.cpp +++ b/src/courtroom_character.cpp @@ -38,7 +38,7 @@ QString Courtroom::get_character_ini() QString Courtroom::get_character_base_ini() { - QString l_chr_ini = get_character_ini(); + const QString l_chr_ini = get_character_ini(); if (l_chr_ini.isEmpty()) return ""; if (ui_iniswap_dropdown->findText(l_chr_ini) != -1) @@ -46,15 +46,15 @@ QString Courtroom::get_character_base_ini() const QStringList l_item_list = l_chr_ini.split(QRegularExpression("[\\/]")); - QString l_chr_ini_full = ao_app->get_base_path() + "characters/" + l_chr_ini; - for (auto it = l_item_list.crbegin(); it != l_item_list.crend(); it++) + QString l_chr_ini_full = ao_app->get_base_path() + "characters/"; + QString l_chr_ini_short = ""; + for (auto it = l_item_list.cbegin(); it != l_item_list.cend(); it++) { QString name = *it; - int l_folder_length = name.length() + 1; // Acount for "/" - l_chr_ini_full = l_chr_ini_full.chopped(l_folder_length); - l_chr_ini = l_chr_ini.chopped(l_folder_length); - if (dir_exists(l_chr_ini_full)) - return l_chr_ini; + l_chr_ini_full += name + "/"; + l_chr_ini_short += name + "/"; + if (file_exists(l_chr_ini_full + CHARACTER_CHAR_INI)) + return l_chr_ini_short.chopped(1); } return ""; }