From 0a5017d023bc2deb2e0a3a66cff1679d14b2689d Mon Sep 17 00:00:00 2001 From: DankParrot Date: Fri, 24 Jul 2020 20:44:00 -0700 Subject: [PATCH] Stub placeholder for ServerStatus --- src/DedicatedServer.cpp | 10 ++++++++-- src/DedicatedServer.h | 8 +++++++- src/Main.cpp | 2 +- src/network/ServerStatus.h | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 src/network/ServerStatus.h diff --git a/src/DedicatedServer.cpp b/src/DedicatedServer.cpp index 182f087..a05e7e8 100644 --- a/src/DedicatedServer.cpp +++ b/src/DedicatedServer.cpp @@ -1,10 +1,16 @@ #include "DedicatedServer.h" +#include "config/ServerProperties.h" namespace Feather { - DedicatedServer::DedicatedServer(uint16_t port) - : m_listener(port) + DedicatedServer::DedicatedServer(ServerProperties* properties) : + m_properties(properties), + m_listener(properties->serverPort.GetValue()), + m_status() { + m_status.descriptionText = properties->motd.GetValue(); + m_status.maxPlayers = properties->maxPlayers.GetValue(); + while (1) { diff --git a/src/DedicatedServer.h b/src/DedicatedServer.h index 772c298..c4b682d 100644 --- a/src/DedicatedServer.h +++ b/src/DedicatedServer.h @@ -1,15 +1,21 @@ #pragma once #include "network/TCPListener.h" +#include "network/ServerStatus.h" + namespace Feather { + class ServerProperties; + class DedicatedServer { public: - DedicatedServer(uint16_t port); + DedicatedServer(ServerProperties* properties); ~DedicatedServer(); private: + ServerProperties* m_properties; Network::TCPListener m_listener; + Network::ServerStatus m_status; }; } diff --git a/src/Main.cpp b/src/Main.cpp index d24c38e..5b81104 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -10,7 +10,7 @@ int main() properties.Save(); printf("Starting server on port %d\n", properties.serverPort.GetValue()); - auto server = DedicatedServer(properties.serverPort.GetValue()); + auto server = DedicatedServer(&properties); return 1; } diff --git a/src/network/ServerStatus.h b/src/network/ServerStatus.h new file mode 100644 index 0000000..b98ba50 --- /dev/null +++ b/src/network/ServerStatus.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +using string = std::string; +using stringstream = std::stringstream; + +namespace Feather::Network +{ + class ServerStatus + { + public: + // Version + string versionName = "1.16.1"; + int protocol = 736; + + // Players + int maxPlayers; + int numPlayers; + + // Description + string descriptionText = ""; + + string GetServerStatusJSON() + { + // TODO: PLACEHOLDER for real JSON + stringstream j; + j << "{"; + j << "\"version\":{\"name\":\"" << versionName << "\",\"protocol\":" << protocol << "},"; + j << "\"players\":{\"max\":" << maxPlayers << ",\"online\":" << numPlayers << ",\"sample\":[]},"; + j << "\"description\": {\"text\":\"" << descriptionText << "\"}"; + j << "}"; + + return j.str(); + } + }; +} \ No newline at end of file