From 73232058d92a928f0dff79d96535d767a07e2836 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 31 Jan 2026 22:02:28 +0100 Subject: [PATCH] Codechange: deduplicate code by dereferencing in callee instead of callers --- src/articulated_vehicles.cpp | 2 +- src/autoreplace_cmd.cpp | 4 ++-- src/newgrf_engine.cpp | 4 ++-- src/newgrf_engine.h | 2 +- src/train_cmd.cpp | 6 +++--- src/vehicle_cmd.cpp | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index 007da9185c..58f1fa6218 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -423,7 +423,7 @@ void AddArticulatedParts(Vehicle *first) if (flip_image) v->spritenum++; if (v->type == VEH_TRAIN) { - auto prob = TestVehicleBuildProbability(v, v->engine_type, BuildProbabilityType::Reversed); + auto prob = TestVehicleBuildProbability(v, BuildProbabilityType::Reversed); if (prob.has_value()) Train::From(v)->flags.Set(VehicleRailFlag::Flipped, prob.value()); } v->UpdatePosition(); diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index dddae41e21..86cb52c591 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -374,8 +374,8 @@ static CommandCost BuildReplacementVehicle(Vehicle *old_veh, Vehicle **new_vehic /* Try to reverse the vehicle, but do not care if it fails as the new type might not be reversible */ if (new_veh->type == VEH_TRAIN && Train::From(old_veh)->flags.Test(VehicleRailFlag::Flipped)) { /* Only copy the reverse state if neither old or new vehicle implements reverse-on-build probability callback. */ - if (!TestVehicleBuildProbability(old_veh, old_veh->engine_type, BuildProbabilityType::Reversed).has_value() && - !TestVehicleBuildProbability(new_veh, new_veh->engine_type, BuildProbabilityType::Reversed).has_value()) { + if (!TestVehicleBuildProbability(old_veh, BuildProbabilityType::Reversed).has_value() && + !TestVehicleBuildProbability(new_veh, BuildProbabilityType::Reversed).has_value()) { Command::Do(DoCommandFlag::Execute, new_veh->index, true); } } diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 88566a871f..dc43917584 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -1248,9 +1248,9 @@ int GetEngineProperty(EngineID engine, PropertyID property, int orig_value, cons * @param type Build probability type to test for. * @returns True or false depending on the probability result, or std::nullopt if the callback failed. */ -std::optional TestVehicleBuildProbability(Vehicle *v, EngineID engine, BuildProbabilityType type) +std::optional TestVehicleBuildProbability(Vehicle *v, BuildProbabilityType type) { - uint16_t p = GetVehicleCallback(CBID_VEHICLE_BUILD_PROBABILITY, to_underlying(type), 0, engine, v); + uint16_t p = GetVehicleCallback(CBID_VEHICLE_BUILD_PROBABILITY, to_underlying(type), 0, v->engine_type, v); if (p == CALLBACK_FAILED) return std::nullopt; const uint16_t PROBABILITY_RANGE = 100; diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index 211ba06474..7ba6c2708b 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -106,7 +106,7 @@ enum class BuildProbabilityType : uint8_t { Reversed = 0, ///< Change the rail vehicle should be reversed when purchased. }; -std::optional TestVehicleBuildProbability(Vehicle *v, EngineID engine, BuildProbabilityType type); +std::optional TestVehicleBuildProbability(Vehicle *v, BuildProbabilityType type); void TriggerVehicleRandomisation(Vehicle *veh, VehicleRandomTrigger trigger); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 2701d4e585..43b7fdcae1 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -686,7 +686,7 @@ static CommandCost CmdBuildRailWagon(DoCommandFlags flags, TileIndex tile, const v->group_id = DEFAULT_GROUP; - auto prob = TestVehicleBuildProbability(v, v->engine_type, BuildProbabilityType::Reversed); + auto prob = TestVehicleBuildProbability(v, BuildProbabilityType::Reversed); if (prob.has_value()) v->flags.Set(VehicleRailFlag::Flipped, prob.value()); AddArticulatedParts(v); @@ -753,7 +753,7 @@ static void AddRearEngineToMultiheadedTrain(Train *v) v->SetMultiheaded(); u->SetMultiheaded(); v->SetNext(u); - auto prob = TestVehicleBuildProbability(u, u->engine_type, BuildProbabilityType::Reversed); + auto prob = TestVehicleBuildProbability(u, BuildProbabilityType::Reversed); if (prob.has_value()) u->flags.Set(VehicleRailFlag::Flipped, prob.value()); u->UpdatePosition(); @@ -827,7 +827,7 @@ CommandCost CmdBuildRailVehicle(DoCommandFlags flags, TileIndex tile, const Engi v->SetFrontEngine(); v->SetEngine(); - auto prob = TestVehicleBuildProbability(v, v->engine_type, BuildProbabilityType::Reversed); + auto prob = TestVehicleBuildProbability(v, BuildProbabilityType::Reversed); if (prob.has_value()) v->flags.Set(VehicleRailFlag::Flipped, prob.value()); v->UpdatePosition(); diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index f579ddcf35..3b5dffc772 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -898,8 +898,8 @@ std::tuple CmdCloneVehicle(DoCommandFlags flags, TileInd if (v->type == VEH_TRAIN && Train::From(v)->flags.Test(VehicleRailFlag::Flipped)) { /* Only copy the reverse state if neither old or new vehicle implements reverse-on-build probability callback. */ - if (!TestVehicleBuildProbability(v, v->engine_type, BuildProbabilityType::Reversed).has_value() && - !TestVehicleBuildProbability(w, w->engine_type, BuildProbabilityType::Reversed).has_value()) { + if (!TestVehicleBuildProbability(v, BuildProbabilityType::Reversed).has_value() && + !TestVehicleBuildProbability(w, BuildProbabilityType::Reversed).has_value()) { Train::From(w)->flags.Set(VehicleRailFlag::Flipped); } }