diff --git a/Attorney_Online_remake.pro b/Attorney_Online_remake.pro index 5ef1d8f..79d2029 100644 --- a/Attorney_Online_remake.pro +++ b/Attorney_Online_remake.pro @@ -67,3 +67,4 @@ HEADERS += lobby.h \ aoblipplayer.h unix:LIBS += -L/home/omnitroid/Project/Attorney_Online_2/src -lbass +win32:LIBS += "$$PWD/bass.dll" diff --git a/aoapplication.h b/aoapplication.h index 4669184..71ed819 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -37,7 +37,7 @@ public: void server_packet_received(AOPacket *p_packet); void send_ms_packet(AOPacket *p_packet); - void send_server_packet(AOPacket *p_packet); + void send_server_packet(AOPacket *p_packet, bool encoded = true); /////////////////server metadata////////////////// diff --git a/courtroom.cpp b/courtroom.cpp index 300e3e8..a322dec 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -208,6 +208,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() //emote signals are set in emotes.cpp + connect(ui_mute_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_mute_list_clicked(QModelIndex))); + connect(ui_ic_chat_message, SIGNAL(returnPressed()), this, SLOT(on_chat_return_pressed())); connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed())); @@ -263,6 +265,24 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() connect(ui_emote_right, SIGNAL(clicked()), this, SLOT(on_emote_right_clicked())); } +void Courtroom::set_mute_list() +{ + mute_map.clear(); + + QStringList sorted_mute_list; + + for (char_type i_char : char_list) + sorted_mute_list.append(i_char.name); + + sorted_mute_list.sort(); + + for (QString i_name : sorted_mute_list) + { + mute_map.insert(i_name, false); + ui_mute_list->addItem(i_name); + } +} + void Courtroom::set_widgets() { QString design_ini_path = ao_app->get_theme_path() + "courtroom_design.ini"; @@ -827,6 +847,9 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) m_chatmessage[n_string] = p_contents->at(n_string); } + if (mute_map.value(m_chatmessage[CHAR_NAME])) + return; + QString f_showname = ao_app->get_showname(m_chatmessage[CHAR_NAME]); QString f_message = f_showname + ": " + m_chatmessage[MESSAGE] + '\n'; @@ -1366,6 +1389,30 @@ void Courtroom::on_music_search_edited(QString p_text) list_music(); } +void Courtroom::on_mute_list_clicked(QModelIndex p_index) +{ + qDebug() << "mute_list_clicked"; + QListWidgetItem *f_item = ui_mute_list->item(p_index.row()); + qDebug() << "item text: " << f_item->text(); + QString f_char = f_item->text(); + QString real_char; + + if (f_char.endsWith(" [x]")) + { + real_char = f_char.left(f_char.size() - 4); + mute_map.remove(real_char); + mute_map.insert(real_char, false); + f_item->setText(real_char); + } + else + { + real_char = f_char; + mute_map.remove(real_char); + mute_map.insert(real_char, true); + f_item->setText(real_char + " [x]"); + } +} + void Courtroom::on_music_list_double_clicked(QModelIndex p_model) { if (is_muted) @@ -1373,7 +1420,7 @@ void Courtroom::on_music_list_double_clicked(QModelIndex p_model) QString p_song = ui_music_list->item(p_model.row())->text(); - ao_app->send_server_packet(new AOPacket("MC#" + p_song + "#" + QString::number(m_cid) + "#%")); + ao_app->send_server_packet(new AOPacket("MC#" + p_song + "#" + QString::number(m_cid) + "#%"), false); } void Courtroom::on_hold_it_clicked() diff --git a/courtroom.h b/courtroom.h index f00990c..71ed665 100644 --- a/courtroom.h +++ b/courtroom.h @@ -25,6 +25,7 @@ #include #include #include +#include class AOApplication; @@ -45,6 +46,8 @@ public: void set_char_select_page(); void set_background(QString p_background); + void set_mute_list(); + //sets desk and bg based on pos in chatmessage void set_scene(); @@ -128,6 +131,8 @@ private: QString previous_ic_message = ""; + QMap mute_map; + bool is_muted = false; //state of animation, 0 = objecting, 1 = preanim, 2 = talking, 3 = idle @@ -279,6 +284,8 @@ private slots: void chat_tick(); + void on_mute_list_clicked(QModelIndex p_index); + void on_chat_return_pressed(); void on_ooc_return_pressed(); diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 8e5c0da..1ef1eb8 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -297,6 +297,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_ms_chatmessage(w_lobby->get_chatlog()); + w_courtroom->set_mute_list(); + w_courtroom->show(); destruct_lobby(); @@ -438,9 +440,10 @@ void AOApplication::send_ms_packet(AOPacket *p_packet) delete p_packet; } -void AOApplication::send_server_packet(AOPacket *p_packet) +void AOApplication::send_server_packet(AOPacket *p_packet, bool encoded) { - p_packet->net_encode(); + if (encoded) + p_packet->net_encode(); QString f_packet = p_packet->to_string();