165 } |
165 } |
166 |
166 |
167 if (!IsArticulatedPart(u)) { |
167 if (!IsArticulatedPart(u)) { |
168 // check if its a powered wagon |
168 // check if its a powered wagon |
169 CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON); |
169 CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON); |
|
170 |
|
171 /* Check powered wagon / visual effect callback */ |
|
172 if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) { |
|
173 uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); |
|
174 |
|
175 if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback; |
|
176 } |
|
177 |
170 if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) { |
178 if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) { |
171 if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) { |
|
172 uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); |
|
173 |
|
174 if (callback != CALLBACK_FAILED) |
|
175 u->u.rail.cached_vis_effect = callback; |
|
176 } |
|
177 |
|
178 if (u->u.rail.cached_vis_effect < 0x40) { |
179 if (u->u.rail.cached_vis_effect < 0x40) { |
179 /* wagon is powered */ |
180 /* wagon is powered */ |
180 SETBIT(u->u.rail.flags, VRF_POWEREDWAGON); // cache 'powered' status |
181 SETBIT(u->u.rail.flags, VRF_POWEREDWAGON); // cache 'powered' status |
181 } |
182 } |
182 } |
183 } |