mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
(svn r12906) -Fix: vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (before new player start)
This commit is contained in:
parent
f129ba40a7
commit
bf3542e9f7
@ -44,6 +44,7 @@
|
||||
#include "rail_map.h"
|
||||
#include "signal_func.h"
|
||||
#include "gfx_func.h"
|
||||
#include "autoreplace_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
#include "table/sprites.h"
|
||||
@ -454,6 +455,19 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
|
||||
UpdateSignalsInBuffer();
|
||||
}
|
||||
|
||||
/* In all cases clear replace engine rules.
|
||||
* Even if it was copied, it could interfere with new owner's rules */
|
||||
RemoveAllEngineReplacementForPlayer(GetPlayer(old_player));
|
||||
|
||||
if (new_player == PLAYER_SPECTATOR) {
|
||||
RemoveAllGroupsForPlayer(old_player);
|
||||
} else {
|
||||
Group *g;
|
||||
FOR_ALL_GROUPS(g) {
|
||||
if (g->owner == old_player) g->owner = new_player;
|
||||
}
|
||||
}
|
||||
|
||||
/* Change color of existing windows */
|
||||
if (new_player != PLAYER_SPECTATOR) ChangeWindowOwner(old_player, new_player);
|
||||
|
||||
|
@ -461,6 +461,8 @@ static Player *AllocatePlayer()
|
||||
/* Find a free slot */
|
||||
FOR_ALL_PLAYERS(p) {
|
||||
if (!p->is_active) {
|
||||
free(p->name);
|
||||
free(p->president_name);
|
||||
PlayerID i = p->index;
|
||||
memset(p, 0, sizeof(Player));
|
||||
memset(&_players_ai[i], 0, sizeof(PlayerAI));
|
||||
@ -918,9 +920,6 @@ CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
|
||||
p->is_active = false;
|
||||
}
|
||||
RemoveAllEngineReplacementForPlayer(p);
|
||||
RemoveAllGroupsForPlayer(p->index);
|
||||
|
||||
} break;
|
||||
|
||||
case 3: { /* Merge a company (#1) into another company (#2), elimination company #1 */
|
||||
|
Loading…
Reference in New Issue
Block a user