add ServerMain
This commit is contained in:
56
src/ServerMain.cpp
Normal file
56
src/ServerMain.cpp
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#include <server/Server.h>
|
||||||
|
|
||||||
|
#include <Nazara/Core/Application.hpp>
|
||||||
|
#include <Nazara/Core/EntitySystemAppComponent.hpp>
|
||||||
|
#include <Nazara/Network/Network.hpp>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void ConsoleLoop(Nz::Application<Nz::Network>& app, blitz::server::Server& server) {
|
||||||
|
std::string line;
|
||||||
|
while (true) {
|
||||||
|
getline(std::cin, line);
|
||||||
|
if (line == "stop") {
|
||||||
|
std::cout << "Exiting ...\n";
|
||||||
|
server.CloseServer();
|
||||||
|
app.Quit();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::uint16_t DefaultPort = 25565;
|
||||||
|
|
||||||
|
int main(int argc, char* args[]) {
|
||||||
|
Nz::Application<Nz::Network> app(argc, args);
|
||||||
|
|
||||||
|
const auto& params = app.GetCommandLineParameters();
|
||||||
|
|
||||||
|
std::string_view portString;
|
||||||
|
std::uint16_t port = DefaultPort;
|
||||||
|
|
||||||
|
if (params.GetParameter("port", &portString)) {
|
||||||
|
std::cout << "Selected port : " << portString << "\n";
|
||||||
|
bool ok;
|
||||||
|
port = Nz::StringToNumber(portString, 10, &ok);
|
||||||
|
if (!ok) {
|
||||||
|
std::cerr << "Failed to parse port !\n";
|
||||||
|
port = DefaultPort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& ecs = app.AddComponent<Nz::EntitySystemAppComponent>();
|
||||||
|
|
||||||
|
auto& serverWorld = ecs.AddWorld<Nz::EnttWorld>();
|
||||||
|
|
||||||
|
blitz::server::Server server(port, serverWorld);
|
||||||
|
|
||||||
|
std::cout << "Server running on port " << port << " ...\n";
|
||||||
|
|
||||||
|
std::jthread consoleThread([&app, &server]() { ConsoleLoop(app, server); });
|
||||||
|
|
||||||
|
// tick 20 times per seconds
|
||||||
|
app.AddUpdaterFunc([]() { std::this_thread::sleep_for(std::chrono::milliseconds(50)); });
|
||||||
|
|
||||||
|
return app.Run();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user