diff options
author | truelight <truelight@openttd.org> | 2004-12-16 11:36:00 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2004-12-16 11:36:00 +0000 |
commit | dccd3adb9bfc0d17f8b078e0e43b0da5315a89ed (patch) | |
tree | d5e5f1f99fb355aeadf1f0eab1d0363c91a2c30b | |
parent | 523ba1ff50dfaee79036c03d83ee6d64475cbd37 (diff) | |
download | openttd-dccd3adb9bfc0d17f8b078e0e43b0da5315a89ed.tar.xz |
(svn r1128) -Fix: [Network] Going bankrupt of human-players was corrupted in networkgames
-rw-r--r-- | economy.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -397,22 +397,29 @@ static void PlayersCheckBankrupt(Player *p) p->bankrupt_asked = 255; p->bankrupt_timeout = 0x456; } else { - // If we are the server, make sure it is clear that his player is no - // longer with us! #ifdef ENABLE_NETWORK if (IS_HUMAN_PLAYER(owner) && _network_server) { + // If we are the server, make sure it is clear that his player is no + // longer with us! NetworkClientInfo *ci; - ci = NetworkFindClientInfoFromIndex(_network_own_client_index); - ci->client_playas = (byte)(OWNER_SPECTATOR + 1); - // Send the new info to all the clients - NetworkUpdateClientInfo(_network_own_client_index); + ClientState *cs; + /* Find all clients that were in control of this company */ + FOR_ALL_CLIENTS(cs) { + ci = DEREF_CLIENT_INFO(cs); + if ((ci->client_playas-1) == owner) { + ci->client_playas = OWNER_SPECTATOR; + // Send the new info to all the clients + NetworkUpdateClientInfo(_network_own_client_index); + } + } } -#endif /* ENABLE_NETWORK */ // Make sure the player no longer controls the company if (IS_HUMAN_PLAYER(owner) && owner == _local_player) { // Switch the player to spectator.. _local_player = OWNER_SPECTATOR; } +#endif /* ENABLE_NETWORK */ + // Convert everything the player owns to NO_OWNER p->money64 = p->player_money = 100000000; ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner |