-/***********************************************************
-* Rocks'n'Diamonds -- McDuffin Strikes Back! *
-*----------------------------------------------------------*
-* (c) 1995-98 Artsoft Entertainment *
-* Holger Schemel *
-* Oststrasse 11a *
-* 33604 Bielefeld *
-* phone: ++49 +521 290471 *
-* email: aeglos@valinor.owl.de *
-*----------------------------------------------------------*
-* netserv.h *
-***********************************************************/
+// ============================================================================
+// Rocks'n'Diamonds - McDuffin Strikes Back!
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+// Holger Schemel
+// info@artsoft.org
+// http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// netserv.h
+// ============================================================================
#ifndef NETSERV_H
#define NETSERV_H
-#define DEFAULTPORT 19504
+#include "main.h"
-#define PROT_VERS_1 1
-#define PROT_VERS_2 2
-#define PROT_VERS_3 0
+#define DEFAULT_SERVER_PORT 19504
+
+#define PROTOCOL_VERSION_MAJOR 2
+#define PROTOCOL_VERSION_MINOR 0
+#define PROTOCOL_VERSION_PATCH 0
#define OP_PROTOCOL_VERSION 1
#define OP_BAD_PROTOCOL_VERSION 2
#define OP_YOUR_NUMBER 3
#define OP_NUMBER_WANTED 4
-#define OP_NICKNAME 5
+#define OP_PLAYER_NAME 5
#define OP_PLAYER_CONNECTED 6
#define OP_PLAYER_DISCONNECTED 7
#define OP_START_PLAYING 8
#define OP_PAUSE_PLAYING 9
#define OP_CONTINUE_PLAYING 10
#define OP_STOP_PLAYING 11
-#define OP_MOVE_FIGURE 12
-
-#define OP_LOST 13
-#define OP_CLEAR 14
-#define OP_LINES 15
-#define OP_GROW 16
-#define OP_MODE 17
-#define OP_LEVEL 18
-#define OP_BOT 19
-#define OP_KILL 20
-#define OP_BADVERS 21
-#define OP_MSG 22
-#define OP_YOUARE 23
-#define OP_LINESTO 24
-#define OP_WON 25
-#define OP_ZERO 26
+#define OP_MOVE_PLAYER 12
+#define OP_BROADCAST_MESSAGE 13
+#define OP_LEVEL_FILE 14
#define MAX_BUFFER_SIZE 4096
+#define MAX_PACKET_SIZE 1048576
+
+
+struct NetworkBuffer
+{
+ unsigned int max_size;
+ unsigned int size;
+ unsigned int pos;
+
+ byte *buffer;
+};
+
+
+int getNetwork8BitInteger(byte *);
+int putNetwork8BitInteger(byte *, int);
+int getNetwork16BitInteger(byte *);
+int putNetwork16BitInteger(byte *, int);
+int getNetwork32BitInteger(byte *);
+int putNetwork32BitInteger(byte *, int);
+char *getNetworkString(byte *);
+int putNetworkString(byte *, char *);
+
+struct NetworkBuffer *newNetworkBuffer(void);
+void initNetworkBufferForReceiving(struct NetworkBuffer *);
+void initNetworkBufferForReading(struct NetworkBuffer *);
+void initNetworkBufferForWriting(struct NetworkBuffer *, int, int);
+
+int receiveNetworkBufferBytes(struct NetworkBuffer *, TCPsocket, int);
+int receiveNetworkBufferPacket(struct NetworkBuffer *, TCPsocket);
+
+int getNetworkBuffer8BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer8BitInteger(struct NetworkBuffer *, int);
+int getNetworkBuffer16BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer16BitInteger(struct NetworkBuffer *, int);
+int getNetworkBuffer32BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer32BitInteger(struct NetworkBuffer *, int);
+char *getNetworkBufferString(struct NetworkBuffer *);
+void putNetworkBufferString(struct NetworkBuffer *, char *);
+int getNetworkBufferFile(struct NetworkBuffer *, char *);
+int putNetworkBufferFile(struct NetworkBuffer *, char *);
+
+void dumpNetworkBuffer(struct NetworkBuffer *);
+int NetworkServerThread(void *);
void NetworkServer(int, int);
#endif