fixed bug with player moving when releasing one of several pressed snap keys
[rocksndiamonds.git] / src / netserv.h
index 55ebf8e901d649139c997b38ca5f06bb31a6a65b..3eee34e69260a36294e358e591174ab686a7f9e0 100644 (file)
@@ -1,55 +1,85 @@
-/***********************************************************
-*  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