From 9e39658ef49291049f20e162c430bb9b3f5c4678 Mon Sep 17 00:00:00 2001 From: Dev <90421310+EstatoDeviato@users.noreply.github.com> Date: Tue, 28 May 2024 13:16:03 +0200 Subject: [PATCH 1/4] add set player list function --- include/courtroom.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/courtroom.h b/include/courtroom.h index a8942efe2..f8d10e00b 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -229,6 +229,9 @@ class Courtroom : public QMainWindow { void list_music(); void list_areas(); + // player list build function + void set_player_list(QStringList players); + // Debug log (formerly master server chat log) void debug_message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg); @@ -769,6 +772,7 @@ class Courtroom : public QMainWindow { QListWidget *ui_mute_list; QTreeWidget *ui_area_list; QTreeWidget *ui_music_list; + QTreeWidget *ui_player_list; ScrollText *ui_music_name; InterfaceLayer *ui_music_display; From bdb17c77434ffee06a393be94914316f1d256b4c Mon Sep 17 00:00:00 2001 From: Dev <90421310+EstatoDeviato@users.noreply.github.com> Date: Tue, 28 May 2024 13:18:23 +0200 Subject: [PATCH 2/4] Add PL packet (Player list) --- src/packet_distribution.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 2e6c63bc2..5939096b6 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -709,6 +709,11 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->format_clock(id, time_format, timer_value); } } + else if (header == "PL") { + if (courtroom_constructed && f_contents.size() > 0) { + w_courtroom->set_player_list(f_contents); + } + } else if (header == "CHECK") { if (!courtroom_constructed) goto end; From 83445c2ab00f5ac39d4a2e8f75572adacd9090fc Mon Sep 17 00:00:00 2001 From: Dev <90421310+EstatoDeviato@users.noreply.github.com> Date: Tue, 28 May 2024 13:31:48 +0200 Subject: [PATCH 3/4] Add set player list function --- src/courtroom.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index a09b5dbc4..6ce10cdd0 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -193,6 +193,15 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_music_list->setUniformRowHeights(true); ui_music_list->setObjectName("ui_music_list"); + ui_player_list = new QTreeWidget(this); + ui_player_list->setColumnCount(1); + ui_player_list->setHeaderHidden(true); + ui_player_list->header()->setStretchLastSection(false); + ui_player_list->header()->setSectionResizeMode(QHeaderView::ResizeToContents); + ui_player_list->setContextMenuPolicy(Qt::CustomContextMenu); + ui_player_list->setUniformRowHeights(true); + ui_player_list->setObjectName("ui_player_list"); + ui_music_display = new InterfaceLayer(this, ao_app); ui_music_display->set_play_once(false); ui_music_display->set_cull_image(false); @@ -1133,6 +1142,9 @@ void Courtroom::set_widgets() else ui_music_list->setIndentation(music_list_indentation.toInt()); + set_size_and_pos(ui_player_list, "player_list"); + ui_player_list->header()->setMinimumSectionSize(ui_player_list->width()); + QString music_list_animated = ao_app->get_design_element("music_list_animated", "courtroom_design.ini"); ui_music_list->setAnimated(music_list_animated == "1" || music_list_animated.startsWith("true")); @@ -1479,6 +1491,7 @@ void Courtroom::set_fonts(QString p_char) set_font(ui_debug_log, "", "debug_log", p_char); set_font(ui_server_chatlog, "", "server_chatlog", p_char); set_font(ui_music_list, "", "music_list", p_char); + set_font(ui_player_list, "", "player_list", p_char); set_font(ui_area_list, "", "area_list", p_char); set_font(ui_music_name, "", "music_name", p_char); @@ -2096,6 +2109,19 @@ void Courtroom::list_areas() } } +void Courtroom::set_player_list(QStringList players) +{ + ui_player_list->clear(); + QBrush player_list_brush(ao_app->get_color("player_list_color", "courtroom_design.ini")); + for (QString &player : players) { + QString player_char_name = player.split('"')[1]; + QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_player_list); + treeItem->setText(0, player); + treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(player_char_name, "char_icon")))); + treeItem->setBackground(0, player_list_brush); + } +} + void Courtroom::debug_message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { From 6c8e7c79f850c9ed5ebecb468b5fa4850b30b050 Mon Sep 17 00:00:00 2001 From: Dev <90421310+EstatoDeviato@users.noreply.github.com> Date: Wed, 12 Jun 2024 20:29:54 +0200 Subject: [PATCH 4/4] fix player list --- src/courtroom.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 6ce10cdd0..7425e54eb 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2113,12 +2113,20 @@ void Courtroom::set_player_list(QStringList players) { ui_player_list->clear(); QBrush player_list_brush(ao_app->get_color("player_list_color", "courtroom_design.ini")); + int player_index = 0; for (QString &player : players) { - QString player_char_name = player.split('"')[1]; - QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_player_list); - treeItem->setText(0, player); - treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(player_char_name, "char_icon")))); - treeItem->setBackground(0, player_list_brush); + QString player_char_name = "" + if (player.split('"').size() > 1) { + player_char_name = player.split('"')[1]; + } + QTreeWidgetItem *treeItem = ui_player_list->topLevelItem(player_index); + if (treeItem == nullptr) { + treeItem = new QTreeWidgetItem(ui_player_list); + } + treeItem->setText(1, player); + treeItem->setIcon(1, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(player_char_name, "char_icon")))); + treeItem->setBackground(1, player_list_brush); + ++player_index; } }