diff options
| author | Crystalwarrior <Varsash@Gmail.com> | 2022-03-13 18:29:42 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-13 18:29:42 +0300 |
| commit | fa6eef8eba7b085526b6f0f3f6349531ec0727f4 (patch) | |
| tree | d703de75226920a0d5b59174b64e0816aaeeea85 /src/packet_distribution.cpp | |
| parent | 5657ac74ae64e32903e295858292c0100ef6b045 (diff) | |
Allow character select list to refresh even if client is already loaded in (#655)
* Allow "SC" packet to be used to refresh the character list even if the client is loaded in
Fix tree list of characters not being cleared properly between "SC" packets
Fix client theme breaking when joining a server with empty character select list
* Do my review suggestions on CW's behalf
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Diffstat (limited to 'src/packet_distribution.cpp')
| -rw-r--r-- | src/packet_distribution.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 0ddadd8c..0fe25dc5 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -240,9 +240,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "SC") { - if (!courtroom_constructed || courtroom_loaded) + if (!courtroom_constructed) goto end; - + w_courtroom->clear_chars(); for (int n_element = 0; n_element < f_contents.size(); ++n_element) { QStringList sub_elements = f_contents.at(n_element).split("&"); @@ -256,24 +256,28 @@ void AOApplication::server_packet_received(AOPacket *p_packet) // temporary. the CharsCheck packet sets this properly f_char.taken = false; - ++loaded_chars; - - w_lobby->set_loading_text(tr("Loading chars:\n%1/%2") - .arg(QString::number(loaded_chars)) - .arg(QString::number(char_list_size))); - w_courtroom->append_char(f_char); - int total_loading_size = - char_list_size * 2 + evidence_list_size + music_list_size; - int loading_value = int( - ((loaded_chars + generated_chars + loaded_music + loaded_evidence) / - static_cast<double>(total_loading_size)) * - 100); - w_lobby->set_loading_value(loading_value); + if (!courtroom_loaded) { + ++loaded_chars; + w_lobby->set_loading_text(tr("Loading chars:\n%1/%2") + .arg(QString::number(loaded_chars)) + .arg(QString::number(char_list_size))); + + int total_loading_size = + char_list_size * 2 + evidence_list_size + music_list_size; + int loading_value = int( + ((loaded_chars + generated_chars + loaded_music + loaded_evidence) / + static_cast<double>(total_loading_size)) * + 100); + w_lobby->set_loading_value(loading_value); + } } - send_server_packet(new AOPacket("RM#%")); + if (!courtroom_loaded) + send_server_packet(new AOPacket("RM#%")); + else + w_courtroom->character_loading_finished(); append_to_demofile(f_packet_encoded); } else if (header == "SM") { |
