* Check whether a sprite is a track sprite, which can be replaced by a non-track ground sprite and a rail overlay. * If the ground sprite is suitable, \a ground is replaced with the new non-track ground sprite, and \a overlay_offset * is set to the overlay to draw. * @param ti Positional info for the tile to decide snowyness etc. May be nullptr. * @param[in,out] ground
| 3129 | * @return true if overlay can be drawn. |
| 3130 | */ |
| 3131 | bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset) |
| 3132 | { |
| 3133 | bool snow_desert; |
| 3134 | switch (*ground) { |
| 3135 | case SPR_RAIL_TRACK_X: |
| 3136 | case SPR_MONO_TRACK_X: |
| 3137 | case SPR_MGLV_TRACK_X: |
| 3138 | snow_desert = false; |
| 3139 | *overlay_offset = RTO_X; |
| 3140 | break; |
| 3141 | |
| 3142 | case SPR_RAIL_TRACK_Y: |
| 3143 | case SPR_MONO_TRACK_Y: |
| 3144 | case SPR_MGLV_TRACK_Y: |
| 3145 | snow_desert = false; |
| 3146 | *overlay_offset = RTO_Y; |
| 3147 | break; |
| 3148 | |
| 3149 | case SPR_RAIL_TRACK_X_SNOW: |
| 3150 | case SPR_MONO_TRACK_X_SNOW: |
| 3151 | case SPR_MGLV_TRACK_X_SNOW: |
| 3152 | snow_desert = true; |
| 3153 | *overlay_offset = RTO_X; |
| 3154 | break; |
| 3155 | |
| 3156 | case SPR_RAIL_TRACK_Y_SNOW: |
| 3157 | case SPR_MONO_TRACK_Y_SNOW: |
| 3158 | case SPR_MGLV_TRACK_Y_SNOW: |
| 3159 | snow_desert = true; |
| 3160 | *overlay_offset = RTO_Y; |
| 3161 | break; |
| 3162 | |
| 3163 | default: |
| 3164 | return false; |
| 3165 | } |
| 3166 | |
| 3167 | if (ti != nullptr) { |
| 3168 | /* Decide snow/desert from tile */ |
| 3169 | switch (_settings_game.game_creation.landscape) { |
| 3170 | case LandscapeType::Arctic: |
| 3171 | snow_desert = (uint)ti->z > GetSnowLine() * TILE_HEIGHT; |
| 3172 | break; |
| 3173 | |
| 3174 | case LandscapeType::Tropic: |
| 3175 | snow_desert = GetTropicZone(ti->tile) == TROPICZONE_DESERT; |
| 3176 | break; |
| 3177 | |
| 3178 | default: |
| 3179 | break; |
| 3180 | } |
| 3181 | } |
| 3182 | |
| 3183 | *ground = snow_desert ? SPR_FLAT_SNOW_DESERT_TILE : SPR_FLAT_GRASS_TILE; |
| 3184 | return true; |
| 3185 | } |
| 3186 | |
| 3187 | /** |
| 3188 | * Get blocked pillar information for a station tile. |
no test coverage detected