diff --git a/docs/newgrf-additions-nml.html b/docs/newgrf-additions-nml.html index f473b747a2..eda8a45b41 100644 --- a/docs/newgrf-additions-nml.html +++ b/docs/newgrf-additions-nml.html @@ -208,6 +208,12 @@

There is currently one misc GUI sprite.

+ ROAD_WAYPOINTS4 + + Road waypoint graphics +

This is the same order and format as the drive-through bus/truck road stop sprites.

+ +

Signal graphics using switches

diff --git a/docs/newgrf-additions.html b/docs/newgrf-additions.html index 176f5b90e2..e8b84a972f 100644 --- a/docs/newgrf-additions.html +++ b/docs/newgrf-additions.html @@ -552,5 +552,8 @@

Miscellaneous GUI graphics (mappable type: misc_gui)

There is currently one misc GUI sprite.

This is indicated by the feature name: action5_misc_gui, version 1

+

Road waypoint graphics (mappable type: road_waypoints)

+

This is 4 sprites, in the same order and format as the drive-through bus or truck road stop graphics.

+

This is indicated by the feature name: action5_road_waypoints, version 1

diff --git a/media/baseset/CMakeLists.txt b/media/baseset/CMakeLists.txt index cead9fd77a..e6c1538222 100644 --- a/media/baseset/CMakeLists.txt +++ b/media/baseset/CMakeLists.txt @@ -23,6 +23,7 @@ set(BASESET_OTHER_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/route_step.grf ${CMAKE_CURRENT_SOURCE_DIR}/tracerestrict.grf ${CMAKE_CURRENT_SOURCE_DIR}/misc_gui.grf + ${CMAKE_CURRENT_SOURCE_DIR}/road_waypoints.grf ) if (UNIX AND NOT APPLE) diff --git a/media/baseset/road_waypoints.grf b/media/baseset/road_waypoints.grf new file mode 100644 index 0000000000..e4d2f0e3a4 Binary files /dev/null and b/media/baseset/road_waypoints.grf differ diff --git a/media/baseset/road_waypoints/road_waypoints.nfo b/media/baseset/road_waypoints/road_waypoints.nfo new file mode 100644 index 0000000000..669656ae22 --- /dev/null +++ b/media/baseset/road_waypoints/road_waypoints.nfo @@ -0,0 +1,10 @@ +// Automatically generated by GRFCODEC. Do not modify! +// (Info version 32) +// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>> +// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C +// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D% +// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags + 0 road_waypoints.png 8bpp 10 10 64 40 -5 -22 normal + 1 road_waypoints.png 8bpp 90 10 64 40 -31 -9 normal + 2 road_waypoints.png 8bpp 170 10 64 35 -31 -4 normal + 3 road_waypoints.png 8bpp 240 10 64 35 -57 -17 normal diff --git a/media/baseset/road_waypoints/road_waypoints.png b/media/baseset/road_waypoints/road_waypoints.png new file mode 100644 index 0000000000..2934cb5b22 Binary files /dev/null and b/media/baseset/road_waypoints/road_waypoints.png differ diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index 12ac1418b9..cae3092da7 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -188,9 +188,12 @@ static void LoadSpriteTables() /* Tracerestrict sprites. */ LoadGrfFile("tracerestrict.grf", SPR_TRACERESTRICT_BASE, false); - /* Tracerestrict sprites. */ + /* Misc GUI sprites. */ LoadGrfFile("misc_gui.grf", SPR_MISC_GUI_BASE, false); + /* Road waypoints sprites. */ + LoadGrfFile("road_waypoints.grf", SPR_ROAD_WAYPOINTS_BASE, false); + /* Fill duplicate original signal graphics sprite block */ for (uint i = 0; i < DUP_ORIGINAL_SIGNALS_SPRITE_COUNT; i++) { DupSprite(SPR_ORIGINAL_SIGNALS_BASE + i, SPR_DUP_ORIGINAL_SIGNALS_BASE + i); diff --git a/src/newgrf_extension.cpp b/src/newgrf_extension.cpp index dee1d52b93..94c518f300 100644 --- a/src/newgrf_extension.cpp +++ b/src/newgrf_extension.cpp @@ -30,6 +30,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = { GRFFeatureInfo("action5_programmable_signals", 1), GRFFeatureInfo("action5_no_entry_signals", 1), GRFFeatureInfo("action5_misc_gui", 1), + GRFFeatureInfo("action5_road_waypoints", 1), GRFFeatureInfo("action0_railtype_programmable_signals", 1), GRFFeatureInfo("action0_railtype_no_entry_signals", 1), GRFFeatureInfo("action0_railtype_restricted_signals", 1), @@ -89,5 +90,6 @@ extern const Action5TypeRemapDefinition _grf_action5_remappable_types[] = { Action5TypeRemapDefinition("programmable_signals", A5BLOCK_ALLOW_OFFSET, SPR_PROGSIGNAL_BASE, 1, 32, "Programmable pre-signal graphics"), Action5TypeRemapDefinition("no_entry_signals", A5BLOCK_ALLOW_OFFSET, SPR_EXTRASIGNAL_BASE, 1, 16, "No-entry signal graphics"), Action5TypeRemapDefinition("misc_gui", A5BLOCK_ALLOW_OFFSET, SPR_MISC_GUI_BASE, 1, 1, "Miscellaneous GUI graphics"), + Action5TypeRemapDefinition("road_waypoints", A5BLOCK_ALLOW_OFFSET, SPR_ROAD_WAYPOINTS_BASE, 1, 4, "Road waypoints"), Action5TypeRemapDefinition(), }; diff --git a/src/table/sprites.h b/src/table/sprites.h index 719eb1e242..fb2a47bf28 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -344,12 +344,20 @@ static const SpriteID ROUTE_STEP_SPRITE_COUNT = 4; static const SpriteID SPR_TRACERESTRICT_BASE = SPR_ROUTE_STEP_BASE + ROUTE_STEP_SPRITE_COUNT; static const uint16 TRACERESTRICT_SPRITE_COUNT = 2; -/* Tracerestrict sprites */ +/* Misc GUI sprites */ static const SpriteID SPR_MISC_GUI_BASE = SPR_TRACERESTRICT_BASE + TRACERESTRICT_SPRITE_COUNT; static const uint16 MISC_GUI_SPRITE_COUNT = 1; +/* Road waypoints sprites */ +static const SpriteID SPR_ROAD_WAYPOINTS_BASE = SPR_MISC_GUI_BASE + MISC_GUI_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 ROAD_WAYPOINTS_SPRITE_COUNT = 4; + /* Duplicated signal sprites */ -static const SpriteID SPR_DUP_ORIGINAL_SIGNALS_BASE = SPR_MISC_GUI_BASE + MISC_GUI_SPRITE_COUNT; +static const SpriteID SPR_DUP_ORIGINAL_SIGNALS_BASE = SPR_ROAD_WAYPOINTS_BASE + ROAD_WAYPOINTS_SPRITE_COUNT; static const uint16 DUP_ORIGINAL_SIGNALS_SPRITE_COUNT = 16; static const SpriteID SPR_DUP_SIGNALS_BASE = SPR_DUP_ORIGINAL_SIGNALS_BASE + DUP_ORIGINAL_SIGNALS_SPRITE_COUNT; static const uint16 DUP_SIGNALS_SPRITE_COUNT = PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT; diff --git a/src/table/station_land.h b/src/table/station_land.h index 8b98505ee5..7caab7eba2 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() }; +/* drive-through bus stop 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() +}; + +/* drive-through bus stop 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[] = {