diff --git a/media/baseset/openttd.grf b/media/baseset/openttd.grf index 6cee79959e..540ddf3fe9 100644 Binary files a/media/baseset/openttd.grf and b/media/baseset/openttd.grf differ diff --git a/media/baseset/openttd.grf.hash b/media/baseset/openttd.grf.hash index f3b216de53..b0a772e8d0 100644 --- a/media/baseset/openttd.grf.hash +++ b/media/baseset/openttd.grf.hash @@ -1 +1 @@ -8bc3926cb50e19747de498357417d973 +019dba4830a64ee4345d3d647633e1da diff --git a/media/baseset/openttd/CMakeLists.txt b/media/baseset/openttd/CMakeLists.txt index ee93ba80b1..f2df774d1b 100644 --- a/media/baseset/openttd/CMakeLists.txt +++ b/media/baseset/openttd/CMakeLists.txt @@ -18,6 +18,7 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/oneway.nfo ${CMAKE_CURRENT_SOURCE_DIR}/openttd.nfo ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui.nfo + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_rocks.nfo ${CMAKE_CURRENT_SOURCE_DIR}/palette.nfo ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.nfo ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.nfo @@ -42,6 +43,11 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_road.png ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_tram.png ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_group_livery.png + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_rocks.png + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_snowy_rocks_1.png + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_snowy_rocks_2.png + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_snowy_rocks_3.png + ${CMAKE_CURRENT_SOURCE_DIR}/overlay_snowy_rocks_4.png ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.png ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.png ${CMAKE_CURRENT_SOURCE_DIR}/signals.png diff --git a/media/baseset/openttd/openttd.nfo b/media/baseset/openttd/openttd.nfo index 3d59f08543..9cfce9ffdd 100644 --- a/media/baseset/openttd/openttd.nfo +++ b/media/baseset/openttd/openttd.nfo @@ -99,3 +99,4 @@ #include "tunnel_portals.nfo" #include "palette.nfo" #include "road_waypoints.nfo" +#include "overlay_rocks.nfo" diff --git a/media/baseset/openttd/overlay_rocks.nfo b/media/baseset/openttd/overlay_rocks.nfo new file mode 100644 index 0000000000..b5256b2bfe --- /dev/null +++ b/media/baseset/openttd/overlay_rocks.nfo @@ -0,0 +1,112 @@ +// This file is part of OpenTTD. +// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . +// + -1 * 0 0C "Overlay rocks" + -1 * 3 05 1A 5F + +// Plain overlay rocks (unused...) + -1 sprites/overlay_rocks.png 8bpp 1 1 64 31 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 81 1 64 31 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 161 1 64 23 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 241 1 64 23 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 321 1 64 31 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 401 1 64 31 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 481 1 64 23 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 561 1 64 23 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 641 1 64 39 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 721 1 64 39 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 801 1 64 31 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 881 1 64 31 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 961 1 64 39 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 1041 1 64 39 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 1121 1 64 31 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 1201 1 64 47 -31 -16 normal + -1 sprites/overlay_rocks.png 8bpp 1281 1 64 15 -31 0 normal + -1 sprites/overlay_rocks.png 8bpp 1361 1 64 31 -31 -8 normal + -1 sprites/overlay_rocks.png 8bpp 1441 1 64 31 -31 -8 normal + +// Snowy rocks level 0 + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 81 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 161 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 241 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 321 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 401 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 481 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 561 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 641 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 721 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 801 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 881 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 961 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1041 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1121 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1201 1 64 47 -31 -16 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1281 1 64 15 -31 0 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1361 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_1.png 8bpp 1441 1 64 31 -31 -8 normal + +// Snowy rocks level 1 + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 81 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 161 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 241 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 321 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 401 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 481 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 561 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 641 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 721 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 801 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 881 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 961 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1041 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1121 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1201 1 64 47 -31 -16 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1281 1 64 15 -31 0 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1361 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_2.png 8bpp 1441 1 64 31 -31 -8 normal + +// Snowy rocks level 2 + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 81 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 161 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 241 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 321 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 401 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 481 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 561 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 641 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 721 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 801 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 881 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 961 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1041 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1121 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1201 1 64 47 -31 -16 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1281 1 64 15 -31 0 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1361 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_3.png 8bpp 1441 1 64 31 -31 -8 normal + +// Snowy rocks level 4 + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 81 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 161 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 241 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 321 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 401 1 64 31 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 481 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 561 1 64 23 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 641 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 721 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 801 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 881 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 961 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1041 1 64 39 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1121 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1201 1 64 47 -31 -16 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1281 1 64 15 -31 0 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1361 1 64 31 -31 -8 normal + -1 sprites/overlay_snowy_rocks_4.png 8bpp 1441 1 64 31 -31 -8 normal diff --git a/media/baseset/openttd/overlay_rocks.png b/media/baseset/openttd/overlay_rocks.png new file mode 100644 index 0000000000..2f34e61394 Binary files /dev/null and b/media/baseset/openttd/overlay_rocks.png differ diff --git a/media/baseset/openttd/overlay_snowy_rocks_1.png b/media/baseset/openttd/overlay_snowy_rocks_1.png new file mode 100644 index 0000000000..fab20aede3 Binary files /dev/null and b/media/baseset/openttd/overlay_snowy_rocks_1.png differ diff --git a/media/baseset/openttd/overlay_snowy_rocks_2.png b/media/baseset/openttd/overlay_snowy_rocks_2.png new file mode 100644 index 0000000000..5cee3d85d6 Binary files /dev/null and b/media/baseset/openttd/overlay_snowy_rocks_2.png differ diff --git a/media/baseset/openttd/overlay_snowy_rocks_3.png b/media/baseset/openttd/overlay_snowy_rocks_3.png new file mode 100644 index 0000000000..51e6f988d3 Binary files /dev/null and b/media/baseset/openttd/overlay_snowy_rocks_3.png differ diff --git a/media/baseset/openttd/overlay_snowy_rocks_4.png b/media/baseset/openttd/overlay_snowy_rocks_4.png new file mode 100644 index 0000000000..5ccc1bfdf4 Binary files /dev/null and b/media/baseset/openttd/overlay_snowy_rocks_4.png differ diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp index 95bd0fc218..f0d6b27021 100644 --- a/src/clear_cmd.cpp +++ b/src/clear_cmd.cpp @@ -106,7 +106,8 @@ static void DrawClearLandFence(const TileInfo *ti) static void DrawTile_Clear(TileInfo *ti) { - ClearGround ground = IsSnowTile(ti->tile) ? CLEAR_SNOW : GetClearGround(ti->tile); + ClearGround real_ground = GetClearGround(ti->tile); + ClearGround ground = IsSnowTile(ti->tile) ? CLEAR_SNOW : real_ground; switch (ground) { case CLEAR_GRASS: @@ -126,7 +127,17 @@ static void DrawTile_Clear(TileInfo *ti) DrawClearLandFence(ti); break; - case CLEAR_SNOW: + case CLEAR_SNOW: { + uint8_t density = GetClearDensity(ti->tile); + DrawGroundSprite(_clear_land_sprites_snow_desert[density] + SlopeToSpriteOffset(ti->tileh), PAL_NONE); + if (real_ground == CLEAR_ROCKS) { + /* There 4 levels of snowy overlay rocks, each with 19 sprites. */ + ++density; + DrawGroundSprite(SPR_OVERLAY_ROCKS_BASE + (density * 19) + SlopeToSpriteOffset(ti->tileh), PAL_NONE); + } + break; + } + case CLEAR_DESERT: DrawGroundSprite(_clear_land_sprites_snow_desert[GetClearDensity(ti->tile)] + SlopeToSpriteOffset(ti->tileh), PAL_NONE); break; diff --git a/src/newgrf.cpp b/src/newgrf.cpp index f8b34753d3..43e2e663fd 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6742,6 +6742,7 @@ static constexpr auto _action5_types = std::to_array({ /* 0x17 */ { A5BLOCK_ALLOW_OFFSET, SPR_RAILTYPE_TUNNEL_BASE, 1, RAILTYPE_TUNNEL_BASE_COUNT, "Railtype tunnel base" }, /* 0x18 */ { A5BLOCK_ALLOW_OFFSET, SPR_PALETTE_BASE, 1, PALETTE_SPRITE_COUNT, "Palette" }, /* 0x19 */ { A5BLOCK_ALLOW_OFFSET, SPR_ROAD_WAYPOINTS_BASE, 1, ROAD_WAYPOINTS_SPRITE_COUNT, "Road waypoints" }, + /* 0x1A */ { A5BLOCK_ALLOW_OFFSET, SPR_OVERLAY_ROCKS_BASE, 1, OVERLAY_ROCKS_SPRITE_COUNT, "Overlay rocks" }, }); /** diff --git a/src/table/sprites.h b/src/table/sprites.h index c3d40ad8c2..e0003fa61b 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -315,8 +315,12 @@ static const SpriteID SPR_ROAD_WAYPOINT_X_W = SPR_ROAD_WAYPOINTS_BASE + 2; static const SpriteID SPR_ROAD_WAYPOINT_X_E = SPR_ROAD_WAYPOINTS_BASE + 3; static const uint16_t ROAD_WAYPOINTS_SPRITE_COUNT = 4; +/** Overlay rocks sprites. */ +static constexpr SpriteID SPR_OVERLAY_ROCKS_BASE = SPR_ROAD_WAYPOINTS_BASE + ROAD_WAYPOINTS_SPRITE_COUNT; +static constexpr uint16_t OVERLAY_ROCKS_SPRITE_COUNT = 19 * 5; /* Rock overlays: plain, snow 1, snow 2, snow 3 and full snow. */ + /* From where can we start putting NewGRFs? */ -static const SpriteID SPR_NEWGRFS_BASE = SPR_ROAD_WAYPOINTS_BASE + ROAD_WAYPOINTS_SPRITE_COUNT; +static const SpriteID SPR_NEWGRFS_BASE = SPR_OVERLAY_ROCKS_BASE + OVERLAY_ROCKS_SPRITE_COUNT; /* Manager face sprites */ static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face