projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20040111-3-src
[rocksndiamonds.git]
/
src
/
netserv.c
diff --git
a/src/netserv.c
b/src/netserv.c
index 6a2479e53df35a2f638533ab85f57065701029bf..71834c3b1f17dbc8be3a778149e0db9ea569570e 100644
(file)
--- a/
src/netserv.c
+++ b/
src/netserv.c
@@
-1,17
+1,17
@@
/***********************************************************
/***********************************************************
-*
Rocks'n'Diamonds -- McDuffin Strikes Back!
*
+*
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
*
+*
(c) 1995-2002 Artsoft Entertainment
*
+*
Holger Schemel
*
+*
Detmolder Strasse 189
*
+*
33604 Bielefeld
*
+*
Germany
*
+*
e-mail: info@artsoft.org
*
*----------------------------------------------------------*
*----------------------------------------------------------*
-*
network.c
*
+*
network.c
*
***********************************************************/
***********************************************************/
-#include "libgame/
libgame
.h"
+#include "libgame/
platform
.h"
#if defined(PLATFORM_UNIX)
#if defined(PLATFORM_UNIX)
@@
-20,15
+20,12
@@
#include <signal.h>
#include <sys/socket.h>
#include <errno.h>
#include <signal.h>
#include <sys/socket.h>
#include <errno.h>
-#include <string.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <netdb.h>
-#if 0
#include "libgame/libgame.h"
#include "libgame/libgame.h"
-#endif
#include "netserv.h"
#include "netserv.h"
@@
-92,8
+89,9
@@
static void broadcast(struct NetworkServerPlayerInfo *except,
realbuffer[0] = realbuffer[1] = realbuffer[2] = 0;
realbuffer[3] = (unsigned char)len;
realbuffer[0] = realbuffer[1] = realbuffer[2] = 0;
realbuffer[3] = (unsigned char)len;
- for (player=first_player; player; player=player->next)
- if (player != except && (player->active || !activeonly) && player->introduced)
+ for (player = first_player; player; player = player->next)
+ if (player != except && player->introduced &&
+ (player->active || !activeonly))
addtobuffer(player, realbuffer, 4 + len);
}
addtobuffer(player, realbuffer, 4 + len);
}
@@
-116,7
+114,7
@@
static void RemovePlayer(struct NetworkServerPlayerInfo *player)
first_player = player->next;
else
{
first_player = player->next;
else
{
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
if (v->next && v->next == player)
{
{
if (v->next && v->next == player)
{
@@
-152,6
+150,7
@@
static void AddPlayer(int fd)
{
struct NetworkServerPlayerInfo *player, *v;
unsigned char nxn;
{
struct NetworkServerPlayerInfo *player, *v;
unsigned char nxn;
+ boolean again = TRUE;
player = checked_malloc(sizeof (struct NetworkServerPlayerInfo));
player = checked_malloc(sizeof (struct NetworkServerPlayerInfo));
@@
-169,9
+168,28
@@
static void AddPlayer(int fd)
nxn = 1;
nxn = 1;
+#if 1
+ while (again)
+ {
+ again = FALSE;
+ v = player->next;
+
+ while (v)
+ {
+ if (v->number == nxn)
+ {
+ nxn++;
+
+ again = TRUE;
+ break;
+ }
+ v = v->next;
+ }
+ }
+#else
again:
v = player->next;
again:
v = player->next;
- while(v)
+ while
(v)
{
if (v->number == nxn)
{
{
if (v->number == nxn)
{
@@
-180,6
+198,7
@@
static void AddPlayer(int fd)
}
v = v->next;
}
}
v = v->next;
}
+#endif
player->number = nxn;
if (options.verbose)
player->number = nxn;
if (options.verbose)
@@
-236,7
+255,7
@@
static void Handle_OP_NUMBER_WANTED(struct NetworkServerPlayerInfo *player)
Error(ERR_NETWORK_SERVER, "client %d (%s) wants to switch to # %d",
player->number, player->player_name, nr_wanted);
Error(ERR_NETWORK_SERVER, "client %d (%s) wants to switch to # %d",
player->number, player->player_name, nr_wanted);
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
if (v->number == nr_wanted)
{
{
if (v->number == nr_wanted)
{
@@
-284,7
+303,7
@@
static void Handle_OP_PLAYER_NAME(struct NetworkServerPlayerInfo *player,
len=16;
memcpy(player->player_name, &buffer[2], len-2);
player->player_name[len-2] = 0;
len=16;
memcpy(player->player_name, &buffer[2], len-2);
player->player_name[len-2] = 0;
- for (i
=0; i<len-
2; i++)
+ for (i
= 0; i < len -
2; i++)
{
if (player->player_name[i] < ' ' ||
((unsigned char)(player->player_name[i]) > 0x7e &&
{
if (player->player_name[i] < ' ' ||
((unsigned char)(player->player_name[i]) > 0x7e &&
@@
-310,7
+329,7
@@
static void Handle_OP_PLAYER_NAME(struct NetworkServerPlayerInfo *player,
if (!player->introduced)
{
if (!player->introduced)
{
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
if (v != player && v->introduced)
{
{
if (v != player && v->introduced)
{
@@
-339,7
+358,7
@@
static void Handle_OP_START_PLAYING(struct NetworkServerPlayerInfo *player)
(buffer[4] << 8) + buffer[5],
&buffer[6]);
(buffer[4] << 8) + buffer[5],
&buffer[6]);
- for (w
=first_player; w; w=
w->next)
+ for (w
= first_player; w; w =
w->next)
if (w->introduced)
w->active = 1;
if (w->introduced)
w->active = 1;
@@
-347,7
+366,7
@@
static void Handle_OP_START_PLAYING(struct NetworkServerPlayerInfo *player)
ServerFrameCounter = 0;
/* reset player actions */
ServerFrameCounter = 0;
/* reset player actions */
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
v->action = 0;
v->action_received = FALSE;
{
v->action = 0;
v->action_received = FALSE;
@@
-380,14
+399,14
@@
static void Handle_OP_STOP_PLAYING(struct NetworkServerPlayerInfo *player)
broadcast(NULL, 2, 0);
}
broadcast(NULL, 2, 0);
}
-static void Handle_OP_MOVE_
FIGURE
(struct NetworkServerPlayerInfo *player)
+static void Handle_OP_MOVE_
PLAYER
(struct NetworkServerPlayerInfo *player)
{
struct NetworkServerPlayerInfo *v;
int last_client_nr = 0;
int i;
/* store player action */
{
struct NetworkServerPlayerInfo *v;
int last_client_nr = 0;
int i;
/* store player action */
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
if (v->number == player->number)
{
{
if (v->number == player->number)
{
@@
-397,7
+416,7
@@
static void Handle_OP_MOVE_FIGURE(struct NetworkServerPlayerInfo *player)
}
/* check if server received action from each player */
}
/* check if server received action from each player */
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
if (!v->action_received)
return;
{
if (!v->action_received)
return;
@@
-407,11
+426,11
@@
static void Handle_OP_MOVE_FIGURE(struct NetworkServerPlayerInfo *player)
}
/* initialize all player actions to zero */
}
/* initialize all player actions to zero */
- for (i
=0; i<
last_client_nr; i++)
+ for (i
= 0; i <
last_client_nr; i++)
buffer[6 + i] = 0;
/* broadcast actions of all players to all players */
buffer[6 + i] = 0;
/* broadcast actions of all players to all players */
- for (v
=first_player; v; v=
v->next)
+ for (v
= first_player; v; v =
v->next)
{
buffer[6 + v->number-1] = v->action;
v->action = 0;
{
buffer[6 + v->number-1] = v->action;
v->action = 0;
@@
-480,8
+499,8
@@
void NetworkServer(int port, int serveronly)
if (is_daemon)
{
/* become a daemon, breaking all ties with the controlling terminal */
if (is_daemon)
{
/* become a daemon, breaking all ties with the controlling terminal */
- options.verbose =
0
;
- for (i
=0; i<
255; i++)
+ options.verbose =
FALSE
;
+ for (i
= 0; i <
255; i++)
{
if (i != lfd)
close(i);
{
if (i != lfd)
close(i);
@@
-507,11
+526,11
@@
void NetworkServer(int port, int serveronly)
PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, PROTOCOL_VERSION_3);
}
PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, PROTOCOL_VERSION_3);
}
- while(1)
+ while
(1)
{
interrupt = 0;
{
interrupt = 0;
- for (player
=first_player; player; player=
player->next)
+ for (player
= first_player; player; player =
player->next)
flushuser(player);
FD_ZERO(&fds);
flushuser(player);
FD_ZERO(&fds);
@@
-638,8
+657,8
@@
void NetworkServer(int port, int serveronly)
Handle_OP_STOP_PLAYING(player);
break;
Handle_OP_STOP_PLAYING(player);
break;
- case OP_MOVE_
FIGURE
:
- Handle_OP_MOVE_
FIGURE
(player);
+ case OP_MOVE_
PLAYER
:
+ Handle_OP_MOVE_
PLAYER
(player);
break;
case OP_BROADCAST_MESSAGE:
break;
case OP_BROADCAST_MESSAGE: