diff options
author | smatz <smatz@openttd.org> | 2008-12-26 23:53:07 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-12-26 23:53:07 +0000 |
commit | 53679122af1e0a68bbe4e9c1f73526dd7e118df6 (patch) | |
tree | b9fbdb2305fad7754de07a1e731285f63be3c4b9 /src/economy.cpp | |
parent | b8d82cc28c8f133008fe3794b7b52b43593aa209 (diff) | |
download | openttd-53679122af1e0a68bbe4e9c1f73526dd7e118df6.tar.xz |
(svn r14753) -Fix (r1): after buying a company, one could have more vehicles with the same UnitID
Diffstat (limited to 'src/economy.cpp')
-rw-r--r-- | src/economy.cpp | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/src/economy.cpp b/src/economy.cpp index f3039b46d..fb8e04928 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -363,25 +363,12 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) } { - int num_train = 0; - int num_road = 0; - int num_ship = 0; - int num_aircraft = 0; - Vehicle *v; - - /* Determine Ids for the new vehicles */ - FOR_ALL_VEHICLES(v) { - if (v->owner == new_owner) { - switch (v->type) { - case VEH_TRAIN: if (IsFrontEngine(v)) num_train++; break; - case VEH_ROAD: if (IsRoadVehFront(v)) num_road++; break; - case VEH_SHIP: num_ship++; break; - case VEH_AIRCRAFT: if (IsNormalAircraft(v)) num_aircraft++; break; - default: break; - } - } - } + FreeUnitIDGenerator unitidgen[] = { + FreeUnitIDGenerator(VEH_TRAIN, new_owner), FreeUnitIDGenerator(VEH_ROAD, new_owner), + FreeUnitIDGenerator(VEH_SHIP, new_owner), FreeUnitIDGenerator(VEH_AIRCRAFT, new_owner) + }; + Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) { if (new_owner == INVALID_OWNER) { @@ -391,13 +378,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) v->colormap = PAL_NONE; v->group_id = DEFAULT_GROUP; if (IsEngineCountable(v)) GetCompany(new_owner)->num_engines[v->engine_type]++; - switch (v->type) { - case VEH_TRAIN: if (IsFrontEngine(v)) v->unitnumber = ++num_train; break; - case VEH_ROAD: if (IsRoadVehFront(v)) v->unitnumber = ++num_road; break; - case VEH_SHIP: v->unitnumber = ++num_ship; break; - case VEH_AIRCRAFT: if (IsNormalAircraft(v)) v->unitnumber = ++num_aircraft; break; - default: NOT_REACHED(); - } + if (v->IsPrimaryVehicle()) v->unitnumber = unitidgen[v->type].NextID(); } } } |