File diff r7801:a371282b5d81 → r7802:503a69fff2c1
src/vehicle.cpp
Show inline comments
 
@@ -274,6 +274,7 @@ Vehicle::Vehicle()
 
	this->group_id           = DEFAULT_GROUP;
 
	this->fill_percent_te_id = INVALID_TE_ID;
 
	this->first              = this;
 
	this->colormap           = PAL_NONE;
 
}
 

	
 
/**
 
@@ -457,6 +458,12 @@ void ResetVehiclePosHash()
 
	memset(_new_vehicle_position_hash, 0, sizeof(_new_vehicle_position_hash));
 
}
 

	
 
void ResetVehicleColorMap()
 
{
 
	Vehicle *v;
 
	FOR_ALL_VEHICLES(v) { v->colormap = PAL_NONE; }
 
}
 

	
 
void InitializeVehicles()
 
{
 
	_Vehicle_pool.CleanPool();
 
@@ -2607,7 +2614,10 @@ const Livery *GetEngineLivery(EngineID e
 

	
 
static SpriteID GetEngineColourMap(EngineID engine_type, PlayerID player, EngineID parent_engine_type, const Vehicle *v)
 
{
 
	SpriteID map = PAL_NONE;
 
	SpriteID map = (v != NULL) ? v->colormap : PAL_NONE;
 

	
 
	/* Return cached value if any */
 
	if (map != PAL_NONE) return map;
 

	
 
	/* Check if we should use the colour map callback */
 
	if (HASBIT(EngInfo(engine_type)->callbackmask, CBM_VEHICLE_COLOUR_REMAP)) {
 
@@ -2618,7 +2628,11 @@ static SpriteID GetEngineColourMap(Engin
 
			map = GB(callback, 0, 14);
 
			/* If bit 14 is set, then the company colours are applied to the
 
			 * map else it's returned as-is. */
 
			if (!HASBIT(callback, 14)) return map;
 
			if (!HASBIT(callback, 14)) {
 
				/* Update cache */
 
				if (v != NULL) ((Vehicle*)v)->colormap = map;
 
				return map;
 
			}
 
		}
 
	}
 

	
 
@@ -2631,6 +2645,8 @@ static SpriteID GetEngineColourMap(Engin
 
	map += livery->colour1;
 
	if (twocc) map += livery->colour2 * 16;
 

	
 
	/* Update cache */
 
	if (v != NULL) ((Vehicle*)v)->colormap = map;
 
	return map;
 
}