Changeset - r10002:a1c2314c8164
[Not reviewed]
master
0 4 0
peter1138 - 16 years ago 2008-08-24 23:10:23
peter1138@openttd.org
(svn r14160) -Codechange: Move _railtype_cost_multipliers into the rail type information struct.
4 files changed with 31 insertions and 26 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -3643,15 +3643,15 @@ bool GetGlobalVariable(byte param, uint3
 

	
 
		case 0x0F: // Rail track type cost factors
 
			*value = 0;
 
			SB(*value, 0, 8, _railtype_cost_multiplier[0]); // normal rail
 
			SB(*value, 0, 8, GetRailTypeInfo(RAILTYPE_RAIL)->cost_multiplier); // normal rail
 
			if (_settings_game.vehicle.disable_elrails) {
 
				/* skip elrail multiplier - disabled */
 
				SB(*value, 8, 8, _railtype_cost_multiplier[2]); // monorail
 
				SB(*value, 8, 8, GetRailTypeInfo(RAILTYPE_MONO)->cost_multiplier); // monorail
 
			} else {
 
				SB(*value, 8, 8, _railtype_cost_multiplier[1]); // electified railway
 
				SB(*value, 8, 8, GetRailTypeInfo(RAILTYPE_ELECTRIC)->cost_multiplier); // electified railway
 
				/* Skip monorail multiplier - no space in result */
 
			}
 
			SB(*value, 16, 8, _railtype_cost_multiplier[3]); // maglev
 
			SB(*value, 16, 8, GetRailTypeInfo(RAILTYPE_MAGLEV)->cost_multiplier); // maglev
 
			return true;
 

	
 
		case 0x11: // current rail tool type
 
@@ -4651,17 +4651,19 @@ static void ParamSet(byte *buf, size_t l
 
			_traininfo_vehicle_pitch = res;
 
			break;
 

	
 
		case 0x8F: // Rail track type cost factors
 
			_railtype_cost_multiplier[0] = GB(res, 0, 8);
 
		case 0x8F: { // Rail track type cost factors
 
			extern RailtypeInfo _railtypes[RAILTYPE_END];
 
			_railtypes[RAILTYPE_RAIL].cost_multiplier = GB(res, 0, 8);
 
			if (_settings_game.vehicle.disable_elrails) {
 
				_railtype_cost_multiplier[1] = GB(res, 0, 8);
 
				_railtype_cost_multiplier[2] = GB(res, 8, 8);
 
				_railtypes[RAILTYPE_ELECTRIC].cost_multiplier = GB(res, 0, 8);
 
				_railtypes[RAILTYPE_MONO].cost_multiplier = GB(res, 8, 8);
 
			} else {
 
				_railtype_cost_multiplier[1] = GB(res, 8, 8);
 
				_railtype_cost_multiplier[2] = GB(res, 16, 8);
 
				_railtypes[RAILTYPE_ELECTRIC].cost_multiplier = GB(res, 8, 8);
 
				_railtypes[RAILTYPE_MONO].cost_multiplier = GB(res, 16, 8);
 
			}
 
			_railtype_cost_multiplier[3] = GB(res, 16, 8);
 
			_railtypes[RAILTYPE_MAGLEV].cost_multiplier = GB(res, 16, 8);
 
			break;
 
		}
 

	
 
		/* @todo implement */
 
		case 0x93: // Tile refresh offset to left
 
@@ -5473,9 +5475,6 @@ static void ResetNewGRFData()
 
	_traininfo_vehicle_pitch = 0;
 
	_traininfo_vehicle_width = 29;
 

	
 
	/* Reset track cost multipliers. */
 
	memcpy(&_railtype_cost_multiplier, &_default_railtype_cost_multiplier, sizeof(_default_railtype_cost_multiplier));
 

	
 
	_loaded_newgrf_features.has_2CC           = false;
 
	_loaded_newgrf_features.has_newhouses     = false;
 
	_loaded_newgrf_features.has_newindustries = false;
src/rail.cpp
Show inline comments
 
@@ -149,13 +149,6 @@ extern const TrackdirBits _uphill_trackd
 
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///< 30 SLOPE_STEEP_E -> inclined for diagonal track
 
};
 

	
 
/* The default multiplier for the cost of building different types of railway
 
 * track, which will be divided by 8. Can be changed by newgrf files. */
 
const int _default_railtype_cost_multiplier[RAILTYPE_END] = {
 
	8, 12, 16, 24,
 
};
 
int _railtype_cost_multiplier[RAILTYPE_END];
 

	
 
RailType GetTileRailType(TileIndex tile)
 
{
 
	switch (GetTileType(tile)) {
src/rail.h
Show inline comments
 
@@ -113,6 +113,11 @@ struct RailtypeInfo {
 
	 * Bit mask of rail type flags
 
	 */
 
	RailTypeFlags flags;
 

	
 
	/**
 
	 * Cost multiplier for building this rail type
 
	 */
 
	uint8 cost_multiplier;
 
};
 

	
 

	
 
@@ -154,10 +159,6 @@ static inline bool HasPowerOnRail(RailTy
 
	return HasBit(GetRailTypeInfo(enginetype)->powered_railtypes, tiletype);
 
}
 

	
 

	
 
extern int _railtype_cost_multiplier[RAILTYPE_END];
 
extern const int _default_railtype_cost_multiplier[RAILTYPE_END];
 

	
 
/**
 
 * Returns the cost of building the specified railtype.
 
 * @param railtype The railtype being built.
 
@@ -166,7 +167,7 @@ extern const int _default_railtype_cost_
 
static inline Money RailBuildCost(RailType railtype)
 
{
 
	assert(railtype < RAILTYPE_END);
 
	return (_price.build_rail * _railtype_cost_multiplier[railtype]) >> 3;
 
	return (_price.build_rail * GetRailTypeInfo(railtype)->cost_multiplier) >> 3;
 
}
 

	
 
/**
src/table/railtypes.h
Show inline comments
 
@@ -70,6 +70,9 @@ static const RailtypeInfo _original_rail
 

	
 
		/* flags */
 
		RTFB_NONE,
 

	
 
		/* cost multiplier */
 
		8,
 
	},
 

	
 
	/** Electrified railway */
 
@@ -136,6 +139,9 @@ static const RailtypeInfo _original_rail
 

	
 
		/* flags */
 
		RTFB_CATENARY,
 

	
 
		/* cost multiplier */
 
		12,
 
	},
 

	
 
	/** Monorail */
 
@@ -198,6 +204,9 @@ static const RailtypeInfo _original_rail
 

	
 
		/* flags */
 
		RTFB_NONE,
 

	
 
		/* cost multiplier */
 
		16,
 
	},
 

	
 
	/** Maglev */
 
@@ -260,6 +269,9 @@ static const RailtypeInfo _original_rail
 

	
 
		/* flags */
 
		RTFB_NONE,
 

	
 
		/* cost multiplier */
 
		24,
 
	},
 
};
 

	
0 comments (0 inline, 0 general)