show integrated server stats

This commit is contained in:
2023-08-14 18:10:05 +02:00
parent 49a5a09537
commit ee5a27ac54
5 changed files with 59 additions and 1 deletions

View File

@@ -11,6 +11,8 @@
namespace td { namespace td {
namespace gui { namespace gui {
class ServerGui;
class MainMenu : public GuiWidget { class MainMenu : public GuiWidget {
private: private:
bool m_TriedToConnect = false; bool m_TriedToConnect = false;
@@ -22,6 +24,7 @@ private:
imgui_addons::ImGuiFileBrowser m_FileDialog; imgui_addons::ImGuiFileBrowser m_FileDialog;
std::unique_ptr<server::Server> m_Server; std::unique_ptr<server::Server> m_Server;
std::unique_ptr<ServerGui> m_ServerGui;
public: public:
MainMenu(client::Client* client); MainMenu(client::Client* client);
~MainMenu(); ~MainMenu();

View File

@@ -0,0 +1,19 @@
#pragma once
#include "GuiWidget.h"
#include "server/Server.h"
namespace td {
namespace gui {
class ServerGui : public GuiWidget {
private:
server::Server* m_Server;
public:
ServerGui(client::Client* client, server::Server* server);
virtual void Render();
};
} // namespace gui
} // namespace td

View File

@@ -79,6 +79,7 @@ public:
void BroadcastPacket(const protocol::Packet* packet); void BroadcastPacket(const protocol::Packet* packet);
float GetMSPT() const { return m_TickCounter.GetMSPT(); }
float GetTPS() const { return m_TickCounter.GetTPS(); } float GetTPS() const { return m_TickCounter.GetTPS(); }
bool IsRunning() { return m_ServerRunning; } bool IsRunning() { return m_ServerRunning; }

View File

@@ -1,4 +1,5 @@
#include "client/render/gui/MainMenu.h" #include "client/render/gui/MainMenu.h"
#include "client/render/gui/ServerGui.h"
#include "client/Client.h" #include "client/Client.h"
@@ -19,7 +20,12 @@ MainMenu::~MainMenu() {
void MainMenu::Render() { void MainMenu::Render() {
if (m_Server != nullptr && !m_Server->IsRunning()) { if (m_Server != nullptr && !m_Server->IsRunning()) {
m_Server.reset(0); // destroying server if it stoped m_Server.reset(); // destroying server if it stoped
m_ServerGui.reset();
}
if(m_Server != nullptr){
m_ServerGui->Render();
} }
if (m_Client->IsConnected()) return; if (m_Client->IsConnected()) return;
@@ -83,8 +89,10 @@ bool MainMenu::StartServer() {
m_Server = std::make_unique<td::server::Server>(); m_Server = std::make_unique<td::server::Server>();
m_Server->LoadMap(m_WorldFilePath); m_Server->LoadMap(m_WorldFilePath);
if (!m_Server->Start(m_ServerPort, false)) { if (!m_Server->Start(m_ServerPort, false)) {
m_Server.reset();
return false; return false;
} }
m_ServerGui = std::make_unique<ServerGui>(m_Client, m_Server.get());
return true; return true;
} }

View File

@@ -0,0 +1,27 @@
#include "client/render/gui/ServerGui.h"
#include "client/render/gui/imgui/imgui.h"
namespace td {
namespace gui {
ServerGui::ServerGui(client::Client* client, server::Server* server) : GuiWidget(client), m_Server(server) {}
void ServerGui::Render() {
ImGui::Begin("Integrated Server");
ImGui::Text("Server TPS : %.1f", m_Server->GetTPS());
ImGui::Text("Server MSPT : %i", (int)m_Server->GetMSPT());
ImGui::Separator();
if (ImGui::Button("Restart")) {
m_Server->Restart();
}
ImGui::SameLine();
if (ImGui::Button("Stop")) {
m_Server->Stop();
}
ImGui::End();
}
} // namespace gui
} // namespace td