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