* 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. */
| 1550 | * @param[out] pal Palette to draw. |
| 1551 | */ |
| 1552 | static 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. |
no test coverage detected