changeset 7120:4c44e2050f9d draft

(svn r10393) -Fix [YAPF]: Trackdir needs 4 bits to store (not 3). The cached segment key didn't use the highest trackdir bit. It could confuse YAPF on bi-directional track segments.
author KUDr <KUDr@openttd.org>
date Fri, 29 Jun 2007 23:50:42 +0000
parents 61838a312ae3
children ac9127d52126
files src/yapf/yapf_node_rail.hpp
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/yapf/yapf_node_rail.hpp
+++ b/src/yapf/yapf_node_rail.hpp
@@ -14,10 +14,11 @@
 	FORCEINLINE CYapfRailSegmentKey(const CYapfNodeKeyTrackDir& node_key) {Set(node_key);}
 
 	FORCEINLINE void Set(const CYapfRailSegmentKey& src) {m_value = src.m_value;}
-	FORCEINLINE void Set(const CYapfNodeKeyTrackDir& node_key) {m_value = (((int)node_key.m_tile) << 3) | node_key.m_td;}
+	FORCEINLINE void Set(const CYapfNodeKeyTrackDir& node_key) {m_value = (((int)node_key.m_tile) << 4) | node_key.m_td;}
 
 	FORCEINLINE int32 CalcHash() const {return m_value;}
-	FORCEINLINE TileIndex GetTile() const {return (TileIndex)(m_value >> 3);}
+	FORCEINLINE TileIndex GetTile() const {return (TileIndex)(m_value >> 4);}
+	FORCEINLINE Trackdir GetTrackdir() const {return (Trackdir)(m_value & 0x0F);}
 	FORCEINLINE bool operator == (const CYapfRailSegmentKey& other) const {return m_value == other.m_value;}
 
 	void Dump(DumpTarget &dmp) const