forked from mirror/OpenTTD
(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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user