# HG changeset patch # User frosch # Date 2009-03-09 18:56:50 # Node ID 51e8aa1a6d07e5c5afd797e2c485056a1656bb76 # Parent aff501dafcc88edd36a2d33b43a294d4984d296e (svn r15654) -Fix: Only ever call any vehicle callbacks after the whole articulated engine has been built. (except 0x16) diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -307,7 +307,7 @@ void AddArticulatedParts(Vehicle **vl, V u = new (u) RoadVehicle(); previous->SetNext(u); u->u.road.first_engine = v->engine_type; - u->u.road.cached_veh_length = GetRoadVehLength(u); + u->u.road.cached_veh_length = 8; // Callback is called when the consist is finished u->u.road.state = RVSB_IN_DEPOT; u->u.road.roadtype = v->u.road.roadtype; diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -254,7 +254,7 @@ CommandCost CmdBuildRoadVeh(TileIndex ti v->u.road.roadtype = HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD; v->u.road.compatible_roadtypes = RoadTypeToRoadTypes(v->u.road.roadtype); - v->u.road.cached_veh_length = GetRoadVehLength(v); + v->u.road.cached_veh_length = 8; v->vehicle_flags = 0; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); @@ -263,8 +263,9 @@ CommandCost CmdBuildRoadVeh(TileIndex ti AddArticulatedParts(vl, VEH_ROAD); - /* Call callback 36s after the whole consist has been constructed */ + /* Call various callbacks after the whole consist has been constructed */ for (Vehicle *u = v; u != NULL; u = u->Next()) { + u->u.road.cached_veh_length = GetRoadVehLength(u); /* Cargo capacity is zero if and only if the vehicle cannot carry anything */ if (u->cargo_cap != 0) u->cargo_cap = GetVehicleProperty(u, 0x0F, u->cargo_cap); }