Fixed A lot of stuff + removed color system

This commit is contained in:
Anonymous275 2020-01-28 19:30:11 +02:00 committed by GitHub
parent 12fc4dfadf
commit ea3d6204d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 1307 additions and 1308 deletions

View File

@ -1,11 +1,11 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.15)
project(BeamNG-MP-Server) project(BeamNG-MP-Server)
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)
add_executable(cmake-main src/main.cpp src/network.cpp src/logger.cpp src/config.cpp) add_executable(cmake-main src/main.cpp src/network.cpp src/logger.cpp src/config.cpp)
ADD_LIBRARY( ADD_LIBRARY(
enet STATIC enet STATIC
enet.lib enet.lib
) )
set_target_properties(enet PROPERTIES LINKER_LANGUAGE CXX) set_target_properties(enet PROPERTIES LINKER_LANGUAGE CXX)

View File

@ -1,4 +1,3 @@
// //
// Created by Anonymous275 on 1/28/2020. // Created by Anonymous275 on 1/28/2020.
// //

View File

@ -1,27 +1,27 @@
/** /**
@file callbacks.h @file callbacks.h
@brief ENet callbacks @brief ENet callbacks
*/ */
#ifndef __ENET_CALLBACKS_H__ #ifndef __ENET_CALLBACKS_H__
#define __ENET_CALLBACKS_H__ #define __ENET_CALLBACKS_H__
#include <stdlib.h> #include <stdlib.h>
typedef struct _ENetCallbacks typedef struct _ENetCallbacks
{ {
void * (ENET_CALLBACK * malloc) (size_t size); void * (ENET_CALLBACK * malloc) (size_t size);
void (ENET_CALLBACK * free) (void * memory); void (ENET_CALLBACK * free) (void * memory);
void (ENET_CALLBACK * no_memory) (void); void (ENET_CALLBACK * no_memory) (void);
} ENetCallbacks; } ENetCallbacks;
/** @defgroup callbacks ENet internal callbacks /** @defgroup callbacks ENet internal callbacks
@{ @{
@ingroup private @ingroup private
*/ */
extern void * enet_malloc (size_t); extern void * enet_malloc (size_t);
extern void enet_free (void *); extern void enet_free (void *);
/** @} */ /** @} */
#endif /* __ENET_CALLBACKS_H__ */ #endif /* __ENET_CALLBACKS_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +1,43 @@
/** /**
@file list.h @file list.h
@brief ENet list management @brief ENet list management
*/ */
#ifndef __ENET_LIST_H__ #ifndef __ENET_LIST_H__
#define __ENET_LIST_H__ #define __ENET_LIST_H__
#include <stdlib.h> #include <stdlib.h>
typedef struct _ENetListNode typedef struct _ENetListNode
{ {
struct _ENetListNode * next; struct _ENetListNode * next;
struct _ENetListNode * previous; struct _ENetListNode * previous;
} ENetListNode; } ENetListNode;
typedef ENetListNode * ENetListIterator; typedef ENetListNode * ENetListIterator;
typedef struct _ENetList typedef struct _ENetList
{ {
ENetListNode sentinel; ENetListNode sentinel;
} ENetList; } ENetList;
extern void enet_list_clear (ENetList *); extern void enet_list_clear (ENetList *);
extern ENetListIterator enet_list_insert (ENetListIterator, void *); extern ENetListIterator enet_list_insert (ENetListIterator, void *);
extern void * enet_list_remove (ENetListIterator); extern void * enet_list_remove (ENetListIterator);
extern ENetListIterator enet_list_move (ENetListIterator, void *, void *); extern ENetListIterator enet_list_move (ENetListIterator, void *, void *);
extern size_t enet_list_size (ENetList *); extern size_t enet_list_size (ENetList *);
#define enet_list_begin(list) ((list) -> sentinel.next) #define enet_list_begin(list) ((list) -> sentinel.next)
#define enet_list_end(list) (& (list) -> sentinel) #define enet_list_end(list) (& (list) -> sentinel)
#define enet_list_empty(list) (enet_list_begin (list) == enet_list_end (list)) #define enet_list_empty(list) (enet_list_begin (list) == enet_list_end (list))
#define enet_list_next(iterator) ((iterator) -> next) #define enet_list_next(iterator) ((iterator) -> next)
#define enet_list_previous(iterator) ((iterator) -> previous) #define enet_list_previous(iterator) ((iterator) -> previous)
#define enet_list_front(list) ((void *) (list) -> sentinel.next) #define enet_list_front(list) ((void *) (list) -> sentinel.next)
#define enet_list_back(list) ((void *) (list) -> sentinel.previous) #define enet_list_back(list) ((void *) (list) -> sentinel.previous)
#endif /* __ENET_LIST_H__ */ #endif /* __ENET_LIST_H__ */

View File

@ -1,198 +1,198 @@
/** /**
@file protocol.h @file protocol.h
@brief ENet protocol @brief ENet protocol
*/ */
#ifndef __ENET_PROTOCOL_H__ #ifndef __ENET_PROTOCOL_H__
#define __ENET_PROTOCOL_H__ #define __ENET_PROTOCOL_H__
#include "enet/types.h" #include "enet/types.h"
enum enum
{ {
ENET_PROTOCOL_MINIMUM_MTU = 576, ENET_PROTOCOL_MINIMUM_MTU = 576,
ENET_PROTOCOL_MAXIMUM_MTU = 4096, ENET_PROTOCOL_MAXIMUM_MTU = 4096,
ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32, ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32,
ENET_PROTOCOL_MINIMUM_WINDOW_SIZE = 4096, ENET_PROTOCOL_MINIMUM_WINDOW_SIZE = 4096,
ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE = 65536, ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE = 65536,
ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT = 1, ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT = 1,
ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT = 255, ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT = 255,
ENET_PROTOCOL_MAXIMUM_PEER_ID = 0xFFF, ENET_PROTOCOL_MAXIMUM_PEER_ID = 0xFFF,
ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT = 1024 * 1024 ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT = 1024 * 1024
}; };
typedef enum _ENetProtocolCommand typedef enum _ENetProtocolCommand
{ {
ENET_PROTOCOL_COMMAND_NONE = 0, ENET_PROTOCOL_COMMAND_NONE = 0,
ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1, ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1,
ENET_PROTOCOL_COMMAND_CONNECT = 2, ENET_PROTOCOL_COMMAND_CONNECT = 2,
ENET_PROTOCOL_COMMAND_VERIFY_CONNECT = 3, ENET_PROTOCOL_COMMAND_VERIFY_CONNECT = 3,
ENET_PROTOCOL_COMMAND_DISCONNECT = 4, ENET_PROTOCOL_COMMAND_DISCONNECT = 4,
ENET_PROTOCOL_COMMAND_PING = 5, ENET_PROTOCOL_COMMAND_PING = 5,
ENET_PROTOCOL_COMMAND_SEND_RELIABLE = 6, ENET_PROTOCOL_COMMAND_SEND_RELIABLE = 6,
ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE = 7, ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE = 7,
ENET_PROTOCOL_COMMAND_SEND_FRAGMENT = 8, ENET_PROTOCOL_COMMAND_SEND_FRAGMENT = 8,
ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED = 9, ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED = 9,
ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT = 10, ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT = 10,
ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE = 11, ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE = 11,
ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT = 12, ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT = 12,
ENET_PROTOCOL_COMMAND_COUNT = 13, ENET_PROTOCOL_COMMAND_COUNT = 13,
ENET_PROTOCOL_COMMAND_MASK = 0x0F ENET_PROTOCOL_COMMAND_MASK = 0x0F
} ENetProtocolCommand; } ENetProtocolCommand;
typedef enum _ENetProtocolFlag typedef enum _ENetProtocolFlag
{ {
ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7), ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7),
ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6), ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6),
ENET_PROTOCOL_HEADER_FLAG_COMPRESSED = (1 << 14), ENET_PROTOCOL_HEADER_FLAG_COMPRESSED = (1 << 14),
ENET_PROTOCOL_HEADER_FLAG_SENT_TIME = (1 << 15), ENET_PROTOCOL_HEADER_FLAG_SENT_TIME = (1 << 15),
ENET_PROTOCOL_HEADER_FLAG_MASK = ENET_PROTOCOL_HEADER_FLAG_COMPRESSED | ENET_PROTOCOL_HEADER_FLAG_SENT_TIME, ENET_PROTOCOL_HEADER_FLAG_MASK = ENET_PROTOCOL_HEADER_FLAG_COMPRESSED | ENET_PROTOCOL_HEADER_FLAG_SENT_TIME,
ENET_PROTOCOL_HEADER_SESSION_MASK = (3 << 12), ENET_PROTOCOL_HEADER_SESSION_MASK = (3 << 12),
ENET_PROTOCOL_HEADER_SESSION_SHIFT = 12 ENET_PROTOCOL_HEADER_SESSION_SHIFT = 12
} ENetProtocolFlag; } ENetProtocolFlag;
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma pack(push, 1) #pragma pack(push, 1)
#define ENET_PACKED #define ENET_PACKED
#elif defined(__GNUC__) || defined(__clang__) #elif defined(__GNUC__) || defined(__clang__)
#define ENET_PACKED __attribute__ ((packed)) #define ENET_PACKED __attribute__ ((packed))
#else #else
#define ENET_PACKED #define ENET_PACKED
#endif #endif
typedef struct _ENetProtocolHeader typedef struct _ENetProtocolHeader
{ {
enet_uint16 peerID; enet_uint16 peerID;
enet_uint16 sentTime; enet_uint16 sentTime;
} ENET_PACKED ENetProtocolHeader; } ENET_PACKED ENetProtocolHeader;
typedef struct _ENetProtocolCommandHeader typedef struct _ENetProtocolCommandHeader
{ {
enet_uint8 command; enet_uint8 command;
enet_uint8 channelID; enet_uint8 channelID;
enet_uint16 reliableSequenceNumber; enet_uint16 reliableSequenceNumber;
} ENET_PACKED ENetProtocolCommandHeader; } ENET_PACKED ENetProtocolCommandHeader;
typedef struct _ENetProtocolAcknowledge typedef struct _ENetProtocolAcknowledge
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 receivedReliableSequenceNumber; enet_uint16 receivedReliableSequenceNumber;
enet_uint16 receivedSentTime; enet_uint16 receivedSentTime;
} ENET_PACKED ENetProtocolAcknowledge; } ENET_PACKED ENetProtocolAcknowledge;
typedef struct _ENetProtocolConnect typedef struct _ENetProtocolConnect
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 outgoingPeerID; enet_uint16 outgoingPeerID;
enet_uint8 incomingSessionID; enet_uint8 incomingSessionID;
enet_uint8 outgoingSessionID; enet_uint8 outgoingSessionID;
enet_uint32 mtu; enet_uint32 mtu;
enet_uint32 windowSize; enet_uint32 windowSize;
enet_uint32 channelCount; enet_uint32 channelCount;
enet_uint32 incomingBandwidth; enet_uint32 incomingBandwidth;
enet_uint32 outgoingBandwidth; enet_uint32 outgoingBandwidth;
enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleInterval;
enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleAcceleration;
enet_uint32 packetThrottleDeceleration; enet_uint32 packetThrottleDeceleration;
enet_uint32 connectID; enet_uint32 connectID;
enet_uint32 data; enet_uint32 data;
} ENET_PACKED ENetProtocolConnect; } ENET_PACKED ENetProtocolConnect;
typedef struct _ENetProtocolVerifyConnect typedef struct _ENetProtocolVerifyConnect
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 outgoingPeerID; enet_uint16 outgoingPeerID;
enet_uint8 incomingSessionID; enet_uint8 incomingSessionID;
enet_uint8 outgoingSessionID; enet_uint8 outgoingSessionID;
enet_uint32 mtu; enet_uint32 mtu;
enet_uint32 windowSize; enet_uint32 windowSize;
enet_uint32 channelCount; enet_uint32 channelCount;
enet_uint32 incomingBandwidth; enet_uint32 incomingBandwidth;
enet_uint32 outgoingBandwidth; enet_uint32 outgoingBandwidth;
enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleInterval;
enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleAcceleration;
enet_uint32 packetThrottleDeceleration; enet_uint32 packetThrottleDeceleration;
enet_uint32 connectID; enet_uint32 connectID;
} ENET_PACKED ENetProtocolVerifyConnect; } ENET_PACKED ENetProtocolVerifyConnect;
typedef struct _ENetProtocolBandwidthLimit typedef struct _ENetProtocolBandwidthLimit
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint32 incomingBandwidth; enet_uint32 incomingBandwidth;
enet_uint32 outgoingBandwidth; enet_uint32 outgoingBandwidth;
} ENET_PACKED ENetProtocolBandwidthLimit; } ENET_PACKED ENetProtocolBandwidthLimit;
typedef struct _ENetProtocolThrottleConfigure typedef struct _ENetProtocolThrottleConfigure
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleInterval;
enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleAcceleration;
enet_uint32 packetThrottleDeceleration; enet_uint32 packetThrottleDeceleration;
} ENET_PACKED ENetProtocolThrottleConfigure; } ENET_PACKED ENetProtocolThrottleConfigure;
typedef struct _ENetProtocolDisconnect typedef struct _ENetProtocolDisconnect
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint32 data; enet_uint32 data;
} ENET_PACKED ENetProtocolDisconnect; } ENET_PACKED ENetProtocolDisconnect;
typedef struct _ENetProtocolPing typedef struct _ENetProtocolPing
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
} ENET_PACKED ENetProtocolPing; } ENET_PACKED ENetProtocolPing;
typedef struct _ENetProtocolSendReliable typedef struct _ENetProtocolSendReliable
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 dataLength; enet_uint16 dataLength;
} ENET_PACKED ENetProtocolSendReliable; } ENET_PACKED ENetProtocolSendReliable;
typedef struct _ENetProtocolSendUnreliable typedef struct _ENetProtocolSendUnreliable
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 unreliableSequenceNumber; enet_uint16 unreliableSequenceNumber;
enet_uint16 dataLength; enet_uint16 dataLength;
} ENET_PACKED ENetProtocolSendUnreliable; } ENET_PACKED ENetProtocolSendUnreliable;
typedef struct _ENetProtocolSendUnsequenced typedef struct _ENetProtocolSendUnsequenced
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 unsequencedGroup; enet_uint16 unsequencedGroup;
enet_uint16 dataLength; enet_uint16 dataLength;
} ENET_PACKED ENetProtocolSendUnsequenced; } ENET_PACKED ENetProtocolSendUnsequenced;
typedef struct _ENetProtocolSendFragment typedef struct _ENetProtocolSendFragment
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
enet_uint16 startSequenceNumber; enet_uint16 startSequenceNumber;
enet_uint16 dataLength; enet_uint16 dataLength;
enet_uint32 fragmentCount; enet_uint32 fragmentCount;
enet_uint32 fragmentNumber; enet_uint32 fragmentNumber;
enet_uint32 totalLength; enet_uint32 totalLength;
enet_uint32 fragmentOffset; enet_uint32 fragmentOffset;
} ENET_PACKED ENetProtocolSendFragment; } ENET_PACKED ENetProtocolSendFragment;
typedef union _ENetProtocol typedef union _ENetProtocol
{ {
ENetProtocolCommandHeader header; ENetProtocolCommandHeader header;
ENetProtocolAcknowledge acknowledge; ENetProtocolAcknowledge acknowledge;
ENetProtocolConnect connect; ENetProtocolConnect connect;
ENetProtocolVerifyConnect verifyConnect; ENetProtocolVerifyConnect verifyConnect;
ENetProtocolDisconnect disconnect; ENetProtocolDisconnect disconnect;
ENetProtocolPing ping; ENetProtocolPing ping;
ENetProtocolSendReliable sendReliable; ENetProtocolSendReliable sendReliable;
ENetProtocolSendUnreliable sendUnreliable; ENetProtocolSendUnreliable sendUnreliable;
ENetProtocolSendUnsequenced sendUnsequenced; ENetProtocolSendUnsequenced sendUnsequenced;
ENetProtocolSendFragment sendFragment; ENetProtocolSendFragment sendFragment;
ENetProtocolBandwidthLimit bandwidthLimit; ENetProtocolBandwidthLimit bandwidthLimit;
ENetProtocolThrottleConfigure throttleConfigure; ENetProtocolThrottleConfigure throttleConfigure;
} ENET_PACKED ENetProtocol; } ENET_PACKED ENetProtocol;
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma pack(pop) #pragma pack(pop)
#endif #endif
#endif /* __ENET_PROTOCOL_H__ */ #endif /* __ENET_PROTOCOL_H__ */

View File

@ -1,18 +1,18 @@
/** /**
@file time.h @file time.h
@brief ENet time constants and macros @brief ENet time constants and macros
*/ */
#ifndef __ENET_TIME_H__ #ifndef __ENET_TIME_H__
#define __ENET_TIME_H__ #define __ENET_TIME_H__
#define ENET_TIME_OVERFLOW 86400000 #define ENET_TIME_OVERFLOW 86400000
#define ENET_TIME_LESS(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW) #define ENET_TIME_LESS(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW)
#define ENET_TIME_GREATER(a, b) ((b) - (a) >= ENET_TIME_OVERFLOW) #define ENET_TIME_GREATER(a, b) ((b) - (a) >= ENET_TIME_OVERFLOW)
#define ENET_TIME_LESS_EQUAL(a, b) (! ENET_TIME_GREATER (a, b)) #define ENET_TIME_LESS_EQUAL(a, b) (! ENET_TIME_GREATER (a, b))
#define ENET_TIME_GREATER_EQUAL(a, b) (! ENET_TIME_LESS (a, b)) #define ENET_TIME_GREATER_EQUAL(a, b) (! ENET_TIME_LESS (a, b))
#define ENET_TIME_DIFFERENCE(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW ? (b) - (a) : (a) - (b)) #define ENET_TIME_DIFFERENCE(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW ? (b) - (a) : (a) - (b))
#endif /* __ENET_TIME_H__ */ #endif /* __ENET_TIME_H__ */

View File

@ -1,13 +1,13 @@
/** /**
@file types.h @file types.h
@brief type definitions for ENet @brief type definitions for ENet
*/ */
#ifndef __ENET_TYPES_H__ #ifndef __ENET_TYPES_H__
#define __ENET_TYPES_H__ #define __ENET_TYPES_H__
typedef unsigned char enet_uint8; /**< unsigned 8-bit type */ typedef unsigned char enet_uint8; /**< unsigned 8-bit type */
typedef unsigned short enet_uint16; /**< unsigned 16-bit type */ typedef unsigned short enet_uint16; /**< unsigned 16-bit type */
typedef unsigned int enet_uint32; /**< unsigned 32-bit type */ typedef unsigned int enet_uint32; /**< unsigned 32-bit type */
#endif /* __ENET_TYPES_H__ */ #endif /* __ENET_TYPES_H__ */

View File

@ -1,48 +1,48 @@
/** /**
@file unix.h @file unix.h
@brief ENet Unix header @brief ENet Unix header
*/ */
#ifndef __ENET_UNIX_H__ #ifndef __ENET_UNIX_H__
#define __ENET_UNIX_H__ #define __ENET_UNIX_H__
#include <stdlib.h> #include <stdlib.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <unistd.h> #include <unistd.h>
#ifdef MSG_MAXIOVLEN #ifdef MSG_MAXIOVLEN
#define ENET_BUFFER_MAXIMUM MSG_MAXIOVLEN #define ENET_BUFFER_MAXIMUM MSG_MAXIOVLEN
#endif #endif
typedef int ENetSocket; typedef int ENetSocket;
#define ENET_SOCKET_NULL -1 #define ENET_SOCKET_NULL -1
#define ENET_HOST_TO_NET_16(value) (htons (value)) /**< macro that converts host to net byte-order of a 16-bit value */ #define ENET_HOST_TO_NET_16(value) (htons (value)) /**< macro that converts host to net byte-order of a 16-bit value */
#define ENET_HOST_TO_NET_32(value) (htonl (value)) /**< macro that converts host to net byte-order of a 32-bit value */ #define ENET_HOST_TO_NET_32(value) (htonl (value)) /**< macro that converts host to net byte-order of a 32-bit value */
#define ENET_NET_TO_HOST_16(value) (ntohs (value)) /**< macro that converts net to host byte-order of a 16-bit value */ #define ENET_NET_TO_HOST_16(value) (ntohs (value)) /**< macro that converts net to host byte-order of a 16-bit value */
#define ENET_NET_TO_HOST_32(value) (ntohl (value)) /**< macro that converts net to host byte-order of a 32-bit value */ #define ENET_NET_TO_HOST_32(value) (ntohl (value)) /**< macro that converts net to host byte-order of a 32-bit value */
typedef struct typedef struct
{ {
void * data; void * data;
size_t dataLength; size_t dataLength;
} ENetBuffer; } ENetBuffer;
#define ENET_CALLBACK #define ENET_CALLBACK
#define ENET_API extern #define ENET_API extern
typedef fd_set ENetSocketSet; typedef fd_set ENetSocketSet;
#define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset)) #define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset))
#define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset)) #define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset))
#define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset)) #define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset))
#define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset)) #define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset))
#endif /* __ENET_UNIX_H__ */ #endif /* __ENET_UNIX_H__ */

View File

@ -1,12 +1,12 @@
/** /**
@file utility.h @file utility.h
@brief ENet utility header @brief ENet utility header
*/ */
#ifndef __ENET_UTILITY_H__ #ifndef __ENET_UTILITY_H__
#define __ENET_UTILITY_H__ #define __ENET_UTILITY_H__
#define ENET_MAX(x, y) ((x) > (y) ? (x) : (y)) #define ENET_MAX(x, y) ((x) > (y) ? (x) : (y))
#define ENET_MIN(x, y) ((x) < (y) ? (x) : (y)) #define ENET_MIN(x, y) ((x) < (y) ? (x) : (y))
#endif /* __ENET_UTILITY_H__ */ #endif /* __ENET_UTILITY_H__ */

View File

@ -1,57 +1,57 @@
/** /**
@file win32.h @file win32.h
@brief ENet Win32 header @brief ENet Win32 header
*/ */
#ifndef __ENET_WIN32_H__ #ifndef __ENET_WIN32_H__
#define __ENET_WIN32_H__ #define __ENET_WIN32_H__
#ifdef _MSC_VER #ifdef _MSC_VER
#ifdef ENET_BUILDING_LIB #ifdef ENET_BUILDING_LIB
#pragma warning (disable: 4267) // size_t to int conversion #pragma warning (disable: 4267) // size_t to int conversion
#pragma warning (disable: 4244) // 64bit to 32bit int #pragma warning (disable: 4244) // 64bit to 32bit int
#pragma warning (disable: 4018) // signed/unsigned mismatch #pragma warning (disable: 4018) // signed/unsigned mismatch
#pragma warning (disable: 4146) // unary minus operator applied to unsigned type #pragma warning (disable: 4146) // unary minus operator applied to unsigned type
#endif #endif
#endif #endif
#include <stdlib.h> #include <stdlib.h>
#include <winsock2.h> #include <winsock2.h>
typedef SOCKET ENetSocket; typedef SOCKET ENetSocket;
#define ENET_SOCKET_NULL INVALID_SOCKET #define ENET_SOCKET_NULL INVALID_SOCKET
#define ENET_HOST_TO_NET_16(value) (htons (value)) #define ENET_HOST_TO_NET_16(value) (htons (value))
#define ENET_HOST_TO_NET_32(value) (htonl (value)) #define ENET_HOST_TO_NET_32(value) (htonl (value))
#define ENET_NET_TO_HOST_16(value) (ntohs (value)) #define ENET_NET_TO_HOST_16(value) (ntohs (value))
#define ENET_NET_TO_HOST_32(value) (ntohl (value)) #define ENET_NET_TO_HOST_32(value) (ntohl (value))
typedef struct typedef struct
{ {
size_t dataLength; size_t dataLength;
void * data; void * data;
} ENetBuffer; } ENetBuffer;
#define ENET_CALLBACK __cdecl #define ENET_CALLBACK __cdecl
#ifdef ENET_DLL #ifdef ENET_DLL
#ifdef ENET_BUILDING_LIB #ifdef ENET_BUILDING_LIB
#define ENET_API __declspec( dllexport ) #define ENET_API __declspec( dllexport )
#else #else
#define ENET_API __declspec( dllimport ) #define ENET_API __declspec( dllimport )
#endif /* ENET_BUILDING_LIB */ #endif /* ENET_BUILDING_LIB */
#else /* !ENET_DLL */ #else /* !ENET_DLL */
#define ENET_API extern #define ENET_API extern
#endif /* ENET_DLL */ #endif /* ENET_DLL */
typedef fd_set ENetSocketSet; typedef fd_set ENetSocketSet;
#define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset)) #define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset))
#define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset)) #define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset))
#define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset)) #define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset))
#define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset)) #define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset))
#endif /* __ENET_WIN32_H__ */ #endif /* __ENET_WIN32_H__ */

View File

@ -1,94 +1,94 @@
// //
// Created by jojos38 on 28.01.2020. // Created by jojos38 on 28.01.2020.
// //
#include "logger.h" #include "logger.h"
using namespace std; using namespace std;
int loggerlevel; int loggerlevel;
void setLoggerLevel(char level_string[]) { void setLoggerLevel(char level_string[]) {
if (!strcmp(level_string, "ALL")) if (!strcmp(level_string, "ALL"))
loggerlevel = 0; loggerlevel = 0;
if (!strcmp(level_string, "DEBUG")) if (!strcmp(level_string, "DEBUG"))
loggerlevel = 1; loggerlevel = 1;
if (!strcmp(level_string, "INFO")) if (!strcmp(level_string, "INFO"))
loggerlevel = 2; loggerlevel = 2;
if (!strcmp(level_string, "WARN")) if (!strcmp(level_string, "WARN"))
loggerlevel = 3; loggerlevel = 3;
if (!strcmp(level_string, "ERROR")) if (!strcmp(level_string, "ERROR"))
loggerlevel = 4; loggerlevel = 4;
if (!strcmp(level_string, "OFF")) if (!strcmp(level_string, "OFF"))
loggerlevel = 5; loggerlevel = 5;
} }
stringstream getDate() { stringstream getDate() {
// current date/time based on current system // current date/time based on current system
time_t now = time(0); time_t now = time(0);
tm* ltm = localtime(&now); tm* ltm = localtime(&now);
int month = 1 + ltm->tm_mon; int month = 1 + ltm->tm_mon;
int day = ltm->tm_mday; int day = ltm->tm_mday;
int hours = 1 + ltm->tm_hour; int hours = 1 + ltm->tm_hour;
int minutes = 1 + ltm->tm_min; int minutes = 1 + ltm->tm_min;
int seconds = 1 + ltm->tm_sec; int seconds = 1 + ltm->tm_sec;
string month_string; string month_string;
if (month < 10) month_string = "0" + to_string(month); if (month < 10) month_string = "0" + to_string(month);
else month_string = to_string(month); else month_string = to_string(month);
string day_string; string day_string;
if (day < 10) day_string = "0" + to_string(day); if (day < 10) day_string = "0" + to_string(day);
else day_string = to_string(day); else day_string = to_string(day);
string hours_string; string hours_string;
if (hours < 10) hours_string = "0" + to_string(hours); if (hours < 10) hours_string = "0" + to_string(hours);
else hours_string = to_string(hours); else hours_string = to_string(hours);
string minutes_string; string minutes_string;
if (minutes < 10) minutes_string = "0" + to_string(minutes); if (minutes < 10) minutes_string = "0" + to_string(minutes);
else minutes_string = to_string(minutes); else minutes_string = to_string(minutes);
string seconds_string; string seconds_string;
if (seconds < 10) seconds_string = "0" + to_string(seconds); if (seconds < 10) seconds_string = "0" + to_string(seconds);
else seconds_string = to_string(seconds); else seconds_string = to_string(seconds);
std::stringstream date; std::stringstream date;
date date
<< "[" << "["
<< day_string << "/" << day_string << "/"
<< month_string << "/" << month_string << "/"
<< 1900 + ltm->tm_year << " " << 1900 + ltm->tm_year << " "
<< hours_string << ":" << hours_string << ":"
<< minutes_string << ":" << minutes_string << ":"
<< seconds_string << seconds_string
<< "] "; << "] ";
return date; return date;
} }
/* /*
void info(char obj[]) { void info(char obj[]) {
if (level <= 2) if (level <= 2)
cout << getDate().str() << "\u001b[36m" << "[INFO]" << "\u001b[0m" << " " << obj << endl; cout << getDate().str() << "\u001b[36m" << "[INFO]" << "\u001b[0m" << " " << obj << endl;
} }
void error(char obj[]) { void error(char obj[]) {
if (level <= 4) if (level <= 4)
cout << getDate().str() << "\x1B[31m" << "[ERRO]" << "\u001b[0m" << " " << obj << endl; cout << getDate().str() << "\x1B[31m" << "[ERRO]" << "\u001b[0m" << " " << obj << endl;
} }
void warn(char obj[]) { void warn(char obj[]) {
if (level <= 3) if (level <= 3)
cout << getDate().str() << "\u001b[33m" << "[WARN]" << "\u001b[0m" << " " << obj << endl; cout << getDate().str() << "\u001b[33m" << "[WARN]" << "\u001b[0m" << " " << obj << endl;
} }
void debug(char obj[]) { void debug(char obj[]) {
if (level <= 1) if (level <= 1)
cout << getDate().str() << "\u001b[35m" << "[DBUG]" << "\u001b[0m" << " " << obj << endl; cout << getDate().str() << "\u001b[35m" << "[DBUG]" << "\u001b[0m" << " " << obj << endl;
}*/ }*/

View File

@ -1,41 +1,41 @@
// //
// Created by jojos38 on 28.01.2020. // Created by jojos38 on 28.01.2020.
// //
#ifndef LOGGER_H #ifndef LOGGER_H
#define LOGGER_H #define LOGGER_H
#include <iostream> #include <iostream>
#include <ctime> #include <ctime>
#include <sstream> #include <sstream>
#include <string.h> #include <string.h>
using namespace std; using namespace std;
extern int loggerlevel; extern int loggerlevel;
stringstream getDate(); stringstream getDate();
void setLoggerLevel(char level_string[]); void setLoggerLevel(char level_string[]);
template<typename T> template<typename T>
void info(const T& toPrint) { void info(const T& toPrint) {
if (loggerlevel <= 2) if (loggerlevel <= 2)
cout << getDate().str() << "\u001b[36m" << "[INFO]" << "\u001b[0m" << " " << toPrint << endl; cout << getDate().str() << "[INFO] " << toPrint << endl;
} }
template<typename T> template<typename T>
void error(const T& toPrint) { void error(const T& toPrint) {
if (loggerlevel <= 4) if (loggerlevel <= 4)
cout << getDate().str() << "\x1B[31m" << "[ERRO]" << "\u001b[0m" << " " << toPrint << endl; cout << getDate().str() "[ERRO] " << toPrint << endl;
} }
template<typename T> template<typename T>
void warn(const T& toPrint) { void warn(const T& toPrint) {
if (loggerlevel <= 3) if (loggerlevel <= 3)
cout << getDate().str() << "\u001b[33m" << "[WARN]" << "\u001b[0m" << " " << toPrint << endl; cout << getDate().str() << "[WARN] " << toPrint << endl;
} }
template<typename T> template<typename T>
void debug(const T& toPrint) { void debug(const T& toPrint) {
if (loggerlevel <= 1) if (loggerlevel <= 1)
cout << getDate().str() << "\u001b[35m" << "[DBUG]" << "\u001b[0m" << " " << toPrint << endl; cout << getDate().str() << "[DBUG] " << toPrint << endl;
} }
#endif // LOGGER_H #endif // LOGGER_H

View File

@ -1,46 +1,46 @@
// //
// Created by Anonymous275 on 28.01.2020. // Created by Anonymous275 on 28.01.2020.
// //
#include "main.h" #include "main.h"
#include <iostream> #include <iostream>
#include <string> #include <string>
#include "enet/enet.h" #include "enet/enet.h"
#include "network.h" #include "network.h"
#include "logger.h" #include "logger.h"
using namespace std; //nameSpace STD using namespace std; //nameSpace STD
void DebugData(); void DebugData();
void ParseConfig(); void ParseConfig();
bool Debug = false; bool Debug = false;
int Port = 30813; int Port = 30813;
string MapName = "levels/gridmap/level.json"; string MapName = "levels/gridmap/level.json";
string ServerName = "BeamNG-MP FTW"; string ServerName = "BeamNG-MP FTW";
//Entry //Entry
int main() { int main() {
ParseConfig(); ParseConfig();
if(Debug){ //checks if debug is on if(Debug){ //checks if debug is on
DebugData(); //Prints Debug Data DebugData(); //Prints Debug Data
} }
setLoggerLevel("ALL"); setLoggerLevel("ALL");
startRUDP("localhost", 30814); startRUDP("localhost", 30814);
} }
void DebugData(){ void DebugData(){
cout << "Debug : true" << "\n"; cout << "Debug : true" << "\n";
cout << "Port : " << Port << "\n"; cout << "Port : " << Port << "\n";
cout << "MapName : " << MapName << "\n"; cout << "MapName : " << MapName << "\n";
cout << "ServerName : " << ServerName << "\n"; cout << "ServerName : " << ServerName << "\n";
} }
void SetMainValues(bool D, int P,string Name,string serverName){ void SetMainValues(bool D, int P,string Name,string serverName){
Debug = D; Debug = D;
Port = P; Port = P;
MapName = Name; MapName = Name;
ServerName = serverName; ServerName = serverName;
} }

View File

@ -1,12 +1,12 @@
// //
// Created by Антон on 28.01.2020. // Created by Антон on 28.01.2020.
// //
#ifndef BEAMNG_MP_SERVER_MAIN_H #ifndef BEAMNG_MP_SERVER_MAIN_H
#define BEAMNG_MP_SERVER_MAIN_H #define BEAMNG_MP_SERVER_MAIN_H
class main { class main {
}; };
#endif //BEAMNG_MP_SERVER_MAIN_H #endif //BEAMNG_MP_SERVER_MAIN_H

View File

@ -1,68 +1,68 @@
// //
// Created by jojos38 on 28.01.2020. // Created by jojos38 on 28.01.2020.
// //
#include <iostream> #include <iostream>
#include "network.h" #include "network.h"
#include "logger.h" #include "logger.h"
using namespace std; using namespace std;
#define EXIT_SUCCESS /*implementation defined*/ #define EXIT_SUCCESS /*implementation defined*/
#define EXIT_FAILURE /*implementation defined*/ #define EXIT_FAILURE /*implementation defined*/
void listen(); void listen();
ENetAddress address; ENetAddress address;
ENetHost* server; ENetHost* server;
ENetEvent event; ENetEvent event;
void startRUDP(char host[], int port) { void startRUDP(char host[], int port) {
// ---------- Initializing ENet ---------- // // ---------- Initializing ENet ---------- //
if (enet_initialize() != 0) { if (enet_initialize() != 0) {
fprintf(stderr, "An error occurred while initializing ENet.\n"); fprintf(stderr, "An error occurred while initializing ENet.\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
atexit(enet_deinitialize); atexit(enet_deinitialize);
info("ENet initialized"); info("ENet initialized");
// ---------- Starting server ---------- // // ---------- Starting server ---------- //
enet_address_set_host(&address, host); // Set host enet_address_set_host(&address, host); // Set host
address.port = port; // Set port address.port = port; // Set port
server = enet_host_create( server = enet_host_create(
&address /* the address to bind the server host to */, &address /* the address to bind the server host to */,
32 /* allow up to 32 clients and/or outgoing connections */, 32 /* allow up to 32 clients and/or outgoing connections */,
2 /* allow up to 2 channels to be used, 0 and 1 */, 2 /* allow up to 2 channels to be used, 0 and 1 */,
0 /* assume any amount of incoming bandwidth */, 0 /* assume any amount of incoming bandwidth */,
0 /* assume any amount of outgoing bandwidth */); 0 /* assume any amount of outgoing bandwidth */);
if (server == NULL) { if (server == NULL) {
fprintf(stderr, "An error occurred while trying to create an ENet server host.\n"); fprintf(stderr, "An error occurred while trying to create an ENet server host.\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
info("Server started"); info("Server started");
listen(); listen();
} }
void listen() { void listen() {
info("Listening for packets..."); info("Listening for packets...");
while (true) { while (true) {
switch (event.type) { switch (event.type) {
case ENET_EVENT_TYPE_CONNECT: case ENET_EVENT_TYPE_CONNECT:
printf("A new client connected from %x:%u.\n", event.peer->address.host, event.peer->address.port); printf("A new client connected from %x:%u.\n", event.peer->address.host, event.peer->address.port);
/* Store any relevant client information here. */ /* Store any relevant client information here. */
event.peer->data = "Client information"; event.peer->data = "Client information";
break; break;
case ENET_EVENT_TYPE_RECEIVE: case ENET_EVENT_TYPE_RECEIVE:
printf("A packet of length %u containing %s was received from %s on channel %u.\n", printf("A packet of length %u containing %s was received from %s on channel %u.\n",
event.packet->dataLength, event.packet->dataLength,
event.packet->data, event.packet->data,
event.peer->data, event.peer->data,
event.channelID); event.channelID);
/* Clean up the packet now that we're done using it. */ /* Clean up the packet now that we're done using it. */
enet_packet_destroy(event.packet); enet_packet_destroy(event.packet);
break; break;
case ENET_EVENT_TYPE_DISCONNECT: case ENET_EVENT_TYPE_DISCONNECT:
printf("%s disconnected.\n", event.peer->data); printf("%s disconnected.\n", event.peer->data);
/* Reset the peer's client information. */ /* Reset the peer's client information. */
event.peer->data = NULL; event.peer->data = NULL;
} }
} }
} }

View File

@ -1,15 +1,15 @@
// //
// Created by jojos38 on 28.01.2020. // Created by jojos38 on 28.01.2020.
// //
#ifndef NETWORK_H #ifndef NETWORK_H
#define NETWORK_H #define NETWORK_H
#include "enet/enet.h" #include "enet/enet.h"
#pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"winmm.lib") #pragma comment(lib,"winmm.lib")
#pragma comment(lib,"enet.lib") #pragma comment(lib,"enet.lib")
void startRUDP(char host[], int port); void startRUDP(char host[], int port);
#endif // NETWORK_H #endif // NETWORK_H