Changeset - r16365:c064d7a3acb5
[Not reviewed]
master
0 2 0
terkhen - 14 years ago 2010-11-06 12:39:18
terkhen@openttd.org
(svn r21091) -Codechange: Add bit constants for checking NewGRFCache validity.
2 files changed with 16 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/newgrf_engine.cpp
Show inline comments
 
@@ -512,21 +512,21 @@ static uint32 VehicleGetVariable(const R
 
			return GetEngineGRFID(v->engine_type);
 

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

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

	
 
		case 0x42: // Consist cargo information
 
			if (!HasBit(v->grf_cache.cache_valid, 2)) {
 
			if (!HasBit(v->grf_cache.cache_valid, NCVV_CONSIST_CARGO_INFORMATION)) {
 
				const Vehicle *u;
 
				byte cargo_classes = 0;
 
				uint8 common_cargos[NUM_CARGO];
 
@@ -577,14 +577,14 @@ static uint32 VehicleGetVariable(const R
 

	
 
				uint8 common_bitnum = (common_cargo_type == CT_INVALID ? 0xFF : CargoSpec::Get(common_cargo_type)->bitnum);
 
				v->grf_cache.consist_cargo_information = cargo_classes | (common_bitnum << 8) | (common_subtype << 16) | (user_def_data << 24);
 
				SetBit(v->grf_cache.cache_valid, 2);
 
				SetBit(v->grf_cache.cache_valid, NCVV_CONSIST_CARGO_INFORMATION);
 
			}
 
			return v->grf_cache.consist_cargo_information;
 

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

	
src/vehicle_base.h
Show inline comments
 
@@ -46,6 +46,14 @@ enum VehicleFlags {
 
	VF_STOP_LOADING,            ///< Don't load anymore during the next load cycle.
 
};
 

	
 
/** Bit numbers used to indicate which of the #NewGRFCache values are valid. */
 
enum NewGRFCacheValidValues {
 
	NCVV_POSITION_CONSIST_LENGTH   = 0, ///< This bit will be set if the NewGRF var 40 currently stored is valid.
 
	NCVV_POSITION_SAME_ID_LENGTH   = 1, ///< This bit will be set if the NewGRF var 41 currently stored is valid.
 
	NCVV_CONSIST_CARGO_INFORMATION = 2, ///< This bit will be set if the NewGRF var 42 currently stored is valid.
 
	NCVV_COMPANY_INFORMATION       = 3, ///< This bit will be set if the NewGRF var 43 currently stored is valid.
 
};
 

	
 
/** Cached often queried (NewGRF) values */
 
struct NewGRFCache {
 
	/* Values calculated when they are requested for the first time after invalidating the NewGRF cache. */
0 comments (0 inline, 0 general)