diff --git a/grf/alpine/alpine.py b/grf/alpine/alpine.py index 6fad7dab18..c93dfb2b46 100644 --- a/grf/alpine/alpine.py +++ b/grf/alpine/alpine.py @@ -66,6 +66,28 @@ def tmpl_infrastructure_road(func, **kw): tmpl_level_ground(func, 642, 152, **kw) +def tmpl_infrastructure_railtunnels(func, **kw): + tmpl_long_slope (func, 2, 200, **kw) + func(82, 152, 64, 39, xofs=-31, yofs=-38, **kw) + tmpl_short_slope (func, 82, 200, **kw) + func(162, 152, 64, 23, xofs=-31, yofs=-30, **kw) + tmpl_short_slope (func, 162, 200, **kw) + func(242, 152, 64, 23, xofs=-31, yofs=-30, **kw) + tmpl_long_slope (func, 242, 200, **kw) + func(322, 152, 64, 39, xofs=-31, yofs=-38, **kw) + + +def tmpl_temperate_road_tunnels_grid(func, **kw): + func(113, 27, 64, 39, xofs=-31, yofs=-8) + func(193, 27, 64, 39, xofs=-31, yofs=-38) + func(653, 27, 64, 23, xofs=-31, yofs=0) + func(733, 27, 64, 23, xofs=-31, yofs=-30) + func(337, 27, 64, 23, xofs=-31, yofs=0) + func(417, 27, 64, 23, xofs=-31, yofs=-30) + func(877, 27, 64, 39, xofs=-31, yofs=-8) + func(957, 27, 64, 39, xofs=-31, yofs=-38) + + def replace_ground_sprites(sprite_id, file, x, y, **kw): png = grf.ImageFile(file) gen.add_sprite(grf.ReplaceSprites([(sprite_id, 19)])) @@ -96,6 +118,13 @@ def replace_additional_rough_sprites(sprite_id, file, x, y, **kw): sprite(160+x, y, 64, 31, xofs=-31, yofs=0, **kw) sprite(240+x, y, 64, 31, xofs=-31, yofs=0, **kw) + +def replace_sprites_template(sprite_id, amount, file, func): + png = grf.ImageFile(file) + gen.add_sprite(grf.ReplaceSprites([(sprite_id, amount)])) + func(lambda *args, **kw: gen.add_sprite(grf.FileSprite(png, *args, **kw))) + + # Normal land replace_ground_sprites(3981, 'gfx/grass_grid_temperate.gimp.png', 1, 1) @@ -112,9 +141,7 @@ replace_additional_rough_sprites(4019, 'gfx/rough_grid_temperate.gimp.png', 1511 replace_ground_sprites(4023, 'gfx/rocks_grid_temperate.gimp.png', 1, 1) # road sprites -png = grf.ImageFile('gfx/infrastructure/road_grid_temperate.gimp.png') -gen.add_sprite(grf.ReplaceSprites([(1332, 19)])) -tmpl_infrastructure_road(lambda *args, **kw: gen.add_sprite(grf.FileSprite(png, *args, **kw))) +replace_sprites_template(1332, 19, 'gfx/infrastructure/road_grid_temperate.gimp.png', tmpl_infrastructure_road) # different snow densities: # replace_ground_sprites(4493, 'gfx/snow14_grid_alpine.gimp.png', 1, 1) @@ -125,6 +152,10 @@ replace_ground_sprites(4512, 'gfx/snow_transition_2.png', 1, 1) replace_ground_sprites(4531, 'gfx/snow_transition_3.png', 1, 1) replace_ground_sprites(4550, 'gfx/snow_grid.gimp.png', 1, 1) +replace_sprites_template(2365, 8, 'gfx/infrastructure/tunnel_rail_grid_temperate.gimp.png', tmpl_infrastructure_railtunnels) +replace_sprites_template(2389, 8, 'gfx/infrastructure_road_tunnel_grid.png', tmpl_temperate_road_tunnels_grid) + + # shore sprites (replacing 16 seems to do these as well) # replace_shore_sprites(4062, 'gfx/water/seashore_grid_temperate.gimp.png', 1, 1) @@ -284,7 +315,7 @@ for i in range(81): size=(1, 1), climate=0xf, eol_date=0, - flags=grf.Object.Flags.HAS_NO_FOUNDATION | grf.Object.Flags.ALLOW_UNDER_BRIDGE | grf.Object.Flags.CANNOT_REMOVE, + flags=grf.Object.Flags.HAS_NO_FOUNDATION | grf.Object.Flags.ALLOW_UNDER_BRIDGE | grf.Object.Flags.AUTOREMOVE, )) diff --git a/grf/alpine/gen_sprites.py b/grf/alpine/gen_sprites.py index 34b017c53e..90857ed3fb 100644 --- a/grf/alpine/gen_sprites.py +++ b/grf/alpine/gen_sprites.py @@ -89,6 +89,16 @@ def gen_land_recolor(): return x return gen_recolor(func) +def gen_land_recolor2(): + def func(x): + r, g, b = x.rgb + if 3 * g / 2 > r + b: + x = x.blend(spectra.rgb(0.7, 1, 0), ratio=0.05) + x = x.saturate(10) + return x + return gen_recolor(func) + + def remap_file(f_in, f_out, palmap): print(f"Converting {f_out}...") im = grf.open_image(f_in) @@ -102,7 +112,6 @@ def remap_file(f_in, f_out, palmap): SOURCE_DIR = "/home/pavels/Projects/cmclient/local/ogfx-landscape-1.1.2-source/src/gfx" DEST_DIR = "gfx" land_palmap = gen_land_recolor() - for fname in ("grass_grid_temperate.gimp.png", "bare03_grid.gimp.png", "bare13_grid_temperate.gimp.png", @@ -115,10 +124,19 @@ for fname in ("grass_grid_temperate.gimp.png", "snow34_grid_alpine.gimp.png", "snow_grid.gimp.png", "water/seashore_grid_temperate.gimp.png", - "infrastructure/road_grid_temperate.gimp.png", + + "infrastructure/tunnel_rail_grid_temperate.gimp.png", + "infrastructure_road_tunnel_grid.png", ): remap_file(os.path.join(SOURCE_DIR, fname), os.path.join(DEST_DIR, fname), land_palmap) + +land_palmap = gen_land_recolor2() +for fname in ("infrastructure_road_tunnel_grid.png", + "infrastructure/road_grid_temperate.gimp.png",): + remap_file(os.path.join(SOURCE_DIR, fname), os.path.join(DEST_DIR, fname), land_palmap) + + def meadow_recolor(x): x = x.blend(spectra.rgb(0.7, 1, 0), ratio=0.2) return x.blend(spectra.rgb(1, 1, 0), ratio=0.4) diff --git a/grf/alpine/gfx/infrastructure/road_grid_temperate.gimp.png b/grf/alpine/gfx/infrastructure/road_grid_temperate.gimp.png index f19ea21229..0dd7d11953 100644 Binary files a/grf/alpine/gfx/infrastructure/road_grid_temperate.gimp.png and b/grf/alpine/gfx/infrastructure/road_grid_temperate.gimp.png differ diff --git a/grf/alpine/gfx/infrastructure/tunnel_rail_grid_temperate.gimp.png b/grf/alpine/gfx/infrastructure/tunnel_rail_grid_temperate.gimp.png new file mode 100644 index 0000000000..0225ef7630 Binary files /dev/null and b/grf/alpine/gfx/infrastructure/tunnel_rail_grid_temperate.gimp.png differ diff --git a/grf/alpine/gfx/infrastructure_road_tunnel_grid.png b/grf/alpine/gfx/infrastructure_road_tunnel_grid.png new file mode 100644 index 0000000000..5ed7f62b45 Binary files /dev/null and b/grf/alpine/gfx/infrastructure_road_tunnel_grid.png differ diff --git a/grf/alpine/gfx/snow_transition_1.png b/grf/alpine/gfx/snow_transition_1.png index 125e717df3..2fef85a1f9 100644 Binary files a/grf/alpine/gfx/snow_transition_1.png and b/grf/alpine/gfx/snow_transition_1.png differ diff --git a/grf/alpine/gfx/snow_transition_2.png b/grf/alpine/gfx/snow_transition_2.png index 05f90492cb..9ae5be3c4e 100644 Binary files a/grf/alpine/gfx/snow_transition_2.png and b/grf/alpine/gfx/snow_transition_2.png differ diff --git a/grf/alpine/gfx/snow_transition_3.png b/grf/alpine/gfx/snow_transition_3.png index 7d36103a5a..5ebc33d652 100644 Binary files a/grf/alpine/gfx/snow_transition_3.png and b/grf/alpine/gfx/snow_transition_3.png differ