aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalanto <support@salanto.de>2021-05-05 00:24:57 +0200
committerSalanto <support@salanto.de>2021-05-05 00:24:57 +0200
commit004bf12428eee35998d5246972ac77504a244696 (patch)
tree9a80c245a2c67b10ad1d63fdbd80804a8f5a28d9
parent8a9bb6dc6923a3a9a77bb8a0f397edeac8407a8a (diff)
parent2a1905d009aafaf571b9c2cd50fdc3326194def3 (diff)
Merge remote-tracking branch 'origin/handle-music-refactor' into asset-packet-musiclist
-rw-r--r--src/courtroom.cpp108
1 files changed, 42 insertions, 66 deletions
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 094695af..82b98e34 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -3789,6 +3789,11 @@ void Courtroom::handle_song(QStringList *p_contents)
if (f_contents.size() < 2)
return;
+ bool ok; // Used for charID, channel, effect check
+ bool looping = false; // No loop due to outdated server using serverside looping
+ int channel = 0; // Channel 0 is 'master music', other for ambient
+ int effect_flags = 0; // No effects by default - vanilla functionality
+
QString f_song = f_contents.at(0);
QString f_song_clear = f_song.left(f_song.lastIndexOf("."));
if (f_song.startsWith("http")) {
@@ -3796,69 +3801,38 @@ void Courtroom::handle_song(QStringList *p_contents)
QString f_song_decoded = QUrl::fromPercentEncoding(f_song_bytearray);
f_song_clear = f_song_decoded.left(f_song_decoded.lastIndexOf("."));
}
- f_song_clear = f_song_clear.right(f_song_clear.length() -
- (f_song_clear.lastIndexOf("/") + 1));
- int n_char = f_contents.at(1).toInt();
-
- // Assume the song doesn't loop unless told otherwise (due to most outdated
- // servers handling looping through serverside)
- bool looping = false;
- // Channel 0 is the 'master music', other channels would commonly be used for
- // ambience
- int channel = 0;
- // No effects assumed by default - vanilla functionality
- int effect_flags = 0;
-
- if (n_char < 0 || n_char >= char_list.size()) {
- int channel = 0;
- if (p_contents->length() > 3 && p_contents->at(3) == "1")
- looping = true;
-
- if (p_contents->length() >
- 4) // eyyy we want to change this song's CHANNEL huh
- channel = p_contents->at(4).toInt(); // let the music player handle it if
- // it's bigger than the channel list
-
- if (p_contents->length() > 5) // Flags provided to us by server such as Fade
- // In, Fade Out, Sync Pos etc.
- {
- effect_flags = p_contents->at(5).toInt();
- }
- music_player->play(f_song, channel, looping, effect_flags);
- if (f_song == "~stop.mp3")
- ui_music_name->setText(tr("None"));
- else if (channel == 0) {
- if (file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http"))
- ui_music_name->setText(f_song_clear);
- else if (f_song.startsWith("http"))
- ui_music_name->setText(tr("[STREAM] %1").arg(f_song_clear));
- else
- ui_music_name->setText(tr("[MISSING] %1").arg(f_song_clear));
- }
+ f_song_clear = f_song_clear.right(f_song_clear.length() - (f_song_clear.lastIndexOf("/") + 1));
+
+ int n_char = f_contents.at(1).toInt(&ok);
+ if (!ok)
+ return;
+
+ if (p_contents->length() > 3 && p_contents->at(3) == "1")
+ looping = true;
+
+ if (p_contents->length() > 4) {
+ // eyyy we want to change this song's CHANNEL huh
+ // let the music player handle it if it's bigger than the channel list
+ channel = p_contents->at(4).toInt(&ok);
+ if (!ok)
+ return;
}
- else {
+ if (p_contents->length() > 5) {
+ // Flags provided to us by server such as Fade In, Fade Out, Sync Pos etc.
+ effect_flags = p_contents->at(5).toInt(&ok);
+ if (!ok)
+ return;
+ }
+
+ bool is_stop = (f_song == "~stop.mp3");
+ if (n_char >= 0 && n_char < char_list.size()) {
QString str_char = char_list.at(n_char).name;
QString str_show = ao_app->get_showname(str_char);
-
if (p_contents->length() > 2) {
if (p_contents->at(2) != "") {
str_show = p_contents->at(2);
}
}
- if (p_contents->length() > 3 && p_contents->at(3) == "1") {
- looping = true;
- }
- if (p_contents->length() >
- 4) // eyyy we want to change this song's CHANNEL huh
- channel = p_contents->at(4).toInt(); // let the music player handle it if
- // it's bigger than the channel list
-
- if (p_contents->length() > 5) // Flags provided to us by server such as Fade
- // In, Fade Out, Sync Pos etc.
- {
- effect_flags = p_contents->at(5).toInt();
- }
- bool is_stop = f_song == "~stop.mp3";
if (!mute_map.value(n_char)) {
if (is_stop) {
log_ic_text(str_char, str_show, "", tr("has stopped the music"));
@@ -3868,19 +3842,21 @@ void Courtroom::handle_song(QStringList *p_contents)
log_ic_text(str_char, str_show, f_song, tr("has played a song"));
append_ic_text(f_song_clear, str_show, tr("has played a song"));
}
- music_player->play(f_song, channel, looping, effect_flags);
- if (is_stop)
- ui_music_name->setText(tr("None"));
- else if (channel == 0) {
- if (file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http"))
- ui_music_name->setText(f_song_clear);
- else if (f_song.startsWith("http"))
- ui_music_name->setText(tr("[STREAM] %1").arg(f_song_clear));
- else
- ui_music_name->setText(tr("[MISSING] %1").arg(f_song_clear));
- }
}
}
+
+ music_player->play(f_song, channel, looping, effect_flags);
+ if (is_stop) {
+ ui_music_name->setText(tr("None"));
+ }
+ else if (channel == 0) {
+ if (file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http"))
+ ui_music_name->setText(f_song_clear);
+ else if (f_song.startsWith("http"))
+ ui_music_name->setText(tr("[STREAM] %1").arg(f_song_clear));
+ else
+ ui_music_name->setText(tr("[MISSING] %1").arg(f_song_clear));
+ }
}
void Courtroom::handle_wtce(QString p_wtce, int variant)