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:
Jonathan G Rennison
2024-02-26 18:19:34 +00:00
115 changed files with 3467 additions and 2164 deletions

View File

@@ -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". */