Merge branch 'master' into jgrpp
# Conflicts: # CMakeLists.txt # bin/ai/CMakeLists.txt # bin/game/CMakeLists.txt # src/ai/ai_info.cpp # src/company_base.h # src/economy.cpp # src/game/game_info.cpp # src/gfx_type.h # src/linkgraph/linkgraph_gui.cpp # src/palette.cpp # src/palette_func.h # src/saveload/saveload.h # src/saveload/vehicle_sl.cpp # src/ship_cmd.cpp # src/train_cmd.cpp # src/vehicle_base.h # src/window.cpp # src/window_func.h
This commit is contained in:
@@ -501,17 +501,13 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
|
||||
/* Change ownership of vehicles */
|
||||
if (new_owner != INVALID_OWNER) {
|
||||
FreeUnitIDGenerator unitidgen[] = {
|
||||
FreeUnitIDGenerator(VEH_TRAIN, new_owner), FreeUnitIDGenerator(VEH_ROAD, new_owner),
|
||||
FreeUnitIDGenerator(VEH_SHIP, new_owner), FreeUnitIDGenerator(VEH_AIRCRAFT, new_owner)
|
||||
};
|
||||
Company *new_company = Company::Get(new_owner);
|
||||
|
||||
/* Override company settings to new company defaults in case we need to convert them.
|
||||
* This is required as the CmdChangeServiceInt doesn't copy the supplied value when it is non-custom
|
||||
*/
|
||||
if (new_owner != INVALID_OWNER) {
|
||||
{
|
||||
Company *old_company = Company::Get(old_owner);
|
||||
Company *new_company = Company::Get(new_owner);
|
||||
|
||||
old_company->settings.vehicle.servint_aircraft = new_company->settings.vehicle.servint_aircraft;
|
||||
old_company->settings.vehicle.servint_trains = new_company->settings.vehicle.servint_trains;
|
||||
@@ -522,14 +518,10 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
|
||||
for (Vehicle *v : Vehicle::Iterate()) {
|
||||
if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) {
|
||||
assert(new_owner != INVALID_OWNER);
|
||||
|
||||
/* Correct default values of interval settings while maintaining custom set ones.
|
||||
* This prevents invalid values on mismatching company defaults being accepted.
|
||||
*/
|
||||
if (!v->ServiceIntervalIsCustom()) {
|
||||
Company *new_company = Company::Get(new_owner);
|
||||
|
||||
/* Technically, passing the interval is not needed as the command will query the default value itself.
|
||||
* However, do not rely on that behaviour.
|
||||
*/
|
||||
@@ -549,7 +541,8 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
}
|
||||
if (v->IsPrimaryVehicle() && !HasBit(v->subtype, GVSF_VIRTUAL)) {
|
||||
GroupStatistics::CountVehicle(v, 1);
|
||||
v->unitnumber = unitidgen[v->type].NextID();
|
||||
auto &unitidgen = new_company->freeunits[v->type];
|
||||
v->unitnumber = unitidgen.UseID(unitidgen.NextID());
|
||||
}
|
||||
|
||||
/* Invalidate the vehicle's cargo payment "owner cache". */
|
||||
|
Reference in New Issue
Block a user