aboutsummaryrefslogtreecommitdiff
path: root/lobby.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lobby.cpp')
-rw-r--r--lobby.cpp110
1 files changed, 106 insertions, 4 deletions
diff --git a/lobby.cpp b/lobby.cpp
index d38baa7..c7f27af 100644
--- a/lobby.cpp
+++ b/lobby.cpp
@@ -26,6 +26,9 @@ Lobby::Lobby(AOApplication *parent) : QMainWindow()
ui_server_list = new QListWidget(this);
ui_player_count = new QLabel(this);
ui_description = new QPlainTextEdit(this);
+ ui_chatbox = new QPlainTextEdit(this);
+ ui_chatname = new QLineEdit(this);
+ ui_chatmessage = new QLineEdit(this);
connect(ui_public_servers, SIGNAL(clicked()), this, SLOT(on_public_servers_clicked()));
connect(ui_favorites, SIGNAL(clicked()), this, SLOT(on_favorites_clicked()));
@@ -35,8 +38,9 @@ Lobby::Lobby(AOApplication *parent) : QMainWindow()
connect(ui_add_to_fav, SIGNAL(released()), this, SLOT(on_add_to_fav_released()));
connect(ui_connect, SIGNAL(pressed()), this, SLOT(on_connect_pressed()));
connect(ui_connect, SIGNAL(released()), this, SLOT(on_connect_released()));
-
connect(ui_about, SIGNAL(clicked()), this, SLOT(on_about_clicked()));
+ connect(ui_server_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_server_list_clicked(QModelIndex)));
+ connect(ui_chatmessage, SIGNAL(returnPressed()), this, SLOT(on_chatfield_return_pressed()));
set_widgets();
}
@@ -94,8 +98,25 @@ void Lobby::set_widgets()
ui_description->move(337, 109);
ui_description->resize(173, 245);
+ ui_description->setReadOnly(true);
ui_description->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
"color: white;");
+
+ ui_chatbox->move(2, 445);
+ ui_chatbox->resize(515, 198);
+ ui_chatbox->setReadOnly(true);
+ ui_chatbox->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
+
+ ui_chatname->move(3, 646);
+ ui_chatname->resize(85, 19);
+ ui_chatname->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
+ "selection-background-color: rgba(0, 0, 0, 0);");
+
+ ui_chatmessage->move(93, 646);
+ ui_chatmessage->resize(424, 19);
+ ui_chatmessage->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
+ "selection-background-color: rgba(0, 0, 0, 0);");
+
}
void Lobby::on_public_servers_clicked()
@@ -103,7 +124,9 @@ void Lobby::on_public_servers_clicked()
ui_public_servers->set_image("publicservers_selected.png");
ui_favorites->set_image("favorites.png");
- //T0D0: clear server list and show public servers
+ list_servers();
+
+ public_servers_selected = true;
}
void Lobby::on_favorites_clicked()
@@ -111,7 +134,11 @@ void Lobby::on_favorites_clicked()
ui_favorites->set_image("favorites_selected.png");
ui_public_servers->set_image("publicservers.png");
- //T0D0: clear server list and show favorites from serverlist.txt
+ ao_app->favorite_list = read_serverlist_txt();
+
+ list_favorites();
+
+ public_servers_selected = false;
}
void Lobby::on_refresh_pressed()
@@ -139,7 +166,22 @@ void Lobby::on_add_to_fav_released()
{
ui_add_to_fav->set_image("addtofav.png");
- //T0D0, add selected element to serverlist.txt
+ //you cant add favorites from favorites m8
+ if (!public_servers_selected)
+ return;
+
+ int n_server = ui_server_list->currentRow();
+
+ if (n_server < 0 || n_server >= ao_app->server_list.size())
+ return;
+
+ server_type fav_server = ao_app->server_list.at(n_server);
+
+ QString str_port = QString::number(fav_server.port);
+
+ QString server_line = fav_server.ip + ":" + str_port + ":" + fav_server.name;
+
+ write_to_serverlist_txt(server_line);
}
void Lobby::on_connect_pressed()
@@ -160,6 +202,51 @@ void Lobby::on_about_clicked()
call_error("YEBOIIII");
}
+void Lobby::on_server_list_clicked(QModelIndex p_model)
+{
+ server_type f_server;
+ int n_server = p_model.row();
+
+ if (n_server < 0)
+ return;
+
+ if (public_servers_selected)
+ {
+ if (n_server >= ao_app->server_list.size())
+ return;
+
+ f_server = ao_app->server_list.at(p_model.row());
+ }
+ else
+ {
+ if (n_server >= ao_app->favorite_list.size())
+ return;
+
+ f_server = ao_app->favorite_list.at(p_model.row());
+ }
+
+ ui_description->clear();
+ ui_description->appendPlainText(f_server.desc);
+
+ ui_description->moveCursor(QTextCursor::Start);
+ ui_description->ensureCursorVisible();
+
+ //T0D0: uncomment when implemented
+ //ao_app->net_manager->connect_to_server(f_server.ip, f_server.port);
+}
+
+void Lobby::on_chatfield_return_pressed()
+{
+ QString raw_packet = "CT#" + ui_chatname->text() + "#" + ui_chatmessage->text() + "#%";
+ AOPacket *f_packet = new AOPacket(raw_packet);
+
+ ao_app->net_manager->send_ms_packet(f_packet);
+
+ ui_chatmessage->clear();
+
+ delete f_packet;
+}
+
void Lobby::list_servers()
{
ui_server_list->clear();
@@ -169,3 +256,18 @@ void Lobby::list_servers()
ui_server_list->addItem(i_server.name);
}
}
+
+void Lobby::list_favorites()
+{
+ ui_server_list->clear();
+
+ for (server_type i_server : ao_app->favorite_list)
+ {
+ ui_server_list->addItem(i_server.name);
+ }
+}
+
+void Lobby::append_chat_message(QString p_message_line)
+{
+ ui_chatbox->appendPlainText(p_message_line);
+}