src/articulated_vehicles.cpp
changeset 10287 dd14c80bad05
parent 9282 2bb9703aeb39
child 10382 d1d4452acbfc
equal deleted inserted replaced
10286:aa0670a976a5 10287:dd14c80bad05
    23 	}
    23 	}
    24 
    24 
    25 	uint i;
    25 	uint i;
    26 	for (i = 1; i < MAX_UVALUE(EngineID); i++) {
    26 	for (i = 1; i < MAX_UVALUE(EngineID); i++) {
    27 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, v);
    27 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, v);
    28 		if (callback == CALLBACK_FAILED || callback == 0xFF) break;
    28 		if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) break;
    29 	}
    29 	}
    30 
    30 
    31 	delete v;
    31 	delete v;
    32 
    32 
    33 	return i - 1;
    33 	return i - 1;
    50 
    50 
    51 	if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
    51 	if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
    52 
    52 
    53 	for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
    53 	for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
    54 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
    54 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
    55 		if (callback == CALLBACK_FAILED || callback == 0xFF) break;
    55 		if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) break;
    56 
    56 
    57 		EngineID artic_engine = GetFirstEngineOfType(type) + GB(callback, 0, 7);
    57 		EngineID artic_engine = GetFirstEngineOfType(type) + GB(callback, 0, 7);
    58 
    58 
    59 		if (type == VEH_TRAIN) {
    59 		if (type == VEH_TRAIN) {
    60 			const RailVehicleInfo *rvi = RailVehInfo(artic_engine);
    60 			const RailVehicleInfo *rvi = RailVehInfo(artic_engine);
    76 
    76 
    77 	if (!HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return;
    77 	if (!HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return;
    78 
    78 
    79 	for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
    79 	for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
    80 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
    80 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
    81 		if (callback == CALLBACK_FAILED || callback == 0xFF) return;
    81 		if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) return;
    82 
    82 
    83 		/* Attempt to use pre-allocated vehicles until they run out. This can happen
    83 		/* Attempt to use pre-allocated vehicles until they run out. This can happen
    84 		 * if the callback returns different values depending on the cargo type. */
    84 		 * if the callback returns different values depending on the cargo type. */
    85 		u->SetNext(vl[i]);
    85 		u->SetNext(vl[i]);
    86 		if (u->Next() == NULL) return;
    86 		if (u->Next() == NULL) return;