Skip to content

Commit d21fbd8

Browse files
committed
Feature: Add bridge deck overlays
Fixes #219. Uses a uniform width of sprites across infrastructure types, notably rail and maglev are not narrower than road and monorail, which is unlike openttd.grf.
1 parent a84cb7e commit d21fbd8

8 files changed

Lines changed: 73 additions & 0 deletions
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Bridge decks for overlay on NewGRF bridges
2+
if (climate != CLIMATE_TOYLAND) {
3+
replacenew bridge_decks_spr0(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_rail_8bpp.png", 0) { template_bridgedeckoverlay_general(0, 0, 1) }
4+
#ez alternative_sprites(bridge_decks_spr0, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_rail_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
5+
#32 alternative_sprites(bridge_decks_spr0, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_rail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
6+
#32 #ez alternative_sprites(bridge_decks_spr0, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_rail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
7+
replacenew bridge_decks_spr6(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_monorail_8bpp.png", 6) { template_bridgedeckoverlay_general(0, 0, 1) }
8+
#ez alternative_sprites(bridge_decks_spr6, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_monorail_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
9+
#32 alternative_sprites(bridge_decks_spr6, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_monorail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
10+
#32 #ez alternative_sprites(bridge_decks_spr6, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_monorail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
11+
replacenew bridge_decks_spr12(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_maglev_8bpp.png", 12) { template_bridgedeckoverlay_general(0, 0, 1) }
12+
#ez alternative_sprites(bridge_decks_spr12, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_maglev_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
13+
#32 alternative_sprites(bridge_decks_spr12, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_maglev_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
14+
#32 #ez alternative_sprites(bridge_decks_spr12, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_maglev_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
15+
replacenew bridge_decks_spr18(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_road_8bpp.png", 18) { template_bridgedeckoverlay_road(0, 0, 1) }
16+
#ez alternative_sprites(bridge_decks_spr18, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_road_8bpp.png") { template_bridgedeckoverlay_road(0, 0, 4) }
17+
#32 alternative_sprites(bridge_decks_spr18, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_road_bt32bpp.png") { template_bridgedeckoverlay_road(0, 0, 1) }
18+
#32 #ez alternative_sprites(bridge_decks_spr18, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_road_bt32bpp.png") { template_bridgedeckoverlay_road(0, 0, 4) }
19+
}
20+
if (climate == CLIMATE_TOYLAND) {
21+
replacenew bridge_decks_toyland_spr0(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_rail_8bpp.png", 0) { template_bridgedeckoverlay_general(0, 0, 1) }
22+
#ez alternative_sprites(bridge_decks_toyland_spr0, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_rail_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
23+
#32 alternative_sprites(bridge_decks_toyland_spr0, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_rail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
24+
#32 #ez alternative_sprites(bridge_decks_toyland_spr0, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_rail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
25+
replacenew bridge_decks_toyland_spr6(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_monorail_8bpp.png", 6) { template_bridgedeckoverlay_general(0, 0, 1) }
26+
#ez alternative_sprites(bridge_decks_toyland_spr6, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_monorail_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
27+
#32 alternative_sprites(bridge_decks_toyland_spr6, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_monorail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
28+
#32 #ez alternative_sprites(bridge_decks_toyland_spr6, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_monorail_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
29+
replacenew bridge_decks_toyland_spr12(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_maglev_8bpp.png", 12) { template_bridgedeckoverlay_general(0, 0, 1) }
30+
#ez alternative_sprites(bridge_decks_toyland_spr12, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_maglev_8bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
31+
#32 alternative_sprites(bridge_decks_toyland_spr12, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_maglev_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 1) }
32+
#32 #ez alternative_sprites(bridge_decks_toyland_spr12, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_maglev_bt32bpp.png") { template_bridgedeckoverlay_general(0, 0, 4) }
33+
replacenew bridge_decks_toyland_spr18(BRIDGE_DECKS, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_road_8bpp.png", 18) { template_bridgedeckoverlay_road(0, 0, 1) }
34+
#ez alternative_sprites(bridge_decks_toyland_spr18, ZOOM_LEVEL_IN_4X, BIT_DEPTH_8BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_road_8bpp.png") { template_bridgedeckoverlay_road(0, 0, 4) }
35+
#32 alternative_sprites(bridge_decks_toyland_spr18, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "../graphics/bridges/64/pygen/ramps_deckonly_toyland_road_bt32bpp.png") { template_bridgedeckoverlay_road(0, 0, 1) }
36+
#32 #ez alternative_sprites(bridge_decks_toyland_spr18, ZOOM_LEVEL_IN_4X, BIT_DEPTH_32BPP, "../graphics/bridges/256/pygen/ramps_deckonly_toyland_road_bt32bpp.png") { template_bridgedeckoverlay_road(0, 0, 4) }
37+
}

baseset/ogfx2e_extra.pnml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "nml/extra/extra-tram-tracks.pnml"
1818
#include "nml/extra/extra-road-waypoints.pnml"
1919
#include "nml/extra/extra-overlay-rocks.pnml"
20+
#include "nml/extra/extra-bridge-decks.pnml"
2021

2122
// OpenTTD-specific additional sprite sets
2223
#include "nml/extra/extra-openttd-airport.pnml"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:eece347ec1df4a703ad651d586470169f9b858cae65996aef38e06b508c26827
3+
size 17320
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:dcd792fafbf637dab5bec20e956c5316cb8132f7d70c70889fd0f558e7480c29
3+
size 6058
Lines changed: 3 additions & 0 deletions
Loading

graphics/bridges/bridge_infrastructureoverlay.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,14 @@ def infrastructure_bridge_infrastructureoverlay(scale, mode, base_path=".", verb
115115
"ramps_general": "bridgeramps_general_32bpp.png",
116116
"ramps_norecolour": "bridgeramps_norecolour_32bpp.png",
117117
"ramps_wood": "bridgeramps_wood_32bpp.png",
118+
"ramps_deckonly": "bridgeramps_deckonly_32bpp.png",
118119
}
119120
elif mode == "roadramps_toyland" or mode == "railramps_toyland":
120121
bridge_list = {
121122
"ramps_general_toyland": "bridgeramps_general_toyland_32bpp.png",
122123
"ramps_norecolour_toyland": "bridgeramps_norecolour_32bpp.png",
123124
"ramps_wood_toyland": "bridgeramps_wood_toyland_32bpp.png",
125+
"ramps_deckonly_toyland": "bridgeramps_deckonly_32bpp.png",
124126
}
125127
bridgemask = "bridgeramps_deckmask.png"
126128
composite_over = False

templates/zoom-sensitive.pnml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,27 @@ template template_bridgeramps_wood(x, y, z) {
709709
[ 1*z+x*z, 1*z+y*z, 64*z, 47*z-1, -31*z, -24*z ]
710710
}
711711

712+
// Template bridges: extra deck overlays
713+
template template_bridgedeckoverlay_general(x, y, z) {
714+
[ 1*z+x*z, 1*z+y*z, 64*z, 47*z-1, -31*z, -16*z ]
715+
[ 131*z+x*z, 1*z+y*z, 64*z, 47*z-1, -31*z, -16*z ]
716+
717+
[ 261*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
718+
[ 456*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
719+
[ 326*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
720+
[ 391*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
721+
}
722+
723+
template template_bridgedeckoverlay_road(x, y, z) {
724+
[ 131*z+x*z, 1*z+y*z, 64*z, 47*z-1, -31*z, -16*z ]
725+
[ 1*z+x*z, 1*z+y*z, 64*z, 47*z-1, -31*z, -16*z ]
726+
727+
[ 261*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
728+
[ 456*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
729+
[ 326*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
730+
[ 391*z+x*z, 1*z+y*z, 64*z, 55*z-1, -31*z, -24*z ]
731+
}
732+
712733
// Template bridges: simple/core bridges
713734
template template_bridge_single_rear(x, y, z) {
714735
[ 1*z+x*z, 1*z+y*z, 64*z, 128*z-1, -31*z, -84*z ]

0 commit comments

Comments
 (0)