--- deliantra/server/socket/init.C 2010/10/16 22:51:52 1.68
+++ deliantra/server/socket/init.C 2018/12/01 20:22:13 1.78
@@ -1,22 +1,23 @@
/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
- *
- * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
- *
+ *
+ * Copyright (©) 2017,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
+ *
* 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
*/
@@ -136,21 +137,16 @@
max_rate = 100000 / (1000000 / MAX_TIME); // ~1mbit is assumed per default
/* Do this so we don't send a face command for the client for
- * this face. Face 0 is sent to the client to say clear
- * face information.
+ * this face. Face 0 is sent to the client to set meta data
+ * for following faces in fx.
*/
faces_sent[0] = true;
- fx_want [FT_FACE] = true; // all clients must support image faces
+ fx_want [FT_IMAGE] = true; // all clients must support image faces
socket_ev.set (fd, EV_READ);
socket_ev.prio (2); // one higher than the ticker priority
socket_ev.start ();
- // initialisation done, kick it!
- INVOKE_CLIENT (CONNECT, this);
-
- flush ();
-
reset_stats ();
clients.insert (this);
@@ -160,10 +156,23 @@
{
clients.erase (this);
+ while (!ixface.empty ())
+ ix_pop ();
+
mapinfo_queue_clear ();
free (stats.range);
free (stats.title);
free (host);
+ free (ws_inbuf);
+}
+
+void
+client::run ()
+{
+ // initialisation done, kick it!
+ INVOKE_CLIENT (CONNECT, this);
+
+ flush ();
}
void
@@ -198,10 +207,10 @@
* send new values to the client, as things like exp start
* at zero.
*/
- for (int i = 0; i < NUM_SKILLS; i++)
+ for (int i = 0; i < ecb_array_length (last_skill_exp); i++)
last_skill_exp[i] = -1;
- for (int i = 0; i < NROFATTACKS; i++)
+ for (int i = 0; i < ecb_array_length (last_resist); i++)
last_resist[i] = -1;
last_weapon_sp = -1;