00001 /* $Id: yapf_costbase.hpp 15718 2009-03-15 00:32:18Z rubidium $ */ 00002 00005 #ifndef YAPF_COSTBASE_HPP 00006 #define YAPF_COSTBASE_HPP 00007 00008 struct CYapfCostBase { 00009 FORCEINLINE static bool stSlopeCost(TileIndex tile, Trackdir td) 00010 { 00011 if (IsDiagonalTrackdir(td)) { 00012 if (IsBridgeTile(tile)) { 00013 /* it is bridge ramp, check if we are entering the bridge */ 00014 if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(td)) return false; // no, we are leaving it, no penalty 00015 /* we are entering the bridge */ 00016 Slope tile_slope = GetTileSlope(tile, NULL); 00017 Axis axis = DiagDirToAxis(GetTunnelBridgeDirection(tile)); 00018 return !HasBridgeFlatRamp(tile_slope, axis); 00019 } else { 00020 /* not bridge ramp */ 00021 if (IsTunnelTile(tile)) return false; // tunnel entry/exit doesn't slope 00022 Slope tile_slope = GetTileSlope(tile, NULL); 00023 return IsUphillTrackdir(tile_slope, td); // slopes uphill => apply penalty 00024 } 00025 } 00026 return false; 00027 } 00028 }; 00029 00030 struct CostRailSettings { 00031 /* look-ahead signal penalty */ 00032 }; 00033 00034 00035 #endif /* YAPF_COSTBASE_HPP */