Changeset - r9058:633a48dec9d9
[Not reviewed]
master
0 2 0
smatz - 16 years ago 2008-04-26 14:20:39
smatz@openttd.org
(svn r12906) -Fix: vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (before new player start)
2 files changed with 16 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/economy.cpp
Show inline comments
 
@@ -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(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);
 

	
src/players.cpp
Show inline comments
 
@@ -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
 
			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 */
0 comments (0 inline, 0 general)