equal
deleted
inserted
replaced
162 if (!IsArticulatedPart(u)) { |
162 if (!IsArticulatedPart(u)) { |
163 // check if its a powered wagon |
163 // check if its a powered wagon |
164 CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON); |
164 CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON); |
165 if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) { |
165 if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) { |
166 if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) { |
166 if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) { |
167 uint16 callback = GetCallBackResult(CBID_TRAIN_WAGON_POWER, u->engine_type, u); |
167 uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); |
168 |
168 |
169 if (callback != CALLBACK_FAILED) |
169 if (callback != CALLBACK_FAILED) |
170 u->u.rail.cached_vis_effect = callback; |
170 u->u.rail.cached_vis_effect = callback; |
171 } |
171 } |
172 |
172 |
189 } |
189 } |
190 |
190 |
191 // check the vehicle length (callback) |
191 // check the vehicle length (callback) |
192 veh_len = CALLBACK_FAILED; |
192 veh_len = CALLBACK_FAILED; |
193 if (HASBIT(rvi_u->callbackmask, CBM_VEHICLE_LENGTH)) |
193 if (HASBIT(rvi_u->callbackmask, CBM_VEHICLE_LENGTH)) |
194 veh_len = GetCallBackResult(CBID_TRAIN_VEHICLE_LENGTH, u->engine_type, u); |
194 veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, u->engine_type, u); |
195 if (veh_len == CALLBACK_FAILED) |
195 if (veh_len == CALLBACK_FAILED) |
196 veh_len = rvi_u->shorten_factor; |
196 veh_len = rvi_u->shorten_factor; |
197 veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code |
197 veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code |
198 u->u.rail.cached_veh_length = 8 - veh_len; |
198 u->u.rail.cached_veh_length = 8 - veh_len; |
199 v->u.rail.cached_total_length += u->u.rail.cached_veh_length; |
199 v->u.rail.cached_total_length += u->u.rail.cached_veh_length; |
483 uint i; |
483 uint i; |
484 |
484 |
485 if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0; |
485 if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0; |
486 |
486 |
487 for (i = 1; i < 10; i++) { |
487 for (i = 1; i < 10; i++) { |
488 callback = GetCallBackResult(CBID_TRAIN_ARTIC_ENGINE + (i << 8), engine_type, NULL); |
488 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL); |
489 if (callback == CALLBACK_FAILED || callback == 0xFF) break; |
489 if (callback == CALLBACK_FAILED || callback == 0xFF) break; |
490 } |
490 } |
491 |
491 |
492 return i - 1; |
492 return i - 1; |
493 } |
493 } |
503 uint i; |
503 uint i; |
504 |
504 |
505 if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return; |
505 if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return; |
506 |
506 |
507 for (i = 1; i < 10; i++) { |
507 for (i = 1; i < 10; i++) { |
508 callback = GetCallBackResult(CBID_TRAIN_ARTIC_ENGINE + (i << 8), v->engine_type, NULL); |
508 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, NULL); |
509 if (callback == CALLBACK_FAILED || callback == 0xFF) return; |
509 if (callback == CALLBACK_FAILED || callback == 0xFF) return; |
510 |
510 |
511 u->next = vl[i]; |
511 u->next = vl[i]; |
512 u = u->next; |
512 u = u->next; |
513 |
513 |
1735 |
1735 |
1736 if (HASBIT(rvi->callbackmask, CBM_REFIT_CAPACITY)) { |
1736 if (HASBIT(rvi->callbackmask, CBM_REFIT_CAPACITY)) { |
1737 /* Check the 'refit capacity' callback */ |
1737 /* Check the 'refit capacity' callback */ |
1738 CargoID temp_cid = v->cargo_type; |
1738 CargoID temp_cid = v->cargo_type; |
1739 v->cargo_type = new_cid; |
1739 v->cargo_type = new_cid; |
1740 amount = GetCallBackResult(CBID_VEHICLE_REFIT_CAPACITY, v->engine_type, v); |
1740 amount = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v); |
1741 v->cargo_type = temp_cid; |
1741 v->cargo_type = temp_cid; |
1742 } |
1742 } |
1743 |
1743 |
1744 if (amount == CALLBACK_FAILED) { // callback failed or not used, use default |
1744 if (amount == CALLBACK_FAILED) { // callback failed or not used, use default |
1745 CargoID old_cid = rvi->cargo_type; |
1745 CargoID old_cid = rvi->cargo_type; |