Début sockets.
This commit is contained in:
parent
b7ca0253ca
commit
51b0795c62
@ -9,6 +9,9 @@
|
||||
#define MAX_SELECTION_DISTANCE 5
|
||||
#define SEED 12345
|
||||
|
||||
#define SRV_PORT 1025
|
||||
#define CLI_PORT 1026
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define WORLD_SIZE_X 64
|
||||
#define WORLD_SIZE_Y 64
|
||||
|
@ -101,7 +101,15 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) {
|
||||
bt1 = world->BlockAt(GetPosition().x + input.x, GetPosition().y, GetPosition().z);
|
||||
bt2 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 0.9f, GetPosition().z);
|
||||
bt3 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 1.7f, GetPosition().z);
|
||||
if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) {
|
||||
if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) {
|
||||
if (input.x > 0)
|
||||
input.x = m_velocity.x = 0.5f;
|
||||
else
|
||||
input.x = m_velocity.x = -0.5f;
|
||||
m_velocity.y = 0.3;
|
||||
m_velocity.z *= .5f;
|
||||
}
|
||||
else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) {
|
||||
input.x = m_velocity.x = 0;
|
||||
m_velocity.z *= .5f;
|
||||
}
|
||||
@ -109,7 +117,15 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) {
|
||||
bt1 = world->BlockAt(GetPosition().x, GetPosition().y, GetPosition().z + input.z);
|
||||
bt2 = world->BlockAt(GetPosition().x, GetPosition().y - 0.9f, GetPosition().z + input.z);
|
||||
bt3 = world->BlockAt(GetPosition().x, GetPosition().y - 1.7f, GetPosition().z + input.z);
|
||||
if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) {
|
||||
if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) {
|
||||
if (input.z > 0)
|
||||
input.z = m_velocity.z = 0.5f;
|
||||
else
|
||||
input.z = m_velocity.z = -0.5f;
|
||||
m_velocity.y = 0.3;
|
||||
m_velocity.x *= .5f;
|
||||
}
|
||||
else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) {
|
||||
input.z = m_velocity.z = 0;
|
||||
m_velocity.x *= .5f;
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
@ -53,27 +52,24 @@
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared" >
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -94,6 +90,7 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>Default</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -130,8 +127,21 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup></ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="connection.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="server.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="connection.h" />
|
||||
<ClInclude Include="define.h" />
|
||||
<ClInclude Include="server.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SQCSim-common\SQCSim-common.vcxproj">
|
||||
<Project>{ee91ab12-4225-4a4d-931d-69d72f6d91fb}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@ -14,4 +14,26 @@
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="connection.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="define.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="server.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="connection.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
31
SQCSim-srv/connection.cpp
Normal file
31
SQCSim-srv/connection.cpp
Normal file
@ -0,0 +1,31 @@
|
||||
#include "connection.h"
|
||||
|
||||
Connection::Connection(in_addr addr,
|
||||
std::string name,
|
||||
UINT64 hash,
|
||||
UINT64 self_hash,
|
||||
UINT64 team_hash):
|
||||
m_addr(addr),
|
||||
m_hash(hash),
|
||||
m_shash(self_hash),
|
||||
m_thash(team_hash),
|
||||
m_name(name) {
|
||||
|
||||
}
|
||||
|
||||
Connection::~Connection() {
|
||||
|
||||
}
|
||||
|
||||
in_addr Connection::GetAddr() const { return m_addr; }
|
||||
|
||||
UINT64 Connection::GetHash(bool self) const { return self? m_shash: m_hash; }
|
||||
|
||||
UINT64 Connection::GetTeamHash() const { return m_thash; }
|
||||
|
||||
std::string Connection::GetName() const { return m_name; }
|
||||
|
||||
void Connection::Clean(std::chrono::system_clock::time_point time) {
|
||||
while (m_input_manifest.front().timestamp < time || !m_input_manifest.empty())
|
||||
m_input_manifest.pop_front();
|
||||
}
|
42
SQCSim-srv/connection.h
Normal file
42
SQCSim-srv/connection.h
Normal file
@ -0,0 +1,42 @@
|
||||
#ifndef _CONNECTION_H__
|
||||
#define _CONNECTION_H__
|
||||
#include <deque>
|
||||
#include <chrono>
|
||||
#include "../SQCSim-common/player.h"
|
||||
#include "../SQCSim-common/vector3.h"
|
||||
#include "define.h"
|
||||
|
||||
struct Input {
|
||||
std::chrono::system_clock::time_point timestamp;
|
||||
UINT8 keys; // 0bFBLRJS__
|
||||
Vector3f direction;
|
||||
};
|
||||
|
||||
class Connection {
|
||||
public:
|
||||
Connection(
|
||||
in_addr addr,
|
||||
std::string name,
|
||||
UINT64 hash,
|
||||
UINT64 self_hash,
|
||||
UINT64 team_hash);
|
||||
~Connection();
|
||||
|
||||
Player* player = nullptr;
|
||||
|
||||
in_addr GetAddr() const;
|
||||
UINT64 GetHash(bool self = true) const;
|
||||
UINT64 GetTeamHash() const;
|
||||
std::string GetName() const;
|
||||
|
||||
void Clean(std::chrono::system_clock::time_point time);
|
||||
private:
|
||||
std::deque<Input> m_input_manifest;
|
||||
in_addr m_addr;
|
||||
UINT64 m_hash,
|
||||
m_shash,
|
||||
m_thash;
|
||||
std::string m_name;
|
||||
|
||||
};
|
||||
#endif
|
38
SQCSim-srv/define.h
Normal file
38
SQCSim-srv/define.h
Normal file
@ -0,0 +1,38 @@
|
||||
#ifndef _SRV_DEFINE_H__
|
||||
#define _SRV_DEFINE_H__
|
||||
|
||||
#include "../SQCSim-common/define.h"
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
|
||||
enum LogDest { CONSOLE, LOGFILE, LOG_LAST };
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject
|
||||
|
||||
#include <Windows.h>
|
||||
#include <cstdio>
|
||||
#include <ctime>
|
||||
|
||||
#define popen _popen
|
||||
#define pclose _pclose
|
||||
|
||||
#else // Pas _WIN32
|
||||
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#define SOCKET int
|
||||
#define INVALID_SOCKET -1
|
||||
#define closesocket close
|
||||
|
||||
#endif // _WIN32
|
||||
|
||||
#endif
|
10
SQCSim-srv/main.cpp
Normal file
10
SQCSim-srv/main.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
#include "define.h"
|
||||
#include "server.h"
|
||||
|
||||
int main() {
|
||||
Server* server = new Server();
|
||||
if (server->Init() == 0)
|
||||
if (server->Ready() == 0)
|
||||
server->Run();
|
||||
delete server;
|
||||
}
|
224
SQCSim-srv/server.cpp
Normal file
224
SQCSim-srv/server.cpp
Normal file
@ -0,0 +1,224 @@
|
||||
#include "server.h"
|
||||
|
||||
Server::Server(LogDest log) : m_log(log) {
|
||||
if (log == LogDest::LOGFILE) {
|
||||
m_logfile = std::ofstream("server.log", std::ofstream::out);
|
||||
if (!m_logfile.is_open()) {
|
||||
m_log = LogDest::CONSOLE; // Fallback console.
|
||||
Log("Ouverture fichier log: repli vers console.", true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Server::~Server() {
|
||||
if (m_logfile.is_open())
|
||||
m_logfile.close();
|
||||
if (m_sock_udp)
|
||||
closesocket(m_sock_udp);
|
||||
if (m_sock_tcp)
|
||||
closesocket(m_sock_tcp);
|
||||
#ifdef _WIN32
|
||||
WSACleanup();
|
||||
#endif
|
||||
}
|
||||
|
||||
int Server::Init() {
|
||||
Log("Initialisation du serveur...", false, false);
|
||||
|
||||
#ifdef _WIN32
|
||||
if (WSAStartup(MAKEWORD(2, 2), &m_wsaData) != 0) { /* Initialisation de l'environnement reseau (Windows only) */
|
||||
Log("Initialisation WinSock.", true, true);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
m_sock_udp = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (m_sock_udp == INVALID_SOCKET) { /* Creation du socket UDP */
|
||||
Log("Creation Socket UDP.", true, true);
|
||||
return 2;
|
||||
}
|
||||
|
||||
m_sock_tcp = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (m_sock_tcp == INVALID_SOCKET) { /* Creation du socket TCP */
|
||||
Log("Creation Socket TCP.", true, true);
|
||||
return 3;
|
||||
}
|
||||
|
||||
/* Creation structure donnes descripteur du socket serveur */
|
||||
sockaddr_in addr;
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(SRV_PORT);
|
||||
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
if (bind(m_sock_udp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket UDP au port */
|
||||
Log("Association Socket UDP.", true, true);
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (bind(m_sock_tcp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket TCP au port */
|
||||
Log("Association Socket TCP.", true, true);
|
||||
return 5;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Server::Ready() {
|
||||
Log("Prêt à démarrer...", false, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Server::Run() {
|
||||
Log("Partie en cours...", false, false);
|
||||
}
|
||||
|
||||
inline std::string Server::Timestamp() {
|
||||
time_t rawtime;
|
||||
struct tm timeinfo;
|
||||
char buffer[80];
|
||||
|
||||
time(&rawtime);
|
||||
|
||||
#ifdef _WIN32
|
||||
localtime_s(&timeinfo, &rawtime);
|
||||
#else
|
||||
localtime_r(&rawtime, &timeinfo);
|
||||
#endif
|
||||
|
||||
strftime(buffer, sizeof(buffer), "%d-%m-%Y %H:%M:%S", &timeinfo);
|
||||
std::string str(buffer);
|
||||
|
||||
return "[" + str + "] ";
|
||||
}
|
||||
|
||||
void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) {
|
||||
switch (m_log) {
|
||||
case LogDest::LOGFILE:
|
||||
m_logfile << Timestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl;
|
||||
break;
|
||||
case LogDest::CONSOLE:
|
||||
default:
|
||||
std::cout << Timestamp() << (is_fatal? "FATAL ": "") << (is_error ? "ERROR ": "") << str << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_fatal) {
|
||||
if (m_sock_udp)
|
||||
closesocket(m_sock_udp);
|
||||
if (m_sock_tcp)
|
||||
closesocket(m_sock_tcp);
|
||||
#ifdef _WIN32
|
||||
WSACleanup();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
///* Recevoir paquet */
|
||||
//while (true) {
|
||||
// char buffer[2048];
|
||||
// sockaddr_in client;
|
||||
//
|
||||
//#ifdef _WIN32 // Mais pourquoi?
|
||||
// int clen = sizeof(client);
|
||||
//#else
|
||||
// unsigned int clen = sizeof(client);
|
||||
//#endif
|
||||
//
|
||||
// int count = recvfrom(socket_udp, buffer, sizeof(buffer) - 1, 0, (sockaddr*)&client, &clen);
|
||||
//
|
||||
// if (count < 0) {
|
||||
// Log("Erreur de reception de paquet.", socket_udp);
|
||||
// return 4;
|
||||
// }
|
||||
//
|
||||
// buffer[count] = '\0';
|
||||
//
|
||||
// /* Gérer le paquet reçu */
|
||||
// std::string commande(buffer);
|
||||
//
|
||||
// if (commande.find("echo ") == 0) { /* ECHO */
|
||||
// std::string::size_type pos = commande.find(' ');
|
||||
// std::string parametres = commande.substr(pos + 1);
|
||||
//
|
||||
// sendto(socket_udp, parametres.c_str(), parametres.length(), 0, (const sockaddr*)&client, sizeof(client));
|
||||
// }
|
||||
// else if (commande.find("date ") == 0) { /* DATE */
|
||||
// time_t rawtime;
|
||||
// struct tm* timeinfo = new tm();
|
||||
// char tbuffer[80];
|
||||
//
|
||||
// time(&rawtime);
|
||||
//
|
||||
//#ifdef _WIN32
|
||||
// localtime_s(timeinfo, &rawtime);
|
||||
//#else
|
||||
// localtime_r(&rawtime, timeinfo);
|
||||
//#endif
|
||||
//
|
||||
// strftime(tbuffer, 80, "%a %b %e %T %G", timeinfo);
|
||||
//
|
||||
// sendto(socket_udp, tbuffer, sizeof(tbuffer), 0, (const sockaddr*)&client, sizeof(client));
|
||||
// delete timeinfo;
|
||||
// }
|
||||
// else if (commande.find("ping ") == 0) { /* PING */
|
||||
// sendto(socket_udp, "pong", sizeof("pong"), 0, (const sockaddr*)&client, sizeof(client));
|
||||
// }
|
||||
// else if (commande.find("usager ") == 0) { /* USAGER */
|
||||
// std::string user;
|
||||
//
|
||||
//#ifdef _WIN32
|
||||
// wchar_t userbuf[30];
|
||||
// DWORD usersize = 30;
|
||||
//
|
||||
// GetUserNameW(userbuf, &usersize);
|
||||
//
|
||||
// std::wstring wuser = userbuf;
|
||||
// user = std::string(wuser.begin(), wuser.end());
|
||||
//#else
|
||||
// char ptr[30];
|
||||
// getlogin_r(ptr, sizeof(ptr) - 1);
|
||||
// user = std::string(ptr);
|
||||
//#endif
|
||||
//
|
||||
// sendto(socket_udp, user.c_str(), user.length(), 0, (const sockaddr*)&client, sizeof(client));
|
||||
// }
|
||||
// else if (commande.find("exec ") == 0) { /* EXEC */
|
||||
// std::string::size_type pos = commande.find(' ');
|
||||
// std::string parametres = commande.substr(pos + 1);
|
||||
//
|
||||
// FILE* pipe = nullptr;
|
||||
// char buffer[301]; // 300 caractères + '\0'
|
||||
// std::string reponse;
|
||||
//
|
||||
// pipe = popen(parametres.c_str(), "r");
|
||||
//
|
||||
// if (!pipe)
|
||||
// reponse = "Erreur de commande!";
|
||||
// else while (!feof(pipe)) {
|
||||
// if (fgets(buffer, sizeof(buffer) - 1, pipe))
|
||||
// reponse += buffer;
|
||||
// }
|
||||
//
|
||||
// if (pipe)
|
||||
// pclose(pipe);
|
||||
//
|
||||
// if (reponse.length() > 300)
|
||||
// reponse = reponse.substr(0, 300);
|
||||
// else if (reponse.length() < 1)
|
||||
// reponse = "OK!";
|
||||
//
|
||||
// sendto(socket_udp, reponse.c_str(), reponse.length(), 0, (const sockaddr*)&client, sizeof(client));
|
||||
// }
|
||||
// else if (commande.find("bye ") == 0) { /* BYE */
|
||||
// Log("", 0); // Message d'erreur pas de message d'erreur!
|
||||
// return 0;
|
||||
// }
|
||||
// else sendto(socket_udp, "huh?", sizeof("huh?"), 0, (const sockaddr*)&client, sizeof(client)); /* DEFAULT */
|
||||
//}
|
||||
//
|
||||
///* Ce bout de code ne devrait theoriquement jamais etre atteint, mais au cas. */
|
||||
//Log("", 0);
|
||||
//return 0;
|
||||
//return false;
|
||||
//}
|
||||
//
|
34
SQCSim-srv/server.h
Normal file
34
SQCSim-srv/server.h
Normal file
@ -0,0 +1,34 @@
|
||||
#ifndef _SERVER_H__
|
||||
#define _SERVER_H__
|
||||
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "../SQCSim-common/world.h"
|
||||
#include "define.h"
|
||||
|
||||
class Server {
|
||||
public:
|
||||
Server(LogDest log = LogDest::CONSOLE);
|
||||
~Server();
|
||||
|
||||
int Init();
|
||||
int Ready();
|
||||
void Run();
|
||||
|
||||
private:
|
||||
#ifdef _WIN32
|
||||
WSADATA m_wsaData;
|
||||
#endif
|
||||
SOCKET m_sock_udp = 0,
|
||||
m_sock_tcp = 0;
|
||||
LogDest m_log;
|
||||
|
||||
std::ofstream m_logfile;
|
||||
World* m_world = nullptr;
|
||||
std::vector<Player> m_players;
|
||||
|
||||
std::string Timestamp();
|
||||
void Log(std::string str, bool is_error, bool is_fatal);
|
||||
};
|
||||
#endif
|
@ -16,29 +16,10 @@
|
||||
#define CHUNK_SIZE_Y 64
|
||||
#define CHUNK_SIZE_Z 4
|
||||
#define MAX_SELECTION_DISTANCE 5
|
||||
#define SEED 12345
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define WORLD_SIZE_X 64
|
||||
#define WORLD_SIZE_Y 64
|
||||
|
||||
#define FRAMES_RENDER_CHUNKS 4
|
||||
#define FRAMES_UPDATE_CHUNKS 4
|
||||
#define FRAMES_DELETE_CHUNKS 4
|
||||
|
||||
#define THREADS_GENERATE_CHUNKS 1
|
||||
#define THREADS_UPDATE_CHUNKS 1
|
||||
#define THREADS_DELETE_CHUNKS 1
|
||||
|
||||
#define VIEW_DISTANCE 256
|
||||
#define TEXTURE_SIZE 128
|
||||
#define MAX_BULLETS 64
|
||||
|
||||
#define BASE_WIDTH 640
|
||||
#define BASE_HEIGHT 480
|
||||
#endif
|
||||
#define SEED 12345
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define WORLD_SIZE_X 64
|
||||
#define WORLD_SIZE_Y 64
|
||||
|
||||
@ -46,14 +27,13 @@
|
||||
#define FRAMES_UPDATE_CHUNKS 1
|
||||
#define FRAMES_DELETE_CHUNKS 1
|
||||
|
||||
#define THREADS_GENERATE_CHUNKS 6
|
||||
#define THREADS_GENERATE_CHUNKS 8
|
||||
#define THREADS_UPDATE_CHUNKS 3
|
||||
#define THREADS_DELETE_CHUNKS 2
|
||||
#define THREADS_DELETE_CHUNKS 3
|
||||
|
||||
#define VIEW_DISTANCE 512
|
||||
#define TEXTURE_SIZE 512
|
||||
#define MAX_BULLETS 512
|
||||
#endif
|
||||
|
||||
|
||||
typedef uint8_t BlockType;
|
||||
|
Loading…
Reference in New Issue
Block a user