# HG changeset patch # User rubidium # Date 2009-12-11 22:23:48 # Node ID f0296916bae7922da8ddaf1a21974ec1d345f4d6 # Parent 097b41840d11e3149f65e4257ef6a3d781c0d18b (svn r18466) -Codechange: use CmdMoveRailWagon to attach a just build wagon to a chain diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -705,19 +705,6 @@ static CommandCost CmdBuildRailWagon(Eng } if (flags & DC_EXEC) { - Vehicle *u = NULL; - - Train *w; - FOR_ALL_TRAINS(w) { - /* do not connect new wagon with crashed/flooded consists */ - if (w->tile == tile && w->IsFreeWagon() && - w->engine_type == engine && - !(w->vehstatus & VS_CRASHED)) { - u = w->Last(); - break; - } - } - Train *v = new Train(); v->spritenum = rvi->image_index; @@ -742,12 +729,8 @@ static CommandCost CmdBuildRailWagon(Eng // v->subtype = 0; v->SetWagon(); - if (u != NULL) { - u->SetNext(v); - } else { - v->SetFreeWagon(); - InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); - } + v->SetFreeWagon(); + InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); v->cargo_type = e->GetDefaultCargoType(); // v->cargo_subtype = 0; @@ -778,6 +761,18 @@ static CommandCost CmdBuildRailWagon(Eng Company::Get(_current_company)->num_engines[engine]++; CheckConsistencyOfArticulatedVehicle(v); + + /* Try to connect the vehicle to one of free chains of wagons. */ + Train *w; + FOR_ALL_TRAINS(w) { + /* do not connect new wagon with crashed/flooded consists */ + if (w->tile == tile && w->IsFreeWagon() && + w->engine_type == engine && + !(w->vehstatus & VS_CRASHED)) { + DoCommand(0, v->index | (w->Last()->index << 16), 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE); + break; + } + } } return value;