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

Function GetRoadGroundSprite

src/road_cmd.cpp:1552–1595  ·  view source on GitHub ↗

* Get ground sprite to draw for a road tile. * @param ti TileInof * @param roadside Road side type * @param rti Road type info * @param offset Road sprite offset * @param snow_or_desert Whether to get snow/desert ground sprite * @param[out] pal Palette to draw. */

Source from the content-addressed store, hash-verified

1550 * @param[out] pal Palette to draw.
1551 */
1552static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const RoadTypeInfo *rti, uint offset, bool snow_or_desert, PaletteID *pal)
1553{
1554 /* Draw bare ground sprite if no road or road uses overlay system. */
1555 if (rti == nullptr || rti->UsesOverlay()) {
1556 if (DrawRoadAsSnowOrDesert(snow_or_desert, roadside)) {
1557 return SPR_FLAT_SNOW_DESERT_TILE + SlopeToSpriteOffset(ti->tileh);
1558 }
1559
1560 switch (roadside) {
1561 case Roadside::Barren:
1562 *pal = PALETTE_TO_BARE_LAND;
1563 return SPR_FLAT_GRASS_TILE + SlopeToSpriteOffset(ti->tileh);
1564
1565 case Roadside::Grass:
1566 case Roadside::GrassRoadWorks:
1567 return SPR_FLAT_GRASS_TILE + SlopeToSpriteOffset(ti->tileh);
1568
1569 default:
1570 break; // Paved
1571 }
1572 }
1573
1574 /* Draw original road base sprite */
1575 SpriteID image = SPR_ROAD_Y + offset;
1576 if (DrawRoadAsSnowOrDesert(snow_or_desert, roadside)) {
1577 image += 19;
1578 } else {
1579 switch (roadside) {
1580 case Roadside::Barren:
1581 *pal = PALETTE_TO_BARE_LAND;
1582 break;
1583
1584 case Roadside::Grass:
1585 case Roadside::GrassRoadWorks:
1586 break;
1587
1588 default:
1589 image -= 19;
1590 break; // Paved
1591 }
1592 }
1593
1594 return image;
1595}
1596
1597/**
1598 * Draw road ground sprites.

Callers 1

DrawRoadGroundSpritesFunction · 0.85

Calls 3

DrawRoadAsSnowOrDesertFunction · 0.85
SlopeToSpriteOffsetFunction · 0.85
UsesOverlayMethod · 0.45

Tested by

no test coverage detected