File diff r18301:0c1dfbaba57a → r18302:ea9dfce7b13f
src/vehicle.cpp
Show inline comments
 
@@ -826,24 +826,26 @@ static void RunVehicleDayProc()
 

	
 
	/* Run the day_proc for every DAY_TICKS vehicle starting at _date_fract. */
 
	for (size_t i = _date_fract; i < Vehicle::GetPoolSize(); i += DAY_TICKS) {
 
		Vehicle *v = Vehicle::Get(i);
 
		if (v == NULL) continue;
 

	
 
		/* Call the 32-day callback if needed */
 
		if ((v->day_counter & 0x1F) == 0 && v->HasEngineType()) {
 
			uint16 callback = GetVehicleCallback(CBID_VEHICLE_32DAY_CALLBACK, 0, 0, v->engine_type, v);
 
			if (callback != CALLBACK_FAILED) {
 
				if (HasBit(callback, 0)) TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10
 
				if (HasBit(callback, 1)) v->colourmap = PAL_NONE;
 

	
 
				if (callback & ~3) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_32DAY_CALLBACK, callback);
 
			}
 
		}
 

	
 
		/* This is called once per day for each vehicle, but not in the first tick of the day */
 
		v->OnNewDay();
 
	}
 
}
 

	
 
void CallVehicleTicks()
 
{
 
	_vehicles_to_autoreplace.Clear();
 

	
 
@@ -2166,24 +2168,26 @@ void Vehicle::UpdateVisualEffect(bool al
 
	switch (e->type) {
 
		case VEH_TRAIN: visual_effect = e->u.rail.visual_effect; break;
 
		case VEH_ROAD:  visual_effect = e->u.road.visual_effect; break;
 
		case VEH_SHIP:  visual_effect = e->u.ship.visual_effect; break;
 
		default:        visual_effect = 1 << VE_DISABLE_EFFECT;  break;
 
	}
 

	
 
	/* Check powered wagon / visual effect callback */
 
	if (HasBit(e->info.callback_mask, CBM_VEHICLE_VISUAL_EFFECT)) {
 
		uint16 callback = GetVehicleCallback(CBID_VEHICLE_VISUAL_EFFECT, 0, 0, this->engine_type, this);
 

	
 
		if (callback != CALLBACK_FAILED) {
 
			if (callback >= 0x100 && e->GetGRF()->grf_version >= 8) ErrorUnknownCallbackResult(e->GetGRFID(), CBID_VEHICLE_VISUAL_EFFECT, callback);
 

	
 
			callback = GB(callback, 0, 8);
 
			/* Avoid accidentally setting 'visual_effect' to the default value
 
			 * Since bit 6 (disable effects) is set anyways, we can safely erase some bits. */
 
			if (callback == VE_DEFAULT) {
 
				assert(HasBit(callback, VE_DISABLE_EFFECT));
 
				SB(callback, VE_TYPE_START, VE_TYPE_COUNT, 0);
 
			}
 
			visual_effect = callback;
 
		}
 
	}
 

	
 
	/* Apply default values */