MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / SplitGroundSpriteForOverlay

Function SplitGroundSpriteForOverlay

src/station_cmd.cpp:3131–3185  ·  view source on GitHub ↗

* 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

Source from the content-addressed store, hash-verified

3129 * @return true if overlay can be drawn.
3130 */
3131bool 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.

Callers 3

DrawStationTileFunction · 0.85
DrawTile_StationFunction · 0.85
StationPickerDrawSpriteFunction · 0.85

Calls 2

GetSnowLineFunction · 0.85
GetTropicZoneFunction · 0.85

Tested by

no test coverage detected