summaryrefslogtreecommitdiff
path: root/src/economy.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2008-04-26 14:20:39 +0000
committersmatz <smatz@openttd.org>2008-04-26 14:20:39 +0000
commit9e1b8b69e32e3ea7fd3ec60f7cbb07f034a4beb3 (patch)
tree552e5b87688c9123491223f82f196003cd3a9d05 /src/economy.cpp
parent805e1db332d3a746a7ce453f62b83d4442078a0b (diff)
downloadopenttd-9e1b8b69e32e3ea7fd3ec60f7cbb07f034a4beb3.tar.xz
(svn r12906) -Fix: vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (before new player start)
Diffstat (limited to 'src/economy.cpp')
-rw-r--r--src/economy.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index 380a000ba..2c7369b4e 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -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);