Fix get_effect_property ignoring the provided effect folder and using the char.ini instead. Makes it consistent with get_effect behavior (#828)

This commit is contained in:
Crystalwarrior 2022-07-30 15:38:37 +03:00 committed by GitHub
parent d8c89f056b
commit d9bdb7e6bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 17 deletions

View File

@ -422,12 +422,12 @@ public:
// a string
QStringList get_effects(QString p_char);
// t
// Get the correct effect image
QString get_effect(QString effect, QString p_char, QString p_folder);
// Return p_property of fx_name. If p_property is "sound", return
// the value associated with fx_name, otherwise use fx_name + '_' + p_property.
QString get_effect_property(QString fx_name, QString p_char, QString p_property);
QString get_effect_property(QString fx_name, QString p_char, QString p_folder, QString p_property);
// Returns the custom realisation used by the character.
QString get_custom_realization(QString p_char);

View File

@ -2079,18 +2079,18 @@ void Courtroom::on_chat_return_pressed()
packet_contents.append(ui_additive->isChecked() ? "1" : "0");
}
if (ao_app->effects_supported) {
QString fx_sound =
ao_app->get_effect_property(effect, current_char, "sound");
QString p_effect =
QString p_effect_folder =
ao_app->read_char_ini(current_char, "effects", "Options");
QString fx_sound =
ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound");
// Don't overlap the two sfx
if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1)) {
fx_sound = "0";
}
packet_contents.append(effect + "|" + p_effect + "|" + fx_sound);
if (!ao_app->is_stickyeffects_enabled() && !ao_app->get_effect_property(effect, current_char, "sticky").startsWith("true")) {
packet_contents.append(effect + "|" + p_effect_folder + "|" + fx_sound);
if (!ao_app->is_stickyeffects_enabled() && !ao_app->get_effect_property(effect, current_char, p_effect_folder, "sticky").startsWith("true")) {
ui_effects_dropdown->blockSignals(true);
ui_effects_dropdown->setCurrentIndex(0);
ui_effects_dropdown->blockSignals(false);
@ -2704,29 +2704,29 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char,
return;
}
ui_vp_effect->transform_mode = ao_app->get_scaling(
ao_app->get_effect_property(fx_path, p_char, "scaling"));
ao_app->get_effect_property(fx_path, p_char, p_folder, "scaling"));
ui_vp_effect->stretch =
ao_app->get_effect_property(fx_path, p_char, "stretch")
ao_app->get_effect_property(fx_path, p_char, p_folder, "stretch")
.startsWith("true");
ui_vp_effect->set_flipped(ao_app->get_effect_property(fx_path, p_char, "respect_flip").startsWith("true") && m_chatmessage[FLIP].toInt() == 1);
ui_vp_effect->set_flipped(ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_flip").startsWith("true") && m_chatmessage[FLIP].toInt() == 1);
ui_vp_effect->set_play_once(
false); // The effects themselves dictate whether or not they're looping.
// Static effects will linger.
bool looping =
ao_app->get_effect_property(fx_path, p_char, "loop")
ao_app->get_effect_property(fx_path, p_char, p_folder, "loop")
.startsWith("true");
int max_duration =
ao_app->get_effect_property(fx_path, p_char, "max_duration")
ao_app->get_effect_property(fx_path, p_char, p_folder, "max_duration")
.toInt();
bool cull =
ao_app->get_effect_property(fx_path, p_char, "cull")
ao_app->get_effect_property(fx_path, p_char, p_folder, "cull")
.startsWith("true");
// Possible values: "chat", "character", "behind"
QString layer = ao_app->get_effect_property(fx_path, p_char, "layer").toLower();
QString layer = ao_app->get_effect_property(fx_path, p_char, p_folder, "layer").toLower();
if (layer == "behind"){
ui_vp_effect->setParent(ui_viewport);
ui_vp_effect->stackUnder(ui_vp_player_char);
@ -2753,7 +2753,7 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char,
effect_y = ui_viewport->y();
}
// This effect respects the character offset settings
if (ao_app->get_effect_property(fx_path, p_char, "respect_offset") == "true") {
if (ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_offset") == "true") {
QStringList self_offsets = m_chatmessage[SELF_OFFSET].split("&");
int self_offset = self_offsets[0].toInt();
int self_offset_v;

View File

@ -968,10 +968,13 @@ QString AOApplication::get_effect(QString effect, QString p_char,
}
QString AOApplication::get_effect_property(QString fx_name, QString p_char,
QString p_property)
QString p_folder, QString p_property)
{
if (p_folder == "")
p_folder = read_char_ini(p_char, "effects", "Options");
const auto paths = get_asset_paths("effects/effects.ini", current_theme, get_subtheme(), default_theme, "");
const auto misc_paths = get_asset_paths("effects.ini", current_theme, get_subtheme(), default_theme, read_char_ini(p_char, "effects", "Options"));
const auto misc_paths = get_asset_paths("effects.ini", current_theme, get_subtheme(), default_theme, p_folder);
QString path;
QString f_result;
for (const VPath &p : paths + misc_paths) {