mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r11120) -Codechange: remove the arbitrary limit of 10 articulated parts for a vehicle.
This commit is contained in:
parent
631dc06212
commit
9da9e77641
|
@ -20,7 +20,7 @@ uint CountArticulatedParts(EngineID engine_type)
|
|||
if (!HASBIT(EngInfo(engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return 0;
|
||||
|
||||
uint i;
|
||||
for (i = 1; i < 10; i++) {
|
||||
for (i = 1; i < MAX_UVALUE(EngineID); i++) {
|
||||
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, NULL);
|
||||
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ void AddArticulatedParts(Vehicle **vl, VehicleType type)
|
|||
|
||||
if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
|
||||
|
||||
for (uint i = 1; i < 10; i++) {
|
||||
for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
|
||||
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
|
||||
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
|
||||
|
||||
|
|
|
@ -181,9 +181,9 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
|
||||
uint num_vehicles = 1 + CountArticulatedParts(p1);
|
||||
|
||||
/* Allow for the front and up to 10 articulated parts. */
|
||||
Vehicle *vl[11];
|
||||
memset(&vl, 0, sizeof(vl));
|
||||
/* Allow for the front and the articulated parts. */
|
||||
Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
|
||||
memset(vl, 0, sizeof(*vl) * num_vehicles);
|
||||
|
||||
if (!Vehicle::AllocateList(vl, num_vehicles)) {
|
||||
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
|
||||
|
|
|
@ -517,9 +517,9 @@ static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, uint32 fla
|
|||
uint num_vehicles = 1 + CountArticulatedParts(engine);
|
||||
|
||||
if (!(flags & DC_QUERY_COST)) {
|
||||
Vehicle *vl[11]; // Allow for wagon and upto 10 artic parts.
|
||||
|
||||
memset(&vl, 0, sizeof(vl));
|
||||
/* Allow for the wagon and the articulated parts. */
|
||||
Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
|
||||
memset(vl, 0, sizeof(*vl) * num_vehicles);
|
||||
|
||||
if (!Vehicle::AllocateList(vl, num_vehicles))
|
||||
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
|
||||
|
@ -685,9 +685,9 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
|
|||
CountArticulatedParts(p1);
|
||||
|
||||
if (!(flags & DC_QUERY_COST)) {
|
||||
Vehicle *vl[12]; // Allow for upto 10 artic parts and dual-heads
|
||||
|
||||
memset(&vl, 0, sizeof(vl));
|
||||
/* Allow for the dual-heads and the articulated parts. */
|
||||
Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
|
||||
memset(vl, 0, sizeof(*vl) * num_vehicles);
|
||||
|
||||
if (!Vehicle::AllocateList(vl, num_vehicles))
|
||||
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
|
||||
|
|
Loading…
Reference in New Issue