diff --git a/Attorney_Online_remake.pro b/Attorney_Online_remake.pro index c784578..a34f049 100644 --- a/Attorney_Online_remake.pro +++ b/Attorney_Online_remake.pro @@ -8,6 +8,8 @@ QT += core gui multimedia network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +RC_ICONS = logo.ico + TARGET = Attorney_Online_remake TEMPLATE = app diff --git a/base/themes/default/lobby_design.ini b/base/themes/default/lobby_design.ini index efce59a..4806b86 100644 --- a/base/themes/default/lobby_design.ini +++ b/base/themes/default/lobby_design.ini @@ -1,5 +1,5 @@ lobby = 0, 0, 517, 666 -public_servers = 46, 88, 114, 30 +publi_servers = 46, 88, 114, 30 favorites = 164, 88, 114, 30 refresh = 56, 381, 132, 28 add_to_fav = 194, 381, 132, 28 diff --git a/courtroom.cpp b/courtroom.cpp index f408b14..71ff16b 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -177,7 +177,8 @@ void Courtroom::set_widgets() //viewport elements like background, desk, etc. go here set_size_and_pos(ui_ic_chatlog, "ic_chatlog"); - ui_ic_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); + ui_ic_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);" + "color: white;"); set_size_and_pos(ui_ms_chatlog, "ms_chatlog"); ui_ms_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); @@ -319,6 +320,11 @@ void Courtroom::set_widgets() } +void Courtroom::set_window_title(QString p_title) +{ + this->setWindowTitle(p_title); +} + void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier) { QString design_ini_path = ao_app->get_theme_path() + "courtroom_design.ini"; @@ -396,9 +402,14 @@ void Courtroom::set_char_select_page() for (int n_button = 0 ; n_button < chars_on_page ; ++n_button) { int n_real_char = n_button + current_char_page * 90; + AOCharButton *f_button = ui_char_button_list.at(n_button); - ui_char_button_list.at(n_button)->set_image(char_list.at(n_real_char).name); - ui_char_button_list.at(n_button)->show(); + f_button->reset(); + f_button->set_image(char_list.at(n_real_char).name); + f_button->show(); + + if (char_list.at(n_real_char).taken) + f_button->set_taken(); } } @@ -444,6 +455,16 @@ void Courtroom::append_server_chatmessage(QString f_message) ui_server_chatlog->appendPlainText(f_message); } +void Courtroom::handle_chatmessage(QStringList *p_contents) +{ + QString f_message = p_contents->at(2) + ": " + p_contents->at(4) + '\n'; + + ui_ic_chatlog->moveCursor(QTextCursor::Start); + ui_ic_chatlog->insertPlainText(f_message); + + //T0D0: play objection gif->preanimation if there is any +} + void Courtroom::on_ooc_return_pressed() { if (ui_ooc_chat_message->text() == "" || ui_ooc_chat_name->text() == "") diff --git a/courtroom.h b/courtroom.h index 9f25387..822fbff 100644 --- a/courtroom.h +++ b/courtroom.h @@ -31,6 +31,7 @@ public: void append_music(QString f_music){music_list.append(f_music);} void set_widgets(); + void set_window_title(QString p_title); void set_size_and_pos(QWidget *p_widget, QString p_identifier); void set_taken(int n_char, bool p_taken); void set_char_select_page(); @@ -40,6 +41,8 @@ public: void append_ms_chatmessage(QString f_message); void append_server_chatmessage(QString f_message); + void handle_chatmessage(QStringList *p_contents); + ~Courtroom(); private: diff --git a/debug_functions.cpp b/debug_functions.cpp index a77e4ea..7206885 100644 --- a/debug_functions.cpp +++ b/debug_functions.cpp @@ -10,6 +10,6 @@ void call_error(QString p_message) msgBox->setWindowTitle("Error"); - msgBox->setWindowModality(Qt::NonModal); + //msgBox->setWindowModality(Qt::NonModal); msgBox->show(); } diff --git a/lobby.cpp b/lobby.cpp index 8bc67bd..836c5ac 100644 --- a/lobby.cpp +++ b/lobby.cpp @@ -133,10 +133,7 @@ void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier) if (design_ini_result.width < 0 || design_ini_result.height < 0) { - //at this point it's pretty much game over - //T0D0: add message box - qDebug() << "CRITICAL ERROR: NO SUITABLE DATA FOR SETTING " << p_identifier; - ao_app->quit(); + call_error(" could not find \"" + p_identifier + "\" in lobby_design.ini"); } } @@ -158,6 +155,11 @@ QString Lobby::get_chatlog() return return_value; } +int Lobby::get_selected_server() +{ + return ui_server_list->currentRow(); +} + void Lobby::on_public_servers_clicked() { ui_public_servers->set_image("publicservers_selected.png"); @@ -283,6 +285,10 @@ void Lobby::on_chatfield_return_pressed() void Lobby::list_servers() { + public_servers_selected = true; + ui_favorites->set_image("favorites.png"); + ui_public_servers->set_image("publicservers_selected.png"); + ui_server_list->clear(); for (server_type i_server : ao_app->get_server_list()) diff --git a/lobby.h b/lobby.h index ebdc05b..843ad70 100644 --- a/lobby.h +++ b/lobby.h @@ -30,6 +30,9 @@ public: void show_loading_overlay(){ui_loading_background->show();} void hide_loading_overlay(){ui_loading_background->hide();} QString get_chatlog(); + int get_selected_server(); + + bool public_servers_selected = true; ~Lobby(); @@ -39,8 +42,6 @@ private: const int m_lobby_width = 517; const int m_lobby_height = 666; - bool public_servers_selected = true; - AOImage *ui_background; AOButton *ui_public_servers; diff --git a/logo.ico b/logo.ico new file mode 100644 index 0000000..b40e786 Binary files /dev/null and b/logo.ico differ diff --git a/main.cpp b/main.cpp index 2116b52..130e1be 100644 --- a/main.cpp +++ b/main.cpp @@ -1,4 +1,3 @@ -#include #include "aoapplication.h" @@ -7,8 +6,11 @@ #include "lobby.h" #include "courtroom.h" +#include + int main(int argc, char *argv[]) { + AOApplication::setAttribute(Qt::AA_EnableHighDpiScaling); AOApplication main_app(argc, argv); main_app.construct_lobby(); @@ -17,5 +19,6 @@ int main(int argc, char *argv[]) main_app.send_ms_packet(f_packet); main_app.w_lobby->show(); + return main_app.exec(); } diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 163c744..6d24278 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -115,7 +115,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QString message_line = f_contents.at(0) + ": " + f_contents.at(1); - w_courtroom->append_server_chatmessage(message_line); + if (courtroom_constructed) + w_courtroom->append_server_chatmessage(message_line); } else if (header == "PN") { @@ -137,9 +138,25 @@ void AOApplication::server_packet_received(AOPacket *p_packet) loaded_music = 0; destruct_courtroom(); - construct_courtroom(); + QString window_title = "Attorney Online 2"; + int selected_server = w_lobby->get_selected_server(); + + + if (w_lobby->public_servers_selected) + { + if (selected_server >= 0 && selected_server < server_list.size()) + window_title += ": " + server_list.at(selected_server).name; + } + else + { + if (selected_server >= 0 && selected_server < favorite_list.size()) + window_title += ": " + favorite_list.at(selected_server).name; + } + + w_courtroom->set_window_title(window_title); + w_lobby->show_loading_overlay(); w_lobby->set_loading_text("Loading"); @@ -177,19 +194,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_char(f_char); } - if (loaded_chars < char_list_size) - { - QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); - send_server_packet(new AOPacket("AN#" + next_packet_number + "#%")); - } + QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); + send_server_packet(new AOPacket("AN#" + next_packet_number + "#%")); - else - { - if (evidence_list_size == 0) - send_server_packet(new AOPacket("AM#0#%")); - else - send_server_packet(new AOPacket("AE#0#%")); - } } else if (header == "EI"){ if (!courtroom_constructed) @@ -220,16 +227,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_evidence(f_evi); - if (loaded_evidence < evidence_list_size) - { - qDebug() << "loaded evidence: " << loaded_evidence; - QString next_packet_number = QString::number(loaded_evidence); - send_server_packet(new AOPacket("AE#" + next_packet_number + "#%")); - } - else - { - send_server_packet(new AOPacket("AM#0#%")); - } + QString next_packet_number = QString::number(loaded_evidence); + send_server_packet(new AOPacket("AE#" + next_packet_number + "#%")); + } else if (header == "EM") { @@ -253,16 +253,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_music(f_music); } - //apparently we need to intentionally send another AM packet to get onwards in the loading process - //in spite of the fact that we actually received all the music - //enjoy fanta - //if (loaded_music < music_list_size) - //{ - QString next_packet_number = QString::number(((loaded_music - 1) / 10) + 1); - send_server_packet(new AOPacket("AM#" + next_packet_number + "#%")); - //} + QString next_packet_number = QString::number(((loaded_music - 1) / 10) + 1); + send_server_packet(new AOPacket("AM#" + next_packet_number + "#%")); } - if (header == "CharsCheck") + else if (header == "CharsCheck") { for (int n_char = 0 ; n_char < f_contents.size() ; ++n_char) { @@ -272,7 +266,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_taken(n_char, false); } } - if (header == "DONE") + else if (header == "DONE") { if (!courtroom_constructed) return; @@ -286,13 +280,20 @@ void AOApplication::server_packet_received(AOPacket *p_packet) destruct_lobby(); } //server accepting char request(CC) packet - if (header == "PV") + else if (header == "PV") { if (f_contents.size() < 3) return; w_courtroom->enter_courtroom(f_contents.at(2).toInt()); } + else if (header == "MS") + { + if (courtroom_constructed) + w_courtroom->handle_chatmessage(&p_packet->get_contents()); + } + + delete p_packet; } void AOApplication::send_ms_packet(AOPacket *p_packet) diff --git a/path_functions.cpp b/path_functions.cpp index 5b9e92e..0093e4d 100644 --- a/path_functions.cpp +++ b/path_functions.cpp @@ -4,7 +4,13 @@ #include QString AOApplication::get_base_path(){ + +#ifdef OMNI_DEBUG + return "/media/omnitroid/Data/winshare/AO/client/base/"; +#else return (QDir::currentPath() + "/base/"); +#endif + } QString AOApplication::get_theme_path()