Changeset - r21733:9e3a5387d8a6
[Not reviewed]
master
0 4 0
rubidium - 10 years ago 2014-09-21 11:20:11
rubidium@openttd.org
(svn r26876) -Codechange: move 'has bride above' data from m6 to type
4 files changed with 13 insertions and 18 deletions:
0 comments (0 inline, 0 general)
src/bridge_map.h
Show inline comments
 
@@ -52,13 +52,11 @@ static inline bool MayHaveBridgeAbove(Ti
 
/**
 
 * checks if a bridge is set above the ground of this tile
 
 * @param t The tile to analyze
 
 * @pre MayHaveBridgeAbove(t)
 
 * @return true if a bridge is detected above
 
 */
 
static inline bool IsBridgeAbove(TileIndex t)
 
{
 
	assert(MayHaveBridgeAbove(t));
 
	return GB(_m[t].m6, 6, 2) != 0;
 
	return GB(_m[t].type, 2, 2) != 0;
 
}
 

	
 
/**
 
@@ -82,7 +80,7 @@ static inline BridgeType GetBridgeType(T
 
static inline Axis GetBridgeAxis(TileIndex t)
 
{
 
	assert(IsBridgeAbove(t));
 
	return (Axis)(GB(_m[t].m6, 6, 2) - 1);
 
	return (Axis)(GB(_m[t].type, 2, 2) - 1);
 
}
 

	
 
TileIndex GetNorthernBridgeEnd(TileIndex t);
 
@@ -104,18 +102,15 @@ static inline int GetBridgePixelHeight(T
 
 * Remove the bridge over the given axis.
 
 * @param t the tile to remove the bridge from
 
 * @param a the axis of the bridge to remove
 
 * @pre MayHaveBridgeAbove(t)
 
 */
 
static inline void ClearSingleBridgeMiddle(TileIndex t, Axis a)
 
{
 
	assert(MayHaveBridgeAbove(t));
 
	ClrBit(_m[t].m6, 6 + a);
 
	ClrBit(_m[t].type, 2 + a);
 
}
 

	
 
/**
 
 * Removes bridges from the given, that is bridges along the X and Y axis.
 
 * @param t the tile to remove the bridge from
 
 * @pre MayHaveBridgeAbove(t)
 
 */
 
static inline void ClearBridgeMiddle(TileIndex t)
 
{
 
@@ -127,12 +122,10 @@ static inline void ClearBridgeMiddle(Til
 
 * Set that there is a bridge over the given axis.
 
 * @param t the tile to add the bridge to
 
 * @param a the axis of the bridge to add
 
 * @pre MayHaveBridgeAbove(t)
 
 */
 
static inline void SetBridgeMiddle(TileIndex t, Axis a)
 
{
 
	assert(MayHaveBridgeAbove(t));
 
	SetBit(_m[t].m6, 6 + a);
 
	SetBit(_m[t].type, 2 + a);
 
}
 

	
 
/**
src/clear_map.h
Show inline comments
 
@@ -260,10 +260,6 @@ static inline void SetFence(TileIndex t,
 
 */
 
static inline void MakeClear(TileIndex t, ClearGround g, uint density)
 
{
 
	/* If this is a non-bridgeable tile, clear the bridge bits while the rest
 
	 * of the tile information is still here. */
 
	if (!MayHaveBridgeAbove(t)) SB(_m[t].m6, 6, 2, 0);
 

	
 
	SetTileType(t, MP_CLEAR);
 
	_m[t].m1 = 0;
 
	SetTileOwner(t, OWNER_NONE);
 
@@ -271,7 +267,7 @@ static inline void MakeClear(TileIndex t
 
	_m[t].m3 = 0;
 
	_m[t].m4 = 0 << 5 | 0 << 2;
 
	SetClearGroundDensity(t, g, density); // Sets m5
 
	SB(_m[t].m6, 2, 4, 0); // Other bits are "tropic zone" and "bridge above"
 
	_m[t].m6 = 0;
 
	_me[t].m7 = 0;
 
}
 

	
src/map_type.h
Show inline comments
 
@@ -17,14 +17,14 @@
 
 * Look at docs/landscape.html for the exact meaning of the members.
 
 */
 
struct Tile {
 
	byte   type;        ///< The type (bits 4..7)
 
	byte   type;        ///< The type (bits 4..7), bridges (2..3), rainforest/desert (0..1)
 
	byte   height;      ///< The height of the northern corner.
 
	byte   m1;          ///< Primarily used for ownership information
 
	uint16 m2;          ///< Primarily used for indices to towns, industries and stations
 
	byte   m3;          ///< General purpose
 
	byte   m4;          ///< General purpose
 
	byte   m5;          ///< General purpose
 
	byte   m6;          ///< Primarily used for bridges and rainforest/desert
 
	byte   m6;          ///< General purpose
 
};
 

	
 
/**
src/saveload/afterload.cpp
Show inline comments
 
@@ -576,6 +576,12 @@ bool AfterLoadGame()
 
			_m[t].height = GB(_m[t].type, 0, 4);
 
			SB(_m[t].type, 0, 2, GB(_m[t].m6, 0, 2));
 
			SB(_m[t].m6, 0, 2, 0);
 
			if (MayHaveBridgeAbove(t)) {
 
				SB(_m[t].type, 2, 2, GB(_m[t].m6, 6, 2));
 
				SB(_m[t].m6, 6, 2, 0);
 
			} else {
 
				SB(_m[t].type, 2, 2, 0);
 
			}
 
		}
 
	}
 

	
0 comments (0 inline, 0 general)