00001 /* $Id: yapf_costbase.hpp 12971 2008-05-06 15:11:33Z 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 living 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 */