--- deliantra/server/include/network.h 2007/06/09 22:54:03 1.13
+++ deliantra/server/include/network.h 2007/07/29 19:11:47 1.17
@@ -1,23 +1,22 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
*
* Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
* Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
+ * Crossfire TRT is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
* The authors can be reached via e-mail to
*/
@@ -48,10 +47,10 @@
/* Maximum size of any packet we expect.
*
- * The size must be the same in the server and the client (stupid), and its also NOT
- * the maximum buffer size as one would expect, but the maximum buffer size + 1.
+ * The size must be the same in the server and the client (stupid).
+ * TODO: make the actual network configurable per clietn and use 2**16.
*/
-#define MAXSOCKBUF 10240
+#define MAXSOCKBUF 10239
#define CS_QUERY_YESNO 0x1 /* Yes/no question */
#define CS_QUERY_SINGLECHAR 0x2 /* Single character response expected */
@@ -177,13 +176,17 @@
#define NDI_TAN 12 /* Khaki */
#define NDI_MAX_COLOR 12 /* Last value in */
-#define NDI_COLOR_MASK 0xff /* Gives lots of room for expansion - we are */
+#define NDI_COLOR_MASK 0x1f /* Gives lots of room for expansion - we are */
/* using an int anyways, so we have the space */
/* to still do all the flags */
-
-#define NDI_UNIQUE 0x100 /* Print this out immediately, don't buffer */
-#define NDI_ALL 0x200 /* Inform all players of this message */
+#define NDI_REPLY 0x20 // is a direct reply to a user command
+#define NDI_NOCREATE 0x40 // do not create a tba if one doesn't exist
+#define NDI_CLIENT_MASK 0x7f // what the client is allowed to see
+
+#define NDI_UNIQUE 0x1000 /* Print this out immediately, don't buffer */
+#define NDI_ALL 0x2000 /* Inform all players of this message */
+#define NDI_DEF 0x4000 // ignore colour for channel protocol
/* Flags for the item command */
enum {a_none, a_readied, a_wielded, a_worn, a_active, a_applied};
@@ -266,6 +269,15 @@
uint32 val;
ber32 (uint32 val) : val (val) { }
+
+ static int encoded_size (uint32 val)
+ {
+ if (val >= (1 << 7*4)) return 5;
+ if (val >= (1 << 7*3)) return 4;
+ if (val >= (1 << 7*2)) return 3;
+ if (val >= (1 << 7*1)) return 2;
+ return 1;
+ }
};
/* Contains the base information we use to make up a packet we want to send. */