diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/aomusicplayer.cpp | 7 | ||||
| -rw-r--r-- | src/courtroom.cpp | 33 | ||||
| -rw-r--r-- | src/evidence.cpp | 61 |
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(); } |
