(svn r1108) -Fix: [Network] Fixed problem around slow clients:

They joined, they got the map, but it took some time before the new 
player was created. In this time a player could do stuff, causing a 
player-id-mismatch, and the player was kicked out. Now a player get's a 
nice GUI which says: registering.. When that is gone, the player is 
joined and can play safely. Tnx to Moriarty for bugging me with this bug ;)
This commit is contained in:
truelight
2004-12-15 21:13:52 +00:00
parent 9595ee80e3
commit fa1f026367
6 changed files with 30 additions and 8 deletions

View File

@@ -643,6 +643,13 @@ int32 CmdPlayerCtrl(int x, int y, uint32 flags, uint32 p1, uint32 p2)
switch(p1 & 0xff) {
case 0: // make new player
p = DoStartupNewPlayer(false);
#ifdef ENABLE_NETWORK
if (_networking && !_network_server && _local_player == OWNER_SPECTATOR)
/* In case we are a client joining a server... */
DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
#endif /* ENABLE_NETWORK */
if (p != NULL) {
if (_local_player == OWNER_SPECTATOR) {
_local_player = p->index;