File diff r11982:ff4390b32b95 → r11983:0159b0bf2cf8
src/newgrf_engine.cpp
Show inline comments
 
@@ -433,13 +433,13 @@ static uint8 LiveryHelper(EngineID engin
 
	if (v == NULL) {
 
		if (!Company::IsValidID(_current_company)) return 0;
 
		l = GetEngineLivery(engine, _current_company, INVALID_ENGINE, NULL);
 
	} else if (v->type == VEH_TRAIN) {
 
		l = GetEngineLivery(v->engine_type, v->owner, ((Train *)v)->tcache.first_engine, v);
 
	} else if (v->type == VEH_ROAD) {
 
		l = GetEngineLivery(v->engine_type, v->owner, ((RoadVehicle *)v)->first_engine, v);
 
		l = GetEngineLivery(v->engine_type, v->owner, ((RoadVehicle *)v)->rcache.first_engine, v);
 
	} else {
 
		l = GetEngineLivery(v->engine_type, v->owner, INVALID_ENGINE, v);
 
	}
 

	
 
	return l->colour1 + l->colour2 * 16;
 
}
 
@@ -503,27 +503,27 @@ static uint32 VehicleGetVariable(const R
 
	/* Calculated vehicle parameters */
 
	switch (variable) {
 
		case 0x25: // Get engine GRF ID
 
			return GetEngineGRFID(v->engine_type);
 

	
 
		case 0x40: // Get length of consist
 
			if (!HasBit(v->cache_valid, 0)) {
 
				v->cached_var40 = PositionHelper(v, false);
 
				SetBit(v->cache_valid, 0);
 
			if (!HasBit(v->vcache.cache_valid, 0)) {
 
				v->vcache.cached_var40 = PositionHelper(v, false);
 
				SetBit(v->vcache.cache_valid, 0);
 
			}
 
			return v->cached_var40;
 
			return v->vcache.cached_var40;
 

	
 
		case 0x41: // Get length of same consecutive wagons
 
			if (!HasBit(v->cache_valid, 1)) {
 
				v->cached_var41 = PositionHelper(v, true);
 
				SetBit(v->cache_valid, 1);
 
			if (!HasBit(v->vcache.cache_valid, 1)) {
 
				v->vcache.cached_var41 = PositionHelper(v, true);
 
				SetBit(v->vcache.cache_valid, 1);
 
			}
 
			return v->cached_var41;
 
			return v->vcache.cached_var41;
 

	
 
		case 0x42: // Consist cargo information
 
			if (!HasBit(v->cache_valid, 2)) {
 
			if (!HasBit(v->vcache.cache_valid, 2)) {
 
				const Vehicle *u;
 
				byte cargo_classes = 0;
 
				CargoID common_cargo_best = CT_INVALID;
 
				uint8 common_cargos[NUM_CARGO];
 
				uint8 common_subtype_best = 0xFF; // Return 0xFF if nothing is carried
 
				uint8 common_subtypes[256];
 
@@ -567,23 +567,23 @@ static uint32 VehicleGetVariable(const R
 
						common_subtype_best = common_subtypes[i];
 
						common_subtype = i;
 
					}
 
				}
 

	
 
				uint8 common_bitnum = (common_cargo_type == CT_INVALID ? 0xFF : GetCargo(common_cargo_type)->bitnum);
 
				v->cached_var42 = cargo_classes | (common_bitnum << 8) | (common_subtype << 16) | (user_def_data << 24);
 
				SetBit(v->cache_valid, 2);
 
				v->vcache.cached_var42 = cargo_classes | (common_bitnum << 8) | (common_subtype << 16) | (user_def_data << 24);
 
				SetBit(v->vcache.cache_valid, 2);
 
			}
 
			return v->cached_var42;
 
			return v->vcache.cached_var42;
 

	
 
		case 0x43: // Company information
 
			if (!HasBit(v->cache_valid, 3)) {
 
				v->cached_var43 = v->owner | (Company::Get(v->owner)->is_ai ? 0x10000 : 0) | (LiveryHelper(v->engine_type, v) << 24);
 
				SetBit(v->cache_valid, 3);
 
			if (!HasBit(v->vcache.cache_valid, 3)) {
 
				v->vcache.cached_var43 = v->owner | (Company::Get(v->owner)->is_ai ? 0x10000 : 0) | (LiveryHelper(v->engine_type, v) << 24);
 
				SetBit(v->vcache.cache_valid, 3);
 
			}
 
			return v->cached_var43;
 
			return v->vcache.cached_var43;
 

	
 
		case 0x44: // Aircraft information
 
			if (v->type != VEH_AIRCRAFT) return UINT_MAX;
 

	
 
			{
 
				const Vehicle *w = v->Next();
 
@@ -886,13 +886,13 @@ static const SpriteGroup *GetVehicleSpri
 
			/* We always use cached value, except for callbacks because the override spriteset
 
			 * to use may be different than the one cached. It happens for callback 0x15 (refit engine),
 
			 * as v->cargo_type is temporary changed to the new type */
 
			group = use_cache ? ((Train *)v)->tcache.cached_override : GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, ((Train *)v)->tcache.first_engine);
 
			if (group != NULL) return group;
 
		} else if (v->type == VEH_ROAD) {
 
			group = GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, ((RoadVehicle *)v)->first_engine);
 
			group = GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, ((RoadVehicle *)v)->rcache.first_engine);
 
			if (group != NULL) return group;
 
		}
 
	}
 

	
 
	const Engine *e = Engine::Get(engine);