|
@@ -207,13 +207,13 @@ CommandCost CmdAddVehicleGroup(TileIndex
|
|
|
DecreaseGroupNumVehicle(v->group_id);
|
|
|
IncreaseGroupNumVehicle(new_g);
|
|
|
|
|
|
switch (v->type) {
|
|
|
default: NOT_REACHED();
|
|
|
case VEH_TRAIN:
|
|
|
SetTrainGroupID(v, new_g);
|
|
|
SetTrainGroupID(Train::From(v), new_g);
|
|
|
break;
|
|
|
case VEH_ROAD:
|
|
|
case VEH_SHIP:
|
|
|
case VEH_AIRCRAFT:
|
|
|
if (IsEngineCountable(v)) UpdateNumEngineGroup(v->engine_type, v->group_id, new_g);
|
|
|
v->group_id = new_g;
|
|
@@ -339,17 +339,17 @@ void RemoveVehicleFromGroup(const Vehicl
|
|
|
/**
|
|
|
* Affect the groupID of a train to new_g.
|
|
|
* @note called in CmdAddVehicleGroup and CmdMoveRailVehicle
|
|
|
* @param v First vehicle of the chain.
|
|
|
* @param new_g index of array group
|
|
|
*/
|
|
|
void SetTrainGroupID(Vehicle *v, GroupID new_g)
|
|
|
void SetTrainGroupID(Train *v, GroupID new_g)
|
|
|
{
|
|
|
if (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g)) return;
|
|
|
|
|
|
assert(v->type == VEH_TRAIN && IsFrontEngine(v));
|
|
|
assert(v->IsFrontEngine());
|
|
|
|
|
|
for (Vehicle *u = v; u != NULL; u = u->Next()) {
|
|
|
if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g);
|
|
|
|
|
|
u->group_id = new_g;
|
|
|
}
|
|
@@ -363,17 +363,17 @@ void SetTrainGroupID(Vehicle *v, GroupID
|
|
|
* Recalculates the groupID of a train. Should be called each time a vehicle is added
|
|
|
* to/removed from the chain,.
|
|
|
* @note this needs to be called too for 'wagon chains' (in the depot, without an engine)
|
|
|
* @note Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon
|
|
|
* @param v First vehicle of the chain.
|
|
|
*/
|
|
|
void UpdateTrainGroupID(Vehicle *v)
|
|
|
void UpdateTrainGroupID(Train *v)
|
|
|
{
|
|
|
assert(v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v)));
|
|
|
assert(v->IsFrontEngine() || IsFreeWagon(v));
|
|
|
|
|
|
GroupID new_g = IsFrontEngine(v) ? v->group_id : (GroupID)DEFAULT_GROUP;
|
|
|
GroupID new_g = v->IsFrontEngine() ? v->group_id : (GroupID)DEFAULT_GROUP;
|
|
|
for (Vehicle *u = v; u != NULL; u = u->Next()) {
|
|
|
if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g);
|
|
|
|
|
|
u->group_id = new_g;
|
|
|
}
|
|
|
|