Allow effects to decide whether they go over or under the chatbox (#424)

Also re-adds pair ordering following viewport refactor.
This commit is contained in:
in1tiate 2021-01-22 22:43:01 -06:00 committed by GitHub
parent 56750c343b
commit c13e6b7ab0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View File

@ -613,9 +613,9 @@ private:
QLabel *ui_vp_showname;
InterfaceLayer *ui_vp_chat_arrow;
QTextEdit *ui_vp_message;
EffectLayer *ui_vp_effect;
InterfaceLayer *ui_vp_testimony;
InterjectionLayer *ui_vp_wtce;
EffectLayer *ui_vp_effect;
InterjectionLayer *ui_vp_objection;
QTextEdit *ui_ic_chatlog;

View File

@ -2323,7 +2323,25 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse
// Move pair character according to the offsets
ui_vp_sideplayer_char->move(ui_viewport->width() * offset_x / 100,
ui_viewport->height() * offset_y / 100);
// Split the charid according to the ^ to determine if we have "ordering" info
QStringList args = other_charid.split("^");
if (args.size() >
1) // This ugly workaround is so we don't make an extra packet just
// for this purpose. Rewrite pairing when?
{
// Change the order of appearance based on the pair order variable
int order = args.at(1).toInt();
switch (order) {
case 0: // Our character is in front
ui_vp_sideplayer_char->stackUnder(ui_vp_player_char);
break;
case 1: // Our character is behind
ui_vp_player_char->stackUnder(ui_vp_sideplayer_char);
break;
default:
break;
}
}
// Flip the pair character
if (ao_app->flipping_enabled && m_chatmessage[OTHER_FLIP].toInt() == 1)
ui_vp_sideplayer_char->set_flipped(true);
@ -2469,6 +2487,7 @@ void Courtroom::do_flash()
ui_vp_effect->stretch = true;
ui_vp_effect->set_static_duration(60);
ui_vp_effect->set_max_duration(60);
ui_vp_player_char->stackUnder(ui_vp_objection); // go above the chatbox
ui_vp_effect->load_image(
ao_app->get_effect("realization", f_char, f_custom_theme), false);
}
@ -2492,6 +2511,11 @@ void Courtroom::do_effect(QString fx_name, QString fx_sound, QString p_char,
ui_vp_effect->stretch =
ao_app->get_effect_property(fx_name, p_char, "stretch")
.startsWith("true");
bool under_chatbox = ao_app->get_effect_property(fx_name, p_char, "under_chatbox").startsWith("true");
if (under_chatbox)
ui_vp_effect->stackUnder(ui_vp_chatbox);
else
ui_vp_effect->stackUnder(ui_vp_objection);
ui_vp_effect->set_play_once(
false); // The effects themselves dictate whether or not they're looping.
// Static effects will linger.
@ -3173,7 +3197,6 @@ void Courtroom::start_chat_ticking()
fx_folder = fx_list[1];
fx_sound = fx_list[2];
}
this->do_effect(fx, fx_sound, m_chatmessage[CHAR_NAME], fx_folder);
}
else if (m_chatmessage[REALIZATION] == "1") {