aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/aomusicplayer.cpp7
-rw-r--r--src/courtroom.cpp33
-rw-r--r--src/evidence.cpp61
3 files changed, 42 insertions, 59 deletions
diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp
index 16d6df7a..5d9df792 100644
--- a/src/aomusicplayer.cpp
+++ b/src/aomusicplayer.cpp
@@ -20,8 +20,6 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop,
channel = channel % m_channelmax;
if (channel < 0) // wtf?
return "[ERROR] Invalid Channel";
- QString f_path = ao_app->get_real_path(ao_app->get_music_path(p_song));
-
unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE |
BASS_UNICODE | BASS_ASYNCFILE;
unsigned int streaming_flags = BASS_STREAM_AUTOFREE;
@@ -29,7 +27,7 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop,
flags |= BASS_SAMPLE_LOOP;
streaming_flags |= BASS_SAMPLE_LOOP;
}
-
+ QString f_path = p_song;
DWORD newstream;
if (f_path.startsWith("http")) {
if (f_path.endsWith(".opus"))
@@ -38,6 +36,7 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop,
newstream = BASS_StreamCreateURL(f_path.toStdString().c_str(), 0, streaming_flags, nullptr, 0);
} else {
+ f_path = ao_app->get_real_path(ao_app->get_music_path(p_song));
if (f_path.endsWith(".opus"))
newstream = BASS_OPUS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
else
@@ -46,7 +45,7 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop,
int error_code = BASS_ErrorGetCode();
- if (invoking_future.isCanceled() && channel == 0) {
+ if (invoking_future.isCanceled()) {
// Target future has changed. This stream has become irrelevant.
// So even if the stream manages to finish after the latest one, we don't run
// into order issues.
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 8596ee79..696de02a 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -657,6 +657,10 @@ void Courtroom::set_widgets()
// them.
ui_settings->show();
+ // make the BG's reload
+ ui_vp_background->kill();
+ ui_vp_desk->kill();
+
ui_vp_background->move_and_center(0, 0);
ui_vp_background->combo_resize(ui_viewport->width(), ui_viewport->height());
@@ -2404,7 +2408,7 @@ void Courtroom::display_character()
else
ui_vp_player_char->set_flipped(false);
// Move the character on the viewport according to the offsets
- set_self_offset(m_chatmessage[SELF_OFFSET]);
+ set_self_offset(m_chatmessage[SELF_OFFSET], m_chatmessage[EFFECTS]);
}
void Courtroom::display_pair_character(QString other_charid, QString other_offset)
@@ -3321,7 +3325,7 @@ void Courtroom::start_chat_ticking()
// handle expanded desk mods
switch(m_chatmessage[DESK_MOD].toInt()) {
case 4:
- set_self_offset(m_chatmessage[SELF_OFFSET]);
+ set_self_offset(m_chatmessage[SELF_OFFSET], QString("||"));
[[fallthrough]];
case 2:
set_scene("1", m_chatmessage[SIDE]);
@@ -3749,6 +3753,11 @@ void Courtroom::set_scene(QString f_desk_mod, QString f_side)
f_background = f_side;
f_desk_image = f_side + "_overlay";
}
+
+ QString desk_override = ao_app->read_design_ini("overlays/" + f_background, ao_app->get_background_path("design.ini"));
+ if (desk_override != "")
+ f_desk_image = desk_override;
+
ui_vp_background->load_image(f_background);
ui_vp_desk->load_image(f_desk_image);
@@ -3762,8 +3771,9 @@ void Courtroom::set_scene(QString f_desk_mod, QString f_side)
}
}
-void Courtroom::set_self_offset(QString p_list) {
+void Courtroom::set_self_offset(QString p_list, QString p_effect) {
QStringList self_offsets = p_list.split("&");
+ QStringList play_effect = p_effect.split("|");
int self_offset = self_offsets[0].toInt();
int self_offset_v;
if (self_offsets.length() <= 1)
@@ -3771,6 +3781,18 @@ void Courtroom::set_self_offset(QString p_list) {
else
self_offset_v = self_offsets[1].toInt();
ui_vp_player_char->move(ui_viewport->width() * self_offset / 100, ui_viewport->height() * self_offset_v / 100);
+
+ //If an effect is ignoring the users offset, we force it to the default position of the viewport.
+ if (ao_app->get_effect_property(play_effect[0], current_char, "ignore_offset") == "true") {
+ ui_vp_effect->move(ui_viewport->x(), ui_viewport->y());
+ return;
+ }
+
+ //Offset is not disabled, we move the effects layer to match the position of our character
+ //We need to add the viewport as an offset as effects are not bound to it.
+ int effect_x = (ui_viewport->width() * self_offset / 100) + ui_viewport->x();
+ int effect_y = (ui_viewport->height() * self_offset_v / 100) + ui_viewport->y();
+ ui_vp_effect->move(effect_x, effect_y);
}
void Courtroom::set_ip_list(QString p_list)
@@ -3873,17 +3895,16 @@ void Courtroom::handle_song(QStringList *p_contents)
}
}
- QFuture<QString> future = QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel,
- looping, effect_flags);
if (channel == 0) {
// Current song UI only displays the song playing, not other channels.
// Any other music playing is irrelevant.
if (music_player->music_watcher.isRunning()) {
music_player->music_watcher.cancel();
}
- music_player->music_watcher.setFuture(future);
ui_music_name->setText(tr("[LOADING] %1").arg(f_song_clear));
}
+ music_player->music_watcher.setFuture(QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel,
+ looping, effect_flags));
}
void Courtroom::update_ui_music_name()
diff --git a/src/evidence.cpp b/src/evidence.cpp
index fc305d23..084a79ce 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -50,7 +50,6 @@ void Courtroom::initialize_evidence()
ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app);
ui_evidence_image_button->setText(tr("Choose.."));
ui_evidence_image_button->setObjectName("ui_evidence_image_button");
- ui_evidence_image_button->setDisabled(true);
ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app);
ui_evidence_x->setToolTip(
tr("Close the evidence display/editing overlay.\n"
@@ -64,13 +63,9 @@ void Courtroom::initialize_evidence()
ui_evidence_description = new QPlainTextEdit(ui_evidence_overlay);
ui_evidence_description->setFrameStyle(QFrame::NoFrame);
ui_evidence_description->setToolTip(
- tr("Click the pencil icon to edit. Press [X] to update your changes."));
+ tr("Click to edit. Press [X] to update your changes."));
ui_evidence_description->setObjectName("ui_evidence_description");
- ui_evidence_edit = new AOButton(ui_evidence_overlay, ao_app);
- ui_evidence_edit->setToolTip(tr("Edit this piece of evidence."));
- ui_evidence_edit->setObjectName("ui_evidence_edit");
-
connect(ui_evidence_name, &QLineEdit::returnPressed, this,
&Courtroom::on_evidence_name_edited);
connect(ui_evidence_left, &AOButton::clicked, this,
@@ -102,10 +97,9 @@ void Courtroom::initialize_evidence()
connect(ui_evidence_name, &QLineEdit::textChanged, this,
&Courtroom::on_evidence_edited);
connect(ui_evidence_image_name, &QLineEdit::textChanged, this,
- &Courtroom::on_evidence_image_name_edited);
+ &Courtroom::on_evidence_edited);
connect(ui_evidence_description, &QPlainTextEdit::textChanged, this,
&Courtroom::on_evidence_edited);
- connect(ui_evidence_edit, &AOButton::clicked, this, &Courtroom::on_evidence_edit_clicked);
ui_evidence->hide();
}
@@ -162,9 +156,6 @@ void Courtroom::refresh_evidence()
set_size_and_pos(ui_evidence_ok, "evidence_ok");
ui_evidence_ok->set_image("evidence_ok");
- set_size_and_pos(ui_evidence_edit, "evidence_edit");
- ui_evidence_edit->set_image("evidence_edit");
-
set_size_and_pos(ui_evidence_switch, "evidence_switch");
if (current_evidence_global) {
ui_evidence_switch->set_image("evidence_global");
@@ -272,8 +263,7 @@ void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
evidence_close();
ui_evidence_name->setText("");
}
- else if (ui_evidence_description->isReadOnly()) // We haven't double clicked
- // to edit it or anything
+ else if (ui_evidence_ok->isHidden()) // We haven't clicked to edit it or anything
{
on_evidence_double_clicked(current_evidence);
}
@@ -302,6 +292,7 @@ void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
switch (ret) {
case QMessageBox::Yes:
// "Keep changes"
+ ui_evidence_ok->hide();
break;
case QMessageBox::No:
// "Discard changes and keep theirs"
@@ -387,7 +378,6 @@ void Courtroom::on_evidence_name_edited()
void Courtroom::on_evidence_image_name_edited()
{
- ui_evidence_image_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
}
@@ -417,8 +407,6 @@ void Courtroom::on_evidence_image_button_clicked()
void Courtroom::on_evidence_clicked(int p_id)
{
- ui_evidence_name->setReadOnly(true);
-
int f_real_id = p_id + max_evidence_on_page * current_evidence_page;
if (f_real_id == local_evidence_list.size()) {
@@ -465,15 +453,16 @@ void Courtroom::on_evidence_double_clicked(int p_id)
ui_evidence_description->clear();
ui_evidence_description->appendPlainText(f_evi.description);
- ui_evidence_description->setReadOnly(true);
- ui_evidence_description->setToolTip(tr("Click the pencil to edit..."));
+ ui_evidence_description->setReadOnly(false);
+ ui_evidence_description->setToolTip(tr("Click to edit..."));
ui_evidence_name->setText(f_evi.name);
- ui_evidence_name->setReadOnly(true);
- ui_evidence_name->setToolTip(tr("Click the pencil to edit..."));
+ ui_evidence_name->setReadOnly(false);
+ ui_evidence_name->setToolTip(tr("Click to edit..."));
+
ui_evidence_image_name->setText(f_evi.image);
- ui_evidence_image_name->setReadOnly(true);
- ui_evidence_image_name->setToolTip(tr("Click the pencil to edit..."));
+ ui_evidence_image_name->setReadOnly(false);
+ ui_evidence_image_name->setToolTip(tr("Click to edit..."));
ui_evidence_overlay->show();
ui_evidence_ok->hide();
@@ -483,7 +472,6 @@ void Courtroom::on_evidence_double_clicked(int p_id)
void Courtroom::on_evidence_hover(int p_id, bool p_state)
{
- ui_evidence_name->setReadOnly(true);
int final_id = p_id + max_evidence_on_page * current_evidence_page;
if (p_state) {
@@ -592,11 +580,7 @@ void Courtroom::on_evidence_x_clicked()
void Courtroom::on_evidence_ok_clicked()
{
- ui_evidence_name->setReadOnly(true);
- ui_evidence_description->setReadOnly(true);
- ui_evidence_image_name->setReadOnly(true);
- ui_evidence_edit->show();
- ui_evidence_image_button->setDisabled(true);
+ ui_evidence_ok->hide();
if (current_evidence < local_evidence_list.size()) {
evi_type f_evi = local_evidence_list.at(current_evidence);
if (current_evidence_global) {
@@ -679,22 +663,6 @@ void Courtroom::on_evidence_transfer_clicked()
msgBox->exec();
}
-void Courtroom::on_evidence_edit_clicked()
-{
- if (!ui_evidence_overlay->isVisible())
- return;
- if (!ui_evidence_edit->isHidden()) {
- ui_evidence_name->setReadOnly(false);
- ui_evidence_image_name->setReadOnly(false);
- ui_evidence_description->setReadOnly(false);
- ui_evidence_image_button->setDisabled(false);
- ui_evidence_edit->hide();
- }
- else {
- return;
- }
-}
-
void Courtroom::on_evidence_edited()
{
if (current_evidence >=
@@ -714,13 +682,8 @@ void Courtroom::on_evidence_edited()
void Courtroom::evidence_close()
{
ui_evidence_description->setReadOnly(true);
- ui_evidence_description->setToolTip("");
ui_evidence_name->setReadOnly(true);
- ui_evidence_name->setToolTip("");
ui_evidence_image_name->setReadOnly(true);
- ui_evidence_image_name->setToolTip("");
- ui_evidence_edit->show();
- ui_evidence_image_button->setDisabled(true);
ui_evidence_overlay->hide();
ui_ic_chat_message->setFocus();
}