--- deliantra/server/include/network.h 2009/11/05 15:57:16 1.25
+++ deliantra/server/include/network.h 2018/11/17 23:33:18 1.37
@@ -1,24 +1,25 @@
/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
- *
- * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
- * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
- * Copyright (©) 1992,2007 Frank Tore Johansen
- *
+ *
+ * Copyright (©) 2018 Marc Alexander Lehmann / the Deliantra team
+ * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
+ * Copyright (©) 2002 Mark Wedel & Crossfire Development Team
+ * Copyright (©) 1992 Frank Tore Johansen
+ *
* Deliantra is free software: you can redistribute it and/or modify it under
* the terms of the Affero 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.
- *
+ *
* You should have received a copy of the Affero GNU General Public License
* and the GNU General Public License along with this program. If not, see
* .
- *
+ *
* The authors can be reached via e-mail to
*/
@@ -40,7 +41,6 @@
* talking about the same values.
*/
-
#ifndef NETWORK_H
#define NETWORK_H
@@ -48,6 +48,8 @@
#include
+#include "compiler.h"
+
/* Maximum size of any packet we expect.
*
* The size must be the same in the server and the client (stupid).
@@ -59,7 +61,7 @@
#define CS_QUERY_SINGLECHAR 0x2 /* Single character response expected */
#define CS_QUERY_HIDEINPUT 0x4 /* Hide input being entered */
-/* These are multiplication values that should be used when changing
+/* These are multiplication values that should be used when changing
* floats to ints, and vice version. MULTI is integer representatin
* (float to int), MULTF is float, for going from int to float.
*/
@@ -121,22 +123,6 @@
#define CS_STAT_RES_HOLYWORD 116
#define CS_STAT_RES_BLIND 117
-/* Start & end of skill experience + skill level, inclusive. */
-#define CS_STAT_SKILLEXP_START 118
-#define CS_STAT_SKILLEXP_END 129
-#define CS_STAT_SKILLEXP_AGILITY 118
-#define CS_STAT_SKILLEXP_AGLEVEL 119
-#define CS_STAT_SKILLEXP_PERSONAL 120
-#define CS_STAT_SKILLEXP_PELEVEL 121
-#define CS_STAT_SKILLEXP_MENTAL 122
-#define CS_STAT_SKILLEXP_MELEVEL 123
-#define CS_STAT_SKILLEXP_PHYSIQUE 124
-#define CS_STAT_SKILLEXP_PHLEVEL 125
-#define CS_STAT_SKILLEXP_MAGIC 126
-#define CS_STAT_SKILLEXP_MALEVEL 127
-#define CS_STAT_SKILLEXP_WISDOM 128
-#define CS_STAT_SKILLEXP_WILEVEL 129
-
/* CS_STAT_SKILLINFO is used as the starting index point. Skill number->name
* map is generated dynamically for the client, so a bunch of entries will
* be used here. CS_NUM_SKILLS does not match how many skills there really
@@ -193,45 +179,28 @@
/* The flag values sent by the updspell command */
#define UPD_SP_MANA 0x01
#define UPD_SP_GRACE 0x02
-#define UPD_SP_DAMAGE 0x04
+#define UPD_SP_LEVEL 0x04 // was UPD_SP_DAMAGE in <= server 2.93, client 2.10
#define SOUND_NORMAL 0
#define SOUND_SPELL 1
//-GPL
-struct data
+template
+struct databuf
{
unsigned int len;
const void *ptr;
- data (const void *ptr, int len) : len (len), ptr (ptr) { }
- data (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
- data (shstr_tmp sh) : len (sh.length ()), ptr ((void *)&sh) { }
- data (dynbuf &buf) : len (buf.size ()), ptr (buf.linearise ()) { }
+ databuf (const void *ptr, int len) : len (len), ptr (ptr) { }
+ databuf (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
+ databuf (shstr_tmp sh) : len (sh.length ()), ptr ((void *)&sh) { }
+ databuf (dynbuf &buf) : len (buf.size ()), ptr (buf.linearise ()) { }
};
-struct data8
-{
- unsigned int len;
- const void *ptr;
-
- data8 (const void *ptr, int len) : len (len), ptr (ptr) { }
- data8 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
- data8 (shstr_tmp sh) : len (sh.length ()), ptr ((void *)&sh) { }
- data8 (dynbuf &buf) : len (buf.size ()), ptr (buf.linearise ()) { }
-};
-
-struct data16
-{
- unsigned int len;
- const void *ptr;
-
- data16 (const void *ptr, int len) : len (len), ptr (ptr) { }
- data16 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
- data16 (shstr_tmp sh) : len (sh.length ()), ptr ((void *)&sh) { }
- data16 (dynbuf &buf) : len (buf.size ()), ptr (buf.linearise ()) { }
-};
+using data_n = databuf<0>;
+using data8 = databuf<1>;
+using data16 = databuf<2>;
struct ber32
{
@@ -293,17 +262,17 @@
// checked
packet &operator <<(const ber32 v);
- packet &operator <<(const data &v);
+ packet &operator <<(const data_n &v);
packet &operator <<(const data8 &v);
packet &operator <<(const data16 &v);
packet &operator <<(const char *v);
- packet &operator <<(shstr_tmp sh) { return *this << data (sh); }
- packet &operator <<(const std::string &s) { return *this << data (s.data (), s.size ()); }
+ packet &operator <<(shstr_tmp sh) { return *this << data_n (sh); }
+ packet &operator <<(const std::string &s) { return *this << data_n (s.data (), s.size ()); }
void vprintf (const char *format, va_list ap);
- void printf (const char *format, ...)
+ void printf (const char *format, ...) ecb_attribute ((format (printf, 2, 3)))
{
va_list ap;
va_start (ap, format);