diff --git a/media/baseset/openttd.grf b/media/baseset/openttd.grf index 7f4f6cbc49..6cee79959e 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 25a50247f5..f3b216de53 100644 --- a/media/baseset/openttd.grf.hash +++ b/media/baseset/openttd.grf.hash @@ -1 +1 @@ -4f03553f614a06d86dc06376db3353c7 +8bc3926cb50e19747de498357417d973 diff --git a/media/baseset/openttd/CMakeLists.txt b/media/baseset/openttd/CMakeLists.txt index 30844b8804..ee93ba80b1 100644 --- a/media/baseset/openttd/CMakeLists.txt +++ b/media/baseset/openttd/CMakeLists.txt @@ -20,6 +20,7 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui.nfo ${CMAKE_CURRENT_SOURCE_DIR}/palette.nfo ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.nfo + ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.nfo ${CMAKE_CURRENT_SOURCE_DIR}/signals.nfo ${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.nfo ${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.nfo @@ -42,6 +43,7 @@ if(GRFCODEC_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_tram.png ${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_group_livery.png ${CMAKE_CURRENT_SOURCE_DIR}/roadstops.png + ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.png ${CMAKE_CURRENT_SOURCE_DIR}/signals.png ${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.png ${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.png diff --git a/media/baseset/openttd/openttd.nfo b/media/baseset/openttd/openttd.nfo index c1ed751c55..3d59f08543 100644 --- a/media/baseset/openttd/openttd.nfo +++ b/media/baseset/openttd/openttd.nfo @@ -98,3 +98,4 @@ #include "mono.nfo" #include "tunnel_portals.nfo" #include "palette.nfo" +#include "road_waypoints.nfo" diff --git a/media/baseset/openttd/road_waypoints.nfo b/media/baseset/openttd/road_waypoints.nfo new file mode 100644 index 0000000000..4e7a27019b --- /dev/null +++ b/media/baseset/openttd/road_waypoints.nfo @@ -0,0 +1,14 @@ +// 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 "Road waypoints" +//@@LINT OFF + -1 * 3 05 19 04 +//@@LINT ON + -1 sprites/road_waypoints.png 8bpp 10 10 64 40 -5 -22 normal + -1 sprites/road_waypoints.png 8bpp 90 10 64 40 -31 -9 normal + -1 sprites/road_waypoints.png 8bpp 170 10 64 35 -31 -4 normal + -1 sprites/road_waypoints.png 8bpp 240 10 64 35 -57 -17 normal diff --git a/media/baseset/openttd/road_waypoints.png b/media/baseset/openttd/road_waypoints.png new file mode 100644 index 0000000000..2934cb5b22 Binary files /dev/null and b/media/baseset/openttd/road_waypoints.png differ diff --git a/src/newgrf.cpp b/src/newgrf.cpp index d026d4e9d4..c0507be74e 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6384,6 +6384,7 @@ static constexpr auto _action5_types = std::to_array({ /* 0x16 */ { A5BLOCK_ALLOW_OFFSET, SPR_AIRPORT_PREVIEW_BASE, 1, SPR_AIRPORT_PREVIEW_COUNT, "Airport preview graphics" }, /* 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" }, }); /** diff --git a/src/table/sprites.h b/src/table/sprites.h index ea522724b5..0ab4f1bc99 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -307,8 +307,16 @@ static const uint16_t EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1; static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT; static const uint16_t PALETTE_SPRITE_COUNT = 1; +/** Road waypoint sprites. */ +static const SpriteID SPR_ROAD_WAYPOINTS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT; +static const SpriteID SPR_ROAD_WAYPOINT_Y_W = SPR_ROAD_WAYPOINTS_BASE; +static const SpriteID SPR_ROAD_WAYPOINT_Y_E = SPR_ROAD_WAYPOINTS_BASE + 1; +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; + /* From where can we start putting NewGRFs? */ -static const SpriteID SPR_NEWGRFS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT; +static const SpriteID SPR_NEWGRFS_BASE = SPR_ROAD_WAYPOINTS_BASE + ROAD_WAYPOINTS_SPRITE_COUNT; /* Manager face sprites */ static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face diff --git a/src/table/station_land.h b/src/table/station_land.h index b67fbd94fe..fc47de8d77 100644 --- a/src/table/station_land.h +++ b/src/table/station_land.h @@ -763,6 +763,20 @@ static const DrawTileSeqStruct _station_display_datas_0171[] = { TILE_SEQ_END() }; +/* road waypoint X */ +static const DrawTileSeqStruct _station_display_datas_road_waypoint_X[] = { + TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_W | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_E | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_END() +}; + +/* road waypoint Y */ +static const DrawTileSeqStruct _station_display_datas_road_waypoint_Y[] = { + TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_W | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_E | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_END() +}; + static const DrawTileSeqStruct _station_display_datas_waypoint_X[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 23, SPR_WAYPOINT_X_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 23, SPR_WAYPOINT_X_2 | (1U << PALETTE_MODIFIER_COLOUR)) @@ -956,12 +970,12 @@ static const DrawTileSprites _station_display_datas_bus[] = { }; static const DrawTileSprites _station_display_datas_road_waypoint[] = { - TILE_SPRITE_LINE(SPR_BUS_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_71) - TILE_SPRITE_LINE(SPR_BUS_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_72) - TILE_SPRITE_LINE(SPR_BUS_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_73) - TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74) - TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0170) - TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0171) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_road_waypoint_X) + TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_road_waypoint_Y) }; static const DrawTileSprites _station_display_datas_oilrig[] = {