diff --git a/aotextarea.cpp b/aotextarea.cpp index 16add10..5e14632 100644 --- a/aotextarea.cpp +++ b/aotextarea.cpp @@ -5,7 +5,7 @@ AOTextArea::AOTextArea(QWidget *p_parent) : QTextBrowser(p_parent) } -void AOTextArea::append_chatmessage(QString p_name, QString p_message) +void AOTextArea::append_chatmessage(QString p_name, QString p_message, QString p_colour) { const QTextCursor old_cursor = this->textCursor(); const int old_scrollbar_value = this->verticalScrollBar()->value(); @@ -14,7 +14,7 @@ void AOTextArea::append_chatmessage(QString p_name, QString p_message) this->moveCursor(QTextCursor::End); this->append(""); - this->insertHtml("" + p_name.toHtmlEscaped() + ": "); + this->insertHtml("" + p_name.toHtmlEscaped() + ": "); //cheap workarounds ahoy p_message += " "; diff --git a/aotextarea.h b/aotextarea.h index 9f01f15..d44596b 100644 --- a/aotextarea.h +++ b/aotextarea.h @@ -12,7 +12,7 @@ class AOTextArea : public QTextBrowser public: AOTextArea(QWidget *p_parent = nullptr); - void append_chatmessage(QString p_name, QString p_message); + void append_chatmessage(QString p_name, QString p_message, QString p_colour); void append_error(QString p_message); private: diff --git a/courtroom.cpp b/courtroom.cpp index d6ac56c..6c66c3f 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1005,12 +1005,19 @@ void Courtroom::list_areas() void Courtroom::append_ms_chatmessage(QString f_name, QString f_message) { - ui_ms_chatlog->append_chatmessage(f_name, f_message); + ui_ms_chatlog->append_chatmessage(f_name, f_message, ao_app->get_color("ooc_default_color", "courtroom_design.ini").name()); } -void Courtroom::append_server_chatmessage(QString p_name, QString p_message) +void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QString p_colour) { - ui_server_chatlog->append_chatmessage(p_name, p_message); + QString colour = "#000000"; + + if (p_colour == "0") + colour = ao_app->get_color("ooc_default_color", "courtroom_design.ini").name(); + if (p_colour == "1") + colour = ao_app->get_color("ooc_server_color", "courtroom_design.ini").name(); + + ui_server_chatlog->append_chatmessage(p_name, p_message, colour); } void Courtroom::on_chat_return_pressed() @@ -2660,21 +2667,21 @@ void Courtroom::on_ooc_return_pressed() else if (ooc_message.startsWith("/login")) { ui_guard->show(); - append_server_chatmessage("CLIENT", "You were granted the Guard button."); + append_server_chatmessage("CLIENT", "You were granted the Guard button.", "1"); } else if (ooc_message.startsWith("/rainbow") && ao_app->yellow_text_enabled && !rainbow_appended) { //ui_text_color->addItem("Rainbow"); ui_ooc_chat_message->clear(); //rainbow_appended = true; - append_server_chatmessage("CLIENT", "This does nohing, but there you go."); + append_server_chatmessage("CLIENT", "This does nohing, but there you go.", "1"); return; } else if (ooc_message.startsWith("/settings")) { ui_ooc_chat_message->clear(); ao_app->call_settings_menu(); - append_server_chatmessage("CLIENT", "You opened the settings menu."); + append_server_chatmessage("CLIENT", "You opened the settings menu.", "1"); return; } else if (ooc_message.startsWith("/pair")) @@ -2692,16 +2699,16 @@ void Courtroom::on_ooc_return_pressed() QString msg = "You will now pair up with "; msg.append(char_list.at(whom).name); msg.append(" if they also choose your character in return."); - append_server_chatmessage("CLIENT", msg); + append_server_chatmessage("CLIENT", msg, "1"); } else { - append_server_chatmessage("CLIENT", "You are no longer paired with anyone."); + append_server_chatmessage("CLIENT", "You are no longer paired with anyone.", "1"); } } else { - append_server_chatmessage("CLIENT", "Are you sure you typed that well? The char ID could not be recognised."); + append_server_chatmessage("CLIENT", "Are you sure you typed that well? The char ID could not be recognised.", "1"); } return; } @@ -2720,29 +2727,29 @@ void Courtroom::on_ooc_return_pressed() QString msg = "You have set your offset to "; msg.append(QString::number(off)); msg.append("%."); - append_server_chatmessage("CLIENT", msg); + append_server_chatmessage("CLIENT", msg, "1"); } else { - append_server_chatmessage("CLIENT", "Your offset must be between -100% and 100%!"); + append_server_chatmessage("CLIENT", "Your offset must be between -100% and 100%!", "1"); } } else { - append_server_chatmessage("CLIENT", "That offset does not look like one."); + append_server_chatmessage("CLIENT", "That offset does not look like one.", "1"); } return; } else if (ooc_message.startsWith("/switch_am")) { - append_server_chatmessage("CLIENT", "You switched your music and area list."); + append_server_chatmessage("CLIENT", "You switched your music and area list.", "1"); on_switch_area_music_clicked(); ui_ooc_chat_message->clear(); return; } else if (ooc_message.startsWith("/enable_blocks")) { - append_server_chatmessage("CLIENT", "You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this."); + append_server_chatmessage("CLIENT", "You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.", "1"); ao_app->shownames_enabled = true; ao_app->charpairs_enabled = true; ao_app->arup_enabled = true; @@ -2754,9 +2761,9 @@ void Courtroom::on_ooc_return_pressed() else if (ooc_message.startsWith("/non_int_pre")) { if (ui_pre_non_interrupt->isChecked()) - append_server_chatmessage("CLIENT", "Your pre-animations interrupt again."); + append_server_chatmessage("CLIENT", "Your pre-animations interrupt again.", "1"); else - append_server_chatmessage("CLIENT", "Your pre-animations will not interrupt text."); + append_server_chatmessage("CLIENT", "Your pre-animations will not interrupt text.", "1"); ui_pre_non_interrupt->setChecked(!ui_pre_non_interrupt->isChecked()); ui_ooc_chat_message->clear(); return; diff --git a/courtroom.h b/courtroom.h index 3e1b269..341d6df 100644 --- a/courtroom.h +++ b/courtroom.h @@ -162,7 +162,7 @@ public: //these are for OOC chat void append_ms_chatmessage(QString f_name, QString f_message); - void append_server_chatmessage(QString p_name, QString p_message); + void append_server_chatmessage(QString p_name, QString p_message, QString p_colour); //these functions handle chatmessages sequentially. //The process itself is very convoluted and merits separate documentation diff --git a/lobby.cpp b/lobby.cpp index 5d2d6de..9a649be 100644 --- a/lobby.cpp +++ b/lobby.cpp @@ -357,7 +357,7 @@ void Lobby::list_favorites() void Lobby::append_chatmessage(QString f_name, QString f_message) { - ui_chatbox->append_chatmessage(f_name, f_message); + ui_chatbox->append_chatmessage(f_name, f_message, ao_app->get_color("ooc_default_color", "courtroom_design.ini").name()); } void Lobby::append_error(QString f_message) diff --git a/packet_distribution.cpp b/packet_distribution.cpp index c81ba80..8d23fe5 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -178,7 +178,12 @@ void AOApplication::server_packet_received(AOPacket *p_packet) goto end; if (courtroom_constructed) - w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1)); + { + if (f_contents.size() == 3) + w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), f_contents.at(2)); + else + w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), "0"); + } } else if (header == "FL") { diff --git a/server/area_manager.py b/server/area_manager.py index d8e60d0..942ad63 100644 --- a/server/area_manager.py +++ b/server/area_manager.py @@ -124,7 +124,7 @@ class AreaManager: c.send_command(cmd, *args) def send_host_message(self, msg): - self.send_command('CT', self.server.config['hostname'], msg) + self.send_command('CT', self.server.config['hostname'], msg, '1') def set_next_msg_delay(self, msg_length): delay = min(3000, 100 + 60 * msg_length) diff --git a/server/client_manager.py b/server/client_manager.py index 617bb69..e7655bd 100644 --- a/server/client_manager.py +++ b/server/client_manager.py @@ -94,7 +94,7 @@ class ClientManager: self.send_raw_message('{}#%'.format(command)) def send_host_message(self, msg): - self.send_command('CT', self.server.config['hostname'], msg) + self.send_command('CT', self.server.config['hostname'], msg, '1') def send_motd(self): self.send_host_message('=== MOTD ===\r\n{}\r\n============='.format(self.server.config['motd'])) @@ -272,7 +272,7 @@ class ClientManager: info = 'Current online: {}'.format(cnt) + info else: try: - info = 'People in this area: {}\n'.format(len(self.server.area_manager.areas[area_id].clients)) + self.get_area_info(area_id, mods) + info = 'People in this area: {}'.format(len(self.server.area_manager.areas[area_id].clients)) + self.get_area_info(area_id, mods) except AreaError: raise self.send_host_message(info) diff --git a/server/commands.py b/server/commands.py index c84d8b7..a6e2999 100644 --- a/server/commands.py +++ b/server/commands.py @@ -502,7 +502,7 @@ def ooc_cmd_announce(client, arg): if len(arg) == 0: raise ArgumentError("Can't send an empty message.") client.server.send_all_cmd_pred('CT', '{}'.format(client.server.config['hostname']), - '=== Announcement ===\r\n{}\r\n=================='.format(arg)) + '=== Announcement ===\r\n{}\r\n=================='.format(arg), '1') logger.log_server('[{}][{}][ANNOUNCEMENT]{}.'.format(client.area.abbreviation, client.get_char_name(), arg), client) logger.log_mod('[{}][{}][ANNOUNCEMENT]{}.'.format(client.area.abbreviation, client.get_char_name(), arg), client) diff --git a/server/districtclient.py b/server/districtclient.py index adc29ec..c766ba5 100644 --- a/server/districtclient.py +++ b/server/districtclient.py @@ -60,7 +60,7 @@ class DistrictClient: elif cmd == 'NEED': need_msg = '=== Cross Advert ===\r\n{} at {} in {} [{}] needs {}\r\n====================' \ .format(args[1], args[0], args[2], args[3], args[4]) - self.server.send_all_cmd_pred('CT', '{}'.format(self.server.config['hostname']), need_msg, + self.server.send_all_cmd_pred('CT', '{}'.format(self.server.config['hostname']), need_msg, '1', pred=lambda x: not x.muted_adverts) async def write_queue(self): diff --git a/server/tsuserver.py b/server/tsuserver.py index 7ef4f5e..5af8161 100644 --- a/server/tsuserver.py +++ b/server/tsuserver.py @@ -253,8 +253,8 @@ class TsuServer3: area_name = client.area.name area_id = client.area.abbreviation self.send_all_cmd_pred('CT', '{}'.format(self.config['hostname']), - '=== Advert ===\r\n{} in {} [{}] needs {}\r\n===============' - .format(char_name, area_name, area_id, msg), pred=lambda x: not x.muted_adverts) + ['=== Advert ===\r\n{} in {} [{}] needs {}\r\n===============' + .format(char_name, area_name, area_id, msg), '1'], pred=lambda x: not x.muted_adverts) if self.config['use_district']: self.district_client.send_raw_message('NEED#{}#{}#{}#{}'.format(char_name, area_name, area_id, msg))