projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed network games, part 2: set player focus after setting local player
[rocksndiamonds.git]
/
src
/
network.c
diff --git
a/src/network.c
b/src/network.c
index 2946240128ce35ae379715dbd54f67f863b333e4..afce79981a9061ab4ec0dc7ac1dba355966e9072 100644
(file)
--- a/
src/network.c
+++ b/
src/network.c
@@
-98,7
+98,7
@@
char *getNetworkPlayerName(int player_nr)
return("you");
else
for (player = &first_player; player; player = player->next)
return("you");
else
for (player = &first_player; player; player = player->next)
- if (player->nr == player_nr &&
player->name && strlen(player->name)
)
+ if (player->nr == player_nr &&
strlen(player->name) > 0
)
return(player->name);
return(EMPTY_PLAYER_NAME);
return(player->name);
return(EMPTY_PLAYER_NAME);
@@
-275,11
+275,15
@@
static void Handle_OP_YOUR_NUMBER()
if (old_local_player != new_local_player)
{
if (old_local_player != new_local_player)
{
- /*
copy existing
player settings and change to new player */
+ /*
set relevant
player settings and change to new player */
- *new_local_player = *old_local_player;
- old_local_player->connected = FALSE;
local_player = new_local_player;
local_player = new_local_player;
+
+ old_local_player->connected_locally = FALSE;
+ new_local_player->connected_locally = TRUE;
+
+ old_local_player->connected_network = FALSE;
+ new_local_player->connected_network = TRUE;
}
if (first_player.nr > MAX_PLAYERS)
}
if (first_player.nr > MAX_PLAYERS)
@@
-313,17
+317,22
@@
static void Handle_OP_NUMBER_WANTED()
if (old_client_nr != new_client_nr)
{
if (old_client_nr != new_client_nr)
{
- /*
copy existing
player settings and change to new player */
+ /*
set relevant
player settings and change to new player */
-
*new_player = *old_player
;
-
old_player->connected = FALS
E;
+
old_player->connected_network = FALSE
;
+
new_player->connected_network = TRU
E;
}
player = getNetworkPlayer(old_client_nr);
player->nr = new_client_nr;
if (old_player == local_player) /* local player switched */
}
player = getNetworkPlayer(old_client_nr);
player->nr = new_client_nr;
if (old_player == local_player) /* local player switched */
+ {
local_player = new_player;
local_player = new_player;
+
+ old_player->connected_locally = FALSE;
+ new_player->connected_locally = TRUE;
+ }
}
else if (old_client_nr == first_player.nr) /* failed -- local player? */
{
}
else if (old_client_nr == first_player.nr) /* failed -- local player? */
{
@@
-375,13
+384,14
@@
static void Handle_OP_PLAYER_CONNECTED()
player->name[0] = '\0';
player->next = NULL;
player->name[0] = '\0';
player->next = NULL;
- stored_player[new_index_nr].connected = TRUE;
+ stored_player[new_index_nr].connected
_network
= TRUE;
}
static void Handle_OP_PLAYER_DISCONNECTED()
{
struct NetworkClientPlayerInfo *player, *player_disconnected;
int player_nr = (int)buffer[0];
}
static void Handle_OP_PLAYER_DISCONNECTED()
{
struct NetworkClientPlayerInfo *player, *player_disconnected;
int player_nr = (int)buffer[0];
+ int index_nr = player_nr - 1;
printf("OP_PLAYER_DISCONNECTED: %d\n", player_nr);
player_disconnected = getNetworkPlayer(player_nr);
printf("OP_PLAYER_DISCONNECTED: %d\n", player_nr);
player_disconnected = getNetworkPlayer(player_nr);
@@
-392,6
+402,9
@@
static void Handle_OP_PLAYER_DISCONNECTED()
if (player->next == player_disconnected)
player->next = player_disconnected->next;
free(player_disconnected);
if (player->next == player_disconnected)
player->next = player_disconnected->next;
free(player_disconnected);
+
+ stored_player[index_nr].connected_locally = FALSE;
+ stored_player[index_nr].connected_network = FALSE;
}
static void Handle_OP_START_PLAYING()
}
static void Handle_OP_START_PLAYING()