From 2bcf24f3d32ac25f490d19f805b3a81a64a4194d Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:03:46 +0100 Subject: [PATCH] Add medium and large half loops to the Wooden Roller Coaster --- distribution/changelog.txt | 1 + resources/g2/sprites.json | 672 +++++++++++ .../track/wooden/large_half_loop_left_1_1.png | Bin 0 -> 5457 bytes .../track/wooden/large_half_loop_left_1_2.png | Bin 0 -> 5600 bytes .../track/wooden/large_half_loop_left_1_3.png | Bin 0 -> 5778 bytes .../track/wooden/large_half_loop_left_1_4.png | Bin 0 -> 5861 bytes .../track/wooden/large_half_loop_left_1_5.png | Bin 0 -> 1611 bytes .../track/wooden/large_half_loop_left_1_6.png | Bin 0 -> 1333 bytes .../wooden/large_half_loop_left_1_6_2.png | Bin 0 -> 5283 bytes .../track/wooden/large_half_loop_left_1_7.png | Bin 0 -> 5618 bytes .../track/wooden/large_half_loop_left_2_1.png | Bin 0 -> 1169 bytes .../track/wooden/large_half_loop_left_2_2.png | Bin 0 -> 1081 bytes .../track/wooden/large_half_loop_left_2_3.png | Bin 0 -> 1061 bytes .../wooden/large_half_loop_left_2_3_2.png | Bin 0 -> 5178 bytes .../track/wooden/large_half_loop_left_2_4.png | Bin 0 -> 1436 bytes .../track/wooden/large_half_loop_left_2_5.png | Bin 0 -> 1686 bytes .../track/wooden/large_half_loop_left_2_6.png | Bin 0 -> 1560 bytes .../track/wooden/large_half_loop_left_2_7.png | Bin 0 -> 1362 bytes .../track/wooden/large_half_loop_left_3_1.png | Bin 0 -> 1106 bytes .../track/wooden/large_half_loop_left_3_2.png | Bin 0 -> 1119 bytes .../wooden/large_half_loop_left_3_2_2.png | Bin 0 -> 5151 bytes .../track/wooden/large_half_loop_left_3_3.png | Bin 0 -> 5304 bytes .../track/wooden/large_half_loop_left_3_4.png | Bin 0 -> 5757 bytes .../track/wooden/large_half_loop_left_3_5.png | Bin 0 -> 1603 bytes .../track/wooden/large_half_loop_left_3_6.png | Bin 0 -> 1329 bytes .../track/wooden/large_half_loop_left_3_7.png | Bin 0 -> 1387 bytes .../track/wooden/large_half_loop_left_4_1.png | Bin 0 -> 1416 bytes .../track/wooden/large_half_loop_left_4_2.png | Bin 0 -> 1527 bytes .../track/wooden/large_half_loop_left_4_3.png | Bin 0 -> 1869 bytes .../track/wooden/large_half_loop_left_4_4.png | Bin 0 -> 2040 bytes .../track/wooden/large_half_loop_left_4_5.png | Bin 0 -> 1486 bytes .../track/wooden/large_half_loop_left_4_6.png | Bin 0 -> 1542 bytes .../wooden/large_half_loop_left_4_6_2.png | Bin 0 -> 5194 bytes .../track/wooden/large_half_loop_left_4_7.png | Bin 0 -> 5262 bytes .../wooden/large_half_loop_right_1_1.png | Bin 0 -> 1381 bytes .../wooden/large_half_loop_right_1_2.png | Bin 0 -> 1452 bytes .../wooden/large_half_loop_right_1_3.png | Bin 0 -> 1656 bytes .../wooden/large_half_loop_right_1_4.png | Bin 0 -> 1794 bytes .../wooden/large_half_loop_right_1_5.png | Bin 0 -> 1411 bytes .../wooden/large_half_loop_right_1_6.png | Bin 0 -> 1526 bytes .../wooden/large_half_loop_right_1_6_2.png | Bin 0 -> 5219 bytes .../wooden/large_half_loop_right_1_7.png | Bin 0 -> 5360 bytes .../wooden/large_half_loop_right_2_1.png | Bin 0 -> 1175 bytes .../wooden/large_half_loop_right_2_2.png | Bin 0 -> 1101 bytes .../wooden/large_half_loop_right_2_2_2.png | Bin 0 -> 5106 bytes .../wooden/large_half_loop_right_2_3.png | Bin 0 -> 5238 bytes .../wooden/large_half_loop_right_2_4.png | Bin 0 -> 5660 bytes .../wooden/large_half_loop_right_2_5.png | Bin 0 -> 1760 bytes .../wooden/large_half_loop_right_2_6.png | Bin 0 -> 1468 bytes .../wooden/large_half_loop_right_2_7.png | Bin 0 -> 1385 bytes .../wooden/large_half_loop_right_3_1.png | Bin 0 -> 1134 bytes .../wooden/large_half_loop_right_3_2.png | Bin 0 -> 1078 bytes .../wooden/large_half_loop_right_3_3.png | Bin 0 -> 1111 bytes .../wooden/large_half_loop_right_3_3_2.png | Bin 0 -> 5241 bytes .../wooden/large_half_loop_right_3_4.png | Bin 0 -> 1504 bytes .../wooden/large_half_loop_right_3_5.png | Bin 0 -> 1558 bytes .../wooden/large_half_loop_right_3_6.png | Bin 0 -> 1461 bytes .../wooden/large_half_loop_right_3_7.png | Bin 0 -> 1391 bytes .../wooden/large_half_loop_right_4_1.png | Bin 0 -> 5472 bytes .../wooden/large_half_loop_right_4_2.png | Bin 0 -> 5711 bytes .../wooden/large_half_loop_right_4_3.png | Bin 0 -> 5969 bytes .../wooden/large_half_loop_right_4_4.png | Bin 0 -> 6069 bytes .../wooden/large_half_loop_right_4_5.png | Bin 0 -> 1688 bytes .../wooden/large_half_loop_right_4_6.png | Bin 0 -> 1268 bytes .../wooden/large_half_loop_right_4_6_2.png | Bin 0 -> 5195 bytes .../wooden/large_half_loop_right_4_7.png | Bin 0 -> 5292 bytes .../wooden/medium_half_loop_left_1_1.png | Bin 0 -> 1592 bytes .../wooden/medium_half_loop_left_1_2.png | Bin 0 -> 1540 bytes .../wooden/medium_half_loop_left_1_3.png | Bin 0 -> 1890 bytes .../wooden/medium_half_loop_left_1_4.png | Bin 0 -> 1590 bytes .../wooden/medium_half_loop_left_1_4_2.png | Bin 0 -> 1183 bytes .../wooden/medium_half_loop_left_1_5.png | Bin 0 -> 1284 bytes .../wooden/medium_half_loop_left_2_1.png | Bin 0 -> 1142 bytes .../wooden/medium_half_loop_left_2_1_2.png | Bin 0 -> 1009 bytes .../wooden/medium_half_loop_left_2_2.png | Bin 0 -> 1062 bytes .../wooden/medium_half_loop_left_2_2_2.png | Bin 0 -> 1107 bytes .../wooden/medium_half_loop_left_2_3.png | Bin 0 -> 1462 bytes .../wooden/medium_half_loop_left_2_4.png | Bin 0 -> 2094 bytes .../wooden/medium_half_loop_left_2_5.png | Bin 0 -> 1328 bytes .../wooden/medium_half_loop_left_3_1.png | Bin 0 -> 1043 bytes .../wooden/medium_half_loop_left_3_1_2.png | Bin 0 -> 941 bytes .../wooden/medium_half_loop_left_3_2.png | Bin 0 -> 1031 bytes .../wooden/medium_half_loop_left_3_3.png | Bin 0 -> 1550 bytes .../wooden/medium_half_loop_left_3_4.png | Bin 0 -> 1686 bytes .../wooden/medium_half_loop_left_3_5.png | Bin 0 -> 1279 bytes .../wooden/medium_half_loop_left_4_1.png | Bin 0 -> 1451 bytes .../wooden/medium_half_loop_left_4_2.png | Bin 0 -> 1610 bytes .../wooden/medium_half_loop_left_4_3.png | Bin 0 -> 1894 bytes .../wooden/medium_half_loop_left_4_4.png | Bin 0 -> 1986 bytes .../wooden/medium_half_loop_left_4_5.png | Bin 0 -> 1196 bytes .../wooden/medium_half_loop_right_1_1.png | Bin 0 -> 1388 bytes .../wooden/medium_half_loop_right_1_2.png | Bin 0 -> 1450 bytes .../wooden/medium_half_loop_right_1_3.png | Bin 0 -> 1688 bytes .../wooden/medium_half_loop_right_1_4.png | Bin 0 -> 1863 bytes .../wooden/medium_half_loop_right_1_5.png | Bin 0 -> 12457 bytes .../wooden/medium_half_loop_right_2_1.png | Bin 0 -> 1084 bytes .../wooden/medium_half_loop_right_2_1_2.png | Bin 0 -> 930 bytes .../wooden/medium_half_loop_right_2_2.png | Bin 0 -> 1012 bytes .../wooden/medium_half_loop_right_2_3.png | Bin 0 -> 1520 bytes .../wooden/medium_half_loop_right_2_4.png | Bin 0 -> 1920 bytes .../wooden/medium_half_loop_right_2_5.png | Bin 0 -> 1221 bytes .../wooden/medium_half_loop_right_3_1.png | Bin 0 -> 1173 bytes .../wooden/medium_half_loop_right_3_1_2.png | Bin 0 -> 1070 bytes .../wooden/medium_half_loop_right_3_2.png | Bin 0 -> 1112 bytes .../wooden/medium_half_loop_right_3_2_2.png | Bin 0 -> 1162 bytes .../wooden/medium_half_loop_right_3_3.png | Bin 0 -> 10644 bytes .../wooden/medium_half_loop_right_3_4.png | Bin 0 -> 1872 bytes .../wooden/medium_half_loop_right_3_5.png | Bin 0 -> 1387 bytes .../wooden/medium_half_loop_right_4_1.png | Bin 0 -> 1680 bytes .../wooden/medium_half_loop_right_4_2.png | Bin 0 -> 1696 bytes .../wooden/medium_half_loop_right_4_3.png | Bin 0 -> 2106 bytes .../wooden/medium_half_loop_right_4_4.png | Bin 0 -> 1593 bytes .../wooden/medium_half_loop_right_4_4_2.png | Bin 0 -> 1127 bytes .../wooden/medium_half_loop_right_4_5.png | Bin 0 -> 1162 bytes .../track/coaster/WoodenRollerCoaster.cpp | 1027 +++++++++++++++++ src/openrct2/park/Legacy.cpp | 19 + src/openrct2/park/ParkFile.h | 3 +- .../rtd/coaster/ClassicWoodenRollerCoaster.h | 2 +- .../ride/rtd/coaster/WoodenRollerCoaster.h | 2 +- src/openrct2/sprites.h | 4 +- 120 files changed, 1726 insertions(+), 4 deletions(-) create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_6_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_1_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_3_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_2_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_2_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_3_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_6_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_left_4_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_6_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_1_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_2_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_2_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_3_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_3_7.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_1.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_3.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_4.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_5.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_6.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_6_2.png create mode 100644 resources/g2/track/wooden/large_half_loop_right_4_7.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_4_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_1_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_2_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_2_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_3_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_4_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_4_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_4_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_4_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_left_4_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_1_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_1_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_1_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_1_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_2_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_1_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_2_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_3_5.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_1.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_3.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_4.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_4_2.png create mode 100644 resources/g2/track/wooden/medium_half_loop_right_4_5.png diff --git a/distribution/changelog.txt b/distribution/changelog.txt index cc76e6058c..7494e672a7 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.16 (in development) ------------------------------------------------------------------------ +- Improved: [#22967] Add medium and large half loops to the Wooden and Classic Wooden Roller Coasters. - Improved: [#23010] Make AppImage compatible with Ubuntu 22.04 and Debian Bookworm again. - Fix: [#22615] Crash when drawing Space Rings with an invalid ride entry. - Fix: [#22633] Crash when drawing loading screen with an outdated g2.dat. diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index 5cdb0b0d11..fa6b492fef 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -7188,6 +7188,678 @@ "y": -2, "palette": "keep" }, + { + "path": "track/wooden/medium_half_loop_left_1_1.png", + "x": -26, + "y": -35, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_1_2.png", + "x": -26, + "y": -57, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_1_3.png", + "x": -32, + "y": -103, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_1_4.png", + "x": -33, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_1_5.png", + "x": -26, + "y": -37, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_1.png", + "x": -26, + "y": -13, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_2.png", + "x": 0, + "y": -36, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_3.png", + "x": -16, + "y": -86, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_4.png", + "x": -34, + "y": -151, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_5.png", + "x": -26, + "y": -47, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_1.png", + "x": -23, + "y": -8, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_2.png", + "x": 0, + "y": -14, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_3.png", + "x": -7, + "y": -75, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_4.png", + "x": -32, + "y": -155, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_5.png", + "x": -20, + "y": -47, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_4_1.png", + "x": -25, + "y": -21, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_4_2.png", + "x": -27, + "y": -29, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_4_3.png", + "x": -32, + "y": -32, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_4_4.png", + "x": -14, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_4_5.png", + "x": -32, + "y": -40, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_1_1.png", + "x": -26, + "y": -21, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_1_2.png", + "x": -23, + "y": -29, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_1_3.png", + "x": -21, + "y": -32, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_1_4.png", + "x": -37, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_1_5.png", + "x": -26, + "y": -40, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_1.png", + "x": -26, + "y": -8, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_2.png", + "x": -32, + "y": -15, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_3.png", + "x": -32, + "y": -74, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_4.png", + "x": -28, + "y": -155, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_5.png", + "x": -26, + "y": -47, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_1.png", + "x": -32, + "y": -13, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_2.png", + "x": -32, + "y": -36, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_3.png", + "x": -32, + "y": -86, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_4.png", + "x": -14, + "y": -151, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_5.png", + "x": -15, + "y": -47, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_1.png", + "x": -26, + "y": -36, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_2.png", + "x": -20, + "y": -57, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_3.png", + "x": -7, + "y": -103, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_4.png", + "x": -32, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_5.png", + "x": -32, + "y": -37, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_1_2.png", + "x": -26, + "y": -13, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_2_2_2.png", + "x": -32, + "y": -36, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_1_2.png", + "x": -32, + "y": -13, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_3_2_2.png", + "x": -32, + "y": -36, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_1_4_2.png", + "x": -33, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_left_3_1_2.png", + "x": 0, + "y": 3, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_2_1_2.png", + "x": -25, + "y": 3, + "palette": "keep" + }, + { + "path": "track/wooden/medium_half_loop_right_4_4_2.png", + "x": -32, + "y": -128, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_1.png", + "x": -26, + "y": -32, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_2.png", + "x": -32, + "y": -45, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_3.png", + "x": -32, + "y": -71, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_4.png", + "x": -32, + "y": -86, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_5.png", + "x": -21, + "y": -69, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_6.png", + "x": -10, + "y": -181, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_7.png", + "x": -25, + "y": -19, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_1.png", + "x": -26, + "y": -8, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_2.png", + "x": -6, + "y": -9, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_3.png", + "x": -10, + "y": -27, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_4.png", + "x": -9, + "y": -117, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_5.png", + "x": -32, + "y": -140, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_6.png", + "x": -29, + "y": -199, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_7.png", + "x": -27, + "y": -31, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_1.png", + "x": -25, + "y": -6, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_2.png", + "x": -32, + "y": -10, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_3.png", + "x": -29, + "y": -39, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_4.png", + "x": -10, + "y": -61, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_5.png", + "x": -11, + "y": -118, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_6.png", + "x": -27, + "y": -198, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_7.png", + "x": -31, + "y": -31, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_1.png", + "x": -26, + "y": -20, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_2.png", + "x": -32, + "y": -24, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_3.png", + "x": -32, + "y": -63, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_4.png", + "x": -32, + "y": -83, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_5.png", + "x": 14, + "y": -61, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_6.png", + "x": -17, + "y": -184, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_7.png", + "x": -24, + "y": -21, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_1.png", + "x": -26, + "y": -20, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_2.png", + "x": -22, + "y": -24, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_3.png", + "x": -16, + "y": -62, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_4.png", + "x": 0, + "y": -83, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_5.png", + "x": -32, + "y": -61, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_6.png", + "x": -22, + "y": -184, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_7.png", + "x": -28, + "y": -21, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_1.png", + "x": -26, + "y": -6, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_2.png", + "x": -13, + "y": -10, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_3.png", + "x": -16, + "y": -39, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_4.png", + "x": -32, + "y": -61, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_5.png", + "x": -28, + "y": -118, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_6.png", + "x": -21, + "y": -198, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_7.png", + "x": -25, + "y": -31, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_1.png", + "x": -26, + "y": -8, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_2.png", + "x": -29, + "y": -10, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_3.png", + "x": -29, + "y": -27, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_4.png", + "x": -32, + "y": -117, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_5.png", + "x": 12, + "y": -140, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_6.png", + "x": 0, + "y": -200, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_7.png", + "x": -20, + "y": -31, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_1.png", + "x": -26, + "y": -32, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_2.png", + "x": -28, + "y": -45, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_3.png", + "x": -25, + "y": -71, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_4.png", + "x": -8, + "y": -86, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_5.png", + "x": -9, + "y": -69, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_6.png", + "x": -31, + "y": -181, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_7.png", + "x": -32, + "y": -19, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_1_6_2.png", + "x": -10, + "y": -181, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_2_3_2.png", + "x": -32, + "y": -27, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_3_2_2.png", + "x": -32, + "y": -10, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_left_4_6_2.png", + "x": -17, + "y": -184, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_1_6_2.png", + "x": -22, + "y": -184, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_2_2_2.png", + "x": -13, + "y": -10, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_3_3_2.png", + "x": -29, + "y": -27, + "palette": "keep" + }, + { + "path": "track/wooden/large_half_loop_right_4_6_2.png", + "x": -31, + "y": -181, + "palette": "keep" + }, { "path": "track/bm_invert/booster_1.png", "x": -25, diff --git a/resources/g2/track/wooden/large_half_loop_left_1_1.png b/resources/g2/track/wooden/large_half_loop_left_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1e9de13763a13ee504024fe05dac5dce07d9a0 GIT binary patch literal 5457 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_2.png b/resources/g2/track/wooden/large_half_loop_left_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c70a3ee45cad0d44a6266b6af9d4b078a601f2 GIT binary patch literal 5600 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_3.png b/resources/g2/track/wooden/large_half_loop_left_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0092b048461d899ee71b1ca6bf8ff1b5a73cf98c GIT binary patch literal 5778 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 bJmI(fW5X)ehOjR{D?y^vtdx(ItlsobL*=Sq literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_4.png b/resources/g2/track/wooden/large_half_loop_left_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..89acb24f6c96758c7ca20d613bd07dc067d2dffe GIT binary patch literal 5861 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_5.png b/resources/g2/track/wooden/large_half_loop_left_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..95ae4fcee07b5798a32d54266aa3d4526baad71d GIT binary patch literal 1611 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 BS(g9+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_6_2.png b/resources/g2/track/wooden/large_half_loop_left_1_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd1f81f21c359d9e08950e330ab05c86e99a736 GIT binary patch literal 5283 zcmeHLeN+=y7Jm>h2r6r-jV;>5q&CnPCSQ;bz!bx0V+;}$6ghD+nZy*5iJ3r9YGX?+ zDs8h$D{ir(Wi7R6aq9=WC$(vfR=ZSVrApmYsj^+V)s|Ma(n{&^7apBdO z^RB);@r4aX={r`+7A77s9?0GIeA=$ub&`)OXHnOk?86armM_W8t}8tOK*Vzvm8!5n zrMejo3}V}wO_}-r!u!{0b-Riln^OIUmFo*%yZSo&rCrk+mhU_;ZE2NY)xVh%OMcO^ z8PPq@)+rkn(HZ9QnaiTHzM~&K|3SegIZwQcBp+D+{gJ*k+gyQ5hljz=Mc7;C8MNY) zBGE^G-HPnl_)JOE)Mo+n!`Y^K!R&FhwGqmq>{~p7eNB19{ znsYWuf5N-Re)002a}VtywZ9xGTv+yz4Q?9v4OL48;#4Q&+l6S59z9(jXG4jHDyTPR1$PZFo zw%5pQbAkNTv)3lu?J@JWB-dW(yFfck4tKVRear>>99wgasUl(7Ra;lZA`c84qE^Zt2^r9F^g4j2MDf;#Me1 zLaV|%Oy(763U6tIC@@>B_OKQt`wmH`#dMpjJA4c6gu@x{2vom?dx!MR*u%n5N~2L^ z6IfNqy@KpacF4ZMNMIJDBK(LMFu7bR7xCq|$i$Zzg>t@3l7{mQsi@F^i3GA#gJB$0 zfsJ&cHVh9zLGTm{#6i;xqSQ1@%EwGXDPJNr3HUMrj`A@dRu5Q?jT_;hERoql(Be1iBZ6CAhl?yQXxQC14g4zIdIfTIEo3PGLs#0iWSnl zwXJ~-Wkj85HtNJ7s6Zr92n7nEs8}FY2t14=ZCd>G>8C z+Fuo38to|^zH)RnI<2&Xn~B8=w}k@5MnfRcYTOw16Jm{SVJlFZ8HeY`Si#<0xBNyi zq`^>NmQwk+05$R@5}A-M7YT5_2^WhEA|ocp(y%+xNy6lGp$FN8m+T&((kK28vrG@hO z62%D|B?Hki)Aiguf>+`eW1e)fSyk7rZuII}yY!twGgF#~y*B@Mk~>ww2k?bq@WFlnMI zkJnI=-iE2Xq%Kg0^)!)v?R5jbrlCMP)#r~-kaBq?VyRiFa_Mvp7}o4^bu={iT3P~~ zoxR=N0|NsTNF)Hai7sx7S9ue4T|9HIs=lwRwcq6(@N^G$^bhw8QE|NZcqxOC$K>dE z2$r5ssg3de;)B;KeD1t#Xh^baB z)mcGx)l?${O$cgKQ-7Z zRja8^Km`Fs!CcfsbE6}%uC}?aPukoxI>@drRau#?q5`X}CB#Ub6lqe5+f`zp8tK;Z z`b#*Jo=Lg6RI`}sR8j#oEPg3J?)y*=IExnOz~le=4F0(VA`I%hY_L9hW?t(6Ho@znk{laGyP!k)=rvytCMG0FBs#W&?RF3*?ZkkeQ4m|-g1U^ zU}^fxRqyN^nXqW#j4Gy8`pd;Bw4CxOhuqKOwwDeGr%!z#Y39dC9wqJDrIJfk2JWV% zBP)4NUw?6X>2r%_e=3riIwDRKe0Olwdef1T9Ro9W?4CPg-BYjY55GEViiekYpjg_N zbeebi*mBzJmz%zN|C+NqL3;Ywvbr2jQsMlrbLP{WeTpZ&!7ryeuRqC|{Aq1N`8VIH zb3U8yKlHSG$KF{N&LY!>i>B@fa{C@%ylu&k3I*P1qC?^vfrM!{Mr8k9}dCe literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_1_7.png b/resources/g2/track/wooden/large_half_loop_left_1_7.png new file mode 100644 index 0000000000000000000000000000000000000000..24529103431d94dde4cee3440c9ed9b9c11d55b6 GIT binary patch literal 5618 zcmeHLeN+=y7Jqyh5Ctt_YSBX)l&CRGk_qI4k7xr08Zbyuu+-vYGKpCT6ElIJ(W0V@ zHeFLoS8P$)mbGZ3($RorOIyAgUW7ki#q!f{5;!p_IOVFpK~Ue znfLDfy?cN6ci+imUEb`>(IcN52>=+Kot2&suTuCK9~uO|b5q(2;N{5Df+9;kW@VYo zq|Q)Auq;bV1dFIL=m4nt&X`vm(as9JJvh!5ykxs+;%C?5Z8fQP-|zguC|eiD*QR&= zJoH+pGiYU0ef-?g6A|;~i6SSf&My2arD}yp^y!(XQ)9kSo=VnFpHq7!ovp`q9%f>H^X>NRC+C?DMRx z-o2KuhuX1u8^&FvE>5dS$h!Si#kZHlUlX+D^F?_pX&5ySZ(LW59o#;Hiw_)7tL3fb-cLV{!l`AW|_P05Vt;+*%HLm3D zy3*oW@gG%Z!vdZ;c$6`S*}Wk5d{BaQ#Rkp-;pEJlUC+EU<%c_Oe6a(J>IpoQXf5AD zZB7HycTe9OZ8C-CY@B90*LyDLAT{J_M%!X%e`Ma2@ueaVfQY#UsIa2k92rg;6EH2Q zArh*LCMZ1sQsh-83@;@tEDfPIl&7-$Tie(ygEp02n3&7YH7STihODJ#LcMf$0lu^p zmulJaw2>)QG6-NKEEucGSXNHSs#4j0Tp7Ig4I^xp-^5ay$}Y;yV<|{8!4f5i68OA~ zDnq4^oi>t{V%F+p`ROm-gMd$|>_rxfNroU+t2M!jCXi-5B9Ka@2w#W@g*<4%qn4Cg zuqs|T73YH(#z-e9+-xve3}iXWhly#(3QH=R4d+?+<1?Cab05H$Q}~br2@xdl z5u*`#)Pu5QR6>w@0sX26RR9|m$tNhX!i*Ccl|;EE?okLW{=nZ#^8;GyZfQ4FtMBz4F`K$2ytY+q0; zpXY<=T-Z=r%z~w376O9ug(8`NFB1q0_^2#VAQOtYe1VMrh&`z_=$8CHYhU}YQihA3 zWuV~tOZ-E_J*6fV4?hh*mKprb#A5l|LWbePDNtA?q4mcJv4*GcMOe9>fcwWi!QLM? z{E8R|6jn}4;5;3U@_8amn8cG}Qj|v|Vp@SfBTCc}n#a*8QfIMZW@45e@(8(t0`+sn zntHEP(;m0CE+Tw&fRynBeBLl+D5OuqMt=YFpae0#02A`WBC&)g62TlLgirNi5up)@ zrMOr;tn~-v{TAu@6>&ek6vVe7-Y;ef@;~JsHh5$Qg|rNh!JQdy^vHvq{vKa2*5C8E zC$ryk2^Q<=B2UEcQ@Wng^+XIjk?~V?J*Df37*CP;hW?NJz+t5hEB3MrdegSXdY{E-ns55rsmoRx5G5 zn4-vF4uSzQ?Gz&VW+x~E3bR$tiBLVAzZ_IaBI``wu_po9yoa^O%inn^~RJ+iww zYM>*A?nCH-5_-r%)9yF`Q~;DP7-VE*bxe$d!)Z!R-lI|-)$6;ftFJUR(rs-qXjGh> ziKt?eOE{S%x3C(;9m!OKqQF4E-G%v$U%vcL8&9FOJW_R+ywYHcege4b-M=!uF!G- z3IU)1Z~)*0;3xpS3_!zErJ!vT?QEjG-6{?sQBWrbu1w%n0a^`cl1bZ9x=BU5O6iVT z+S>$tg%<;*0u-tkr8u+N%B^!`HaFp|tu-Exv#-xX!?j}c0JVk79ZXeIY>A6QdXpXf z#m)h1>tKDykgJF8?&m}SaV#Sfi7b}Kma0*kUg@YVZK|tob=G;@&OWc39_SG(m9z`c zUO>~Z7PWA>;WMVj*3jE4Zm1tVsg4dsak09z6t~$(6sZv-^>WmyK--i^mx|k07)O`H z($yTg0i|7X+M|Tx7xThz_;bM8AOnUdl;yDjX3?Z=#D!I!SLuo5!T|FG*?==b(i|Yzd}B%o3`)nt<)8T(v$DZJoq;2-t*6Sz9hPJ>w#`VJP!s=2V9j}k{SxNh9%$QkAno*m@cpY!=FgkB_YiOOvvC`S z+)D>u&93AeSUNuXndX3+(bHbUcbKj*@=m%co$(b}YjSQs|4n>q+?WVKM1dV|PpZ0B zdduy&G(Y#^ceaWPZ|)Y%?$REtd^@V_^SVD?KVhD>v1mr&8y}B5K4bNjxyN!2ydE93 z^V~A$)<|{i_9@mmQxmcO8+WX-~R2Dt!8#u=uO<3O0&0 z-t%vbfAho6Ms3c(`!@;>EtefWtWv4#r89A>g27t=`5ii>HWF?E~E&k~a7{rcy9lIMBf zcQWIh{^|a5D_e^Qx3I<3OKgg>$L^~ zj!@VgiBjAV*=GJu{K$7sG=(wB*qmc7Z-|Y$t*;wrq-zCJ$CTn z5TZflv6O`6qLxz1S})pB)s5;tG^-+%cLHz#J`9sA7TIoBT`rBH#yPIw_m^aODw#yN zoSm>bX`7pKP(GJO!UdTSRVtWZ6rGJ_d9CQnn0^OocYB-^kFz4_l^7|)MUuW`M#>m+ z-i#U5RJoC}&|u}k<_AX@Tq;H;ZJxBto1-N|h?av|P0gcm4!4S=J>+n; zu@nzhbfuPyHw+zB@)j%U!Ucl#(@coxqoSAyh0@VzE}1kknexO$tyV)|m%tUrh?IrN z+W8{xFEf#fSF47yHFct%uFjSks2jIfNSn>$aPqiYq^KavMSRU=;dC@sNTtoZQ7_Zr zW3eD_k$ny|fG5JV9^tbIe?gZ^xkR;;uh*v#4Ilsn0aO4Tpa4+805!oeC>%t(hRhP@ z0*Qba4H*xZ93UQ$WJ6H`X&lM~P%(l`4elFH0?UBFVFA%5hwzx{Nois>s~Cn}ts1Dw zW%mOS?xs~6r#XBXmt<0E&8yc#*+#rLn<=AG&1D7BfqC2(FYO5MMA*-&azKm8Sv_Xt z^{Sai^)kt_CfW5`5Z`gp#*_4G&0!c@slgN@817`ogR&gy`rwC0dR|wSE!h9W z+65bH^05Q^UwrMFwe8BweZ3RgKK_0tc5}^+8y6dsNomoo;iZF#y}zCV2wZ4vz!t6l z^7?a=?dg4!OOBoVddu$7ogd!rp89CzZt`*E-W6~4m4(L-CI{_Ty-(w_`cd-2LtmZL zdaw2UbL;OT0o;Ff^15r)JE?X3{pWjHdM{1AIX$cm|9)hIDV$jP#-Wj!xjiRVT-x*J z;?KVI+&Q)D*dtv%7k}RPf$;vG%b%=a-`aP11u?LG@N8@4_|(9GI}7hEd1mYR$xjQv zjeRrD-5#4(QVZ6cN|ArL-+LZEwCn2F&ArQyraPEbhqeg^w%JA9t5nc>@si8A|3RP6Mtq5zV{yAKkwt? zd++>_Sz&71BijIA>hPh1M}rv;>fwn{(D%GEe-7k(c6%mIVhMIq6{EQXZYV@mqnGo1vz%zvRd1!>d*-n32r)>J zkmbOTv6_lCi{VZ!GHAt+PoY5yZ5jwUfd>g7g<)zqoQuT_f-qTjS&~-L=}skL zW{i%+xhN&!Y>E(6GLfSdgVid0-V#d<*=(h3FO4%XN{F*EDJo1-<<){zsHUp6YP&hd zE4hBHJ8XtIh{zC41Fi#MU`#bC)QM!1Q{6uQJ7d(Ad3mMrtl3-cJoT7 zto5vXzgZr-7V0_S2t$wwnn`nfR+fv3QpslP#bUEsb#1%bZuk3r1ThteGDg?Jd?O~e z$aI%4^pd8ZZS;-ypzd#WhG>!uhnZ+pz~eGWDJ-jrQXv&A)9c03O0DiW?x4#-O2jld zoJ-+GhOFqERgfE%^oo`1G%J3`84T_q4j=)b0T=)lzzRSQ0~A2wk**=jL|#WCK&7F? zfh~Y10g?f!QB>|nmQkX)ELk#ynyEAzdDpdk-$j8|EDf|i z$r(|}#8Wn*daTh;T7zt3SZ;0FUDW9l5nymkpu$NG&&af%7L8oSEae(j$#pE>bI_p6 zh$6B9d4N!mMIn%TfLLCy^mh1;Ds!~O(@l|TOQfHOqZE#E z1gg-;=8!7}$Inbp{&W8a=8w+Guy1|sm4Nt%5AHwq_$Ox;Prshuv;CYlvUu-5;kCI- zcgLUFe|k=hY&_}b&t3c>d=op1_jbPYOFVt+i5I39oh$QSTzcr{_K#L|;l($%jb2+@ zI{Mi3#&frS9sB9q(Nk9F!^?>s$B&QQC~RCy-#(eVORTQ=d*4gWYdRkF$*X(nOzHFX zyX^CCdHYsh_676arv2TCD}xV)pJng=Z|L&Tv+H|?wy~1n;m}q<^00T#^27@ z&ePNd{pa2I(i?xNS9eZDTE!F3%ifyBs+Pa&(L=B9x^aDR d?`Ok*Lw{&%yWNYQh6BrRcxLwCHwR9>|3A|c+OPls literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_2_3.png b/resources/g2/track/wooden/large_half_loop_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a683b54ba7a2110043acaddf67ae63e086cbbc71 GIT binary patch literal 1061 zcmX9-acCQL6n<&iUc0PhBg{CXq!Q%N>&V6-Cp+Y-*Ba~1Uc0M{5aHI{SkQY`Pjs+Cw2kA#N4YhM+Xxh)a00V(7!(OnGN8Dg(FL|1M2a3hK7c`UhnYm@W{x> z=;$bhVPj)s?!qR827wpc7zt7fgX<+|NokBkCC1JC&qi9jk9 zPG_RIJY6jDm8xjjO2f&w+B!>MaoQ(yK{X!MB)qJU>si(=#v4`Ht>-$f-tX38ArJ{j zGoT4rMaJyBzgY?N8X?q)qMnF$G=ypq03JZZFxl@{Lm>^vb(&u1`Fb+hRMq?CGP3Ou z8Hg~!C?BRpJSG!ym6SAEDY03DD_DZw5KT83rb5wJgcb-+q7pJI=lEP%ESs|Fs5Q6X zbSkaB?Pnk$Krjj64B#3@m4mS=p0F9&iRW92-qmVoohJek6-vj5e4MUGtfdG}R%#ZN zwvp}H#lB;pcFiB4a3W4pNrp`eLSB+e>2x)px65V6G+SF+-EJ2_NCv!!krh8{g@gu? zY_Yj^Lhq!luC~>yc6OS52IGynsj4$#H`4ZyP~qaZ^^Zj;ABCZWK9 z83UIGBmk0wC{H4tM`j8&a>&);Vek}iEW~*%B?Z+qQP5%)U9zmK;~1Teg9cimB#;>& zqXl_AESk9N(pooR^wL(p*w`^!sM*B>K!veb)SqC&DS^x+IZaLJ1=TVNPR;1JHPmZS z9EVImE+90>A~%qGgitn9YPYFU@e!0pgH0raR7%QZWHOqiqD6)@SkmUATRhQ;N01ms zDvnAdG8yD>gX5+iRZ9gCG9=*gGJuc;3F0 zelJO#`0d8ok58Y&KiTlUb>ZF3J+C}t(Vx-*qq}{`cz^o%FF(^K?o54q_tg57@9O2n z|627orQOHAAKp2;?p9}0iyuWO>4UG9Z!FzhQ@^bJv-jRl*Pd@IKe_$m=gZ9`y|z+a znf>n4`Pb7+)v3v6pF8}lk&{|Blr$npRH literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_2_3_2.png b/resources/g2/track/wooden/large_half_loop_left_2_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a545bae4d3f48c7fd3f6884d7f4151a9a60154b GIT binary patch literal 5178 zcmeHLeQ;A%7Qg*6(1KkoShO(7q_PpS=}Yp`q)8~Tq$RDPO=+qrRyMr6yo5}eypWeR zg$^4bxJ7~+*}Ak^pvz{kV5`Lei8}!^m`ZVqX0bxWfK@A2RJKBOi`&JwH)(+~I|{mdRef{QjFo zJI{4L>M3M8a{l@dYyCi#y2x97;KS}p*Wq_(5?521d-uJO`GS&Vz0&r5*UmP@#3lUG z4%6dr&A(K*W#hb8wuJxiz{-bmo?X6h=H5TfX~|eT>m@~o`po5jZ#g!c{zHnlc<>{| z_^(g1$$I|! zOH7fawCbq^X@i@+3g6?5Z1d`cPo))o$LKwGyzF$zV@Hw2hqqpNdwAn6cl5Jk6JYP- z_$%kKQ>xz+3g3OR4e8#tNtZfjGhm)rWcvERw}yN7{7|piSnXc9=i-HN^Xx}TT9TIT zC^+GYus>n#i5+&mKhcXlv19J%)aQ%6d8Pk3S%2=L6`e(-#x z+pxd)Q16_QGY{)ehPoY}eBOQb!EQ?P)7zCRYu|P5K0E))YQt z0A>v(AJ2E&cT>BT0_jU=w8 zI0@~BifVj=6_*;>ilymG8f6f`Mz}Cmqpi+P$r=mU30xU`j!z?ORzk#OEo9e}SF)6( zlVFMRM0tE(Nu#Af$X=SxTH-XCWL3q>ry$^{kiFLBa>x+G?RMw6(LB;=Mg&r+6yXaI zp^yh9c+`5k3v1-rsoXfkBt|ho;ZBRgWg+dXI3{Kw>s^IxHe6@j@XzKbFTV+Ir>0nd zd?1aO0}jPFK?{uegpijnG?{oJF(2g>h;T74Ura~| zkw8=+FbJkWmDwp5X2*#*6a>$+KpZ|U6&p+vF|WWV5b;DJATYL=qF9C&CFn&yX(^@uUX6$!I|NXnuZv0?LTX zmXl5!2GeP=VP*nx*v*NBIN`FQ%CbVXFpqz0rm_xmnVU!Rzo>?tj=ZgMm^tg|GViN#8^g$%72>Atkqx5!kiZr?0n3E_n zLmnYlus{=Bu^ygE)#BUb-D`<>9w22r0iQRGGBz?5EE3-_ZbZ8T`57Ne5(3k<7^pWn z2e&S`6CyXa!YRJuo6fKJo65tlXaPdsHF8J%-lgj@XXl9G~=lao_YQc_b>)6&xJx#u1RgE3>q zjF~fMX6NSSq9~$NDzsWPj@MEY>GgVBTRVDsf|1BTEH*keh9W>A2O4!oZEcp-%5*m& z%|3Z+yQZ^89|}|bQQy#TK*?q3*>(8M_5PD2cPxxs%k_&(a06l|2W@dVFa{L@lKrTO|(e#@9Im`#A=XGl7-RXv>Au!4;0d_z=V)E}V_ zX}DRqB*(4d`gHP6Tp6OYQ7=B&N)2~;N5ie-(Jp#8l9?spaCNA}tWdhOS|5(LyWKrL zU$~#k)2d#8}GaUD3rX~_ayb`2Ufp#g;uo@ZA za7T2xw4Ots*=;5z+|Hb!Vzf^r~?E<_{ zepMoTzITWEfs+$8+~Rjmm(oWr9AF?XJh!p)xiz8RA3d*mb^Pqh^nT{yZ|^;^X7t)7 Q7#t`osVIJJ*_zG&1+q|@tpET3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_2_4.png b/resources/g2/track/wooden/large_half_loop_left_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d44a37534b2c39efeef8e5e511ae564199570582 GIT binary patch literal 1436 zcmXAoe^AnQ7{@;<`t?T+lNA-a$RVRf4ePtfHqx&S9T}^y^=(6?!lK1ITHiBtoUz6h zEh=U#xJAb9XyJ`3Ht{r%^Ken4W{eaI7ZoWrN>;6yapjuVeMZ;a>v^7g{(0Viyx-6M z+SQ``+=HHEayu}A*sjp zHkr*$x`SF@#2kz}qElWf251DJD*#giI7WnTql;V|sTU)I5<^sFPZ)i$7w6LCe1=-Y zHAn;wxzM8`f;xHFqKY|n39n@;=!7vJmB#0AB`9Bk3DpE)kjt%VwaZ}e+H66$I~ocl z5(x+xB;Z&O)Ik+`7({@phzj*FsXeatB#fb?D?S~bf_Ypjl~1ROm@IrkKmvdY03!fS z00sewApoYpg;1k{PCJZ*aSk9+V8(!31R^+q1b`$R8c=A*p<4+9dKj^T=f?AaSO_FI zqLkCMYOdKRa@ge_k1iN=#^XVl(qbq8s>#EQbllFAxjAG+U`$AzNwsIn5}0;JVK~8| z0X`EE@u*UasU%R1LTuD3?PjgVX%70F@rVy5qkOR#x&e#;2vc6@Q*tk0=rq|CqN#SruPY{+Iw>X>XY+}` zpEHwXss>8GWuZY-cqsGu`~`1~RE!qgK2|z&t){8?CgI(4uPm)|{7v30YF&@(Y|rv% zN3R!cKD+IuW9mMCw|aDC_o7nK##O`P zLx)1@Pe*pL+4{xo>H3VKEh|s6rOVlS)^(Kn%A4#bh*usT(wIK$c&YxBqGM`{cWjwz z$Av!gr7h#Hz0RgJ`hWZDpHrIAJE}K8P5ssb&BLC7{-(C+?&^L{^orXwRONhpCyEyI#+Y&rqhx2!#$b!iT}n1=3SPw|BbdCG#}nK z_oU^gxhEf9zH(UXZ+O(>Z;UtdN9&~i?FW&PC9@u|`R7}fjc#P@^Yz{6Gqw1~_JwA} zm!3A%#A>^AO9yFn{-KU<+UnKj_|^6syUM0o_jEnj{_{}(?a~2mU0}oI76i+$98h0E zf|_leO@_1Jzo71$w?5G{UOSWZ zu2+y4dFY)zBWuo#k~z6`9yPD{qmq|b70l`W4!x_3rWfXu_s-n%r6LAus#jNaz1O(= Ef3iY}umAu6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_2_5.png b/resources/g2/track/wooden/large_half_loop_left_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..022f7849b0f2358af57e09686714a88ddd5711f6 GIT binary patch literal 1686 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_2_7.png b/resources/g2/track/wooden/large_half_loop_left_2_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c4757d2834ba53dc9ffd9a7f11098cf3f28a96e5 GIT binary patch literal 1362 zcmXAoe{2$W7{I=WzF^>l2W4wp-%dabmc^R!pRh>8=HIb2W6GGd8B zh7OhKsjOngQo5mH#SXK&V#J9XX3Zp%%^GP%$1>)aHcBnESZn+aWAb_5H}601^T+eN z`<5+LOf0G>0su^GsIP6zPHDE@F38RHo*jL^1CR@rEorLDt{e_0CnqO2H#aXYFF!wj z!h{J3f)o@K6c!c=#9}dqNeMzu)1*eD((4(E#o}WPRip`2ZH)=#1>Du2^3M{T!s{wlpKrZi?#FYNIC8 zpvwh=K_SK$%LP(OgsUYA2349c4U6lYgvCqR1GGD=_Q$j$nNX?_<1|WYWGaSWtd!NI zcKI29#1x9zBS}v@6XeMOp9TUg5E+4lMPx34!Y5G$_1Hb~{1)vvz z1Oi|dihxEv^txdzN=X2N0lOUd6(B|dNCU_Spbdj=3i@?0Y=tp5cwxK@kOWXth)yFg z8BjZ`@VGUBfF%;~CX*4E)e>p}X5`9Q0p%8{{SqdIvniD~Z3tu>;cx`jwaBCnIp!s>ASvym(4#3pENF|LCwGY zn*qoH4YdoJ>i4y^EkA0hEUvo)ug^SX#;X=w9y>P8y!xlreQf*aMcomHd98mB?~<{k z`O*CINUOEBfErFXS8^6CtlsJX;@yh zqpRo1Hts`NO;PK-UkWc%Ayrjp%aI^H&gmfAx*D%;S}=Fj^Rdr2&@BxICjQuMR*$j2 zP0!nKqxH#23a&GAL9la<4z4-@qmezi^aQ$ch1NuT-B>(^b literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_3_1.png b/resources/g2/track/wooden/large_half_loop_left_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dae12a6335c34a45598de1e5d460331a31c598 GIT binary patch literal 1106 zcmX9-Z;0D;7=CxXyWDo0omQzXu((xLFlvx6vl%3FxlwO%%XT@;%^*<&*KI|DMyWGM zw{=pya%QZ$ekj;UK6Dyq(fd$lWyOW_rk#s$VuhS5uCR{HS!b0)2L6l;p7+o5<$d6N z-uK--yAx|xty={EYsQ}$n+Pf$#C;>7ATP~q3P=d{JUh7~pet6a7#J7`g+haagF{0@ z!^6WEhK-DjtX#P=8jHnfn&Np*k_1gt3`5Umv&CY$TCKV6qVMqv_?_9h)aHnH|-IXhtS1EnYV0xh&r(%FU|oFXXzuz1(vXIH)9~ zIj|(GqGOGGxK)Ytn>gxHsIQ{i7D8?eKm<@ROb>@MIBvz`Hp|Y5;zBan%4BYo%c#-7 z=}3%=QX;{s@q|vw8CtVgqr_(&p-`9Xrdsop1cOtF7%P#2#wa?k=fqrDE!Xs#mvQ}q z*R8ad8(|J25=4_gm=L!xrW{RF<4S|mJvrYt?4ISKIgyNL44zJqd6}(feBF?|tkx$ub; zlWjiNQS5HI-m@0_)$Z-qG8!erVI~?)5HX3QG?q04F{cK@%xb={P^tQ^*Kc#63YZ~< zGb&-F$dbu9IjLSsE;yN1qttD={r(Na0muLbfCb$|Am zW&{D%0QrDW;6*Nwy8}FHmO34#RJ;SD+2j>PN~JW@)M+ZqP(_Y*c)B4_iz3;TV@M@X zCXPxps&U8@g5zf%9liDc54=9HTY_y@f1VC{7$19ja?9-OiM@9ndvGoP)WBOPcIK44 z@0}x!n->r7-1f^igY)wHCttdDEwt~#)}+~^X@#v1t($$kv*Fw;hYr0uKUug)Ij1`h zxYjp>;ENxdu)EJY=*Jp_iV*Odk>#peQxvo%nz0Ov#TGHzF1`&w|*R~ zk4&Ba;Ew}iGwRf?OW&Q&-Mx0^6mhwE;Z`Xo{eETtSZ6pkch%f@c4FxbY@W7Fg77IpmO_FyqEzGL^; JXWL&q`X5on;e-GH literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_3_2.png b/resources/g2/track/wooden/large_half_loop_left_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..40d2acd0be016959a489346b48f30075683950b2 GIT binary patch literal 1119 zcmX9-f5;Pc7=L{CzVE%dUia$2(Ys>SgiDW?>+PU3PB_=lx4P3UsZ0N#aFZFFAe4bzbJRkUc zp6A4l+2H7k@f83tIz6>zu3snm@#u)7pHGn?H-H0n%z64S-yO^$M5%36v=U{DDsjNRunmzOlGtBQpqsQx@~v5U5W&j0fBdh!|qtj z7f+C>G?UE<#ZshPQEFDY*(z`Z7Gj(-?@>cOO~UgEbuP(OvY}c@wyUYOUFdbppcf(p z#97cptSDoZw5w5ccWYkMCQ&znmNbM+KY#!b!7$n7QoUXc#|sQ|P7tcmXhT(R<@2ag z@ltL->mdan6TyQr5mG5hW0V}1)cH(VEYu=~9re*(GU#VSf|uy9%*iPsm5<~N*|1d8 z&RFeYvsZDk;1mz&0k5Jg8>E-s2`Ny^3JrF6QI&s&Dktk*l84g#+Xcow6IF0Skq zYeclkrCQ-aJ6`T+^=_%X)aW56;d0R)PtfNV2~uJhg%?th{<1_Vov9W}wrO>nEJS!r z5nXD;r^Sd|g4I)EITx+!YNL{CH_UGL7GeQH01AKxpaWC^S{R@{1P&z>q!*Cg5O9zw z$gp4p!4?3CfMgF!Q>Y*yBZg`zWEbFp@ig!pgaj-mdDJ+O(SpT-R4ykiOK-O=)aUX> zfl4@8%_9_i5d)WPM(c$2ZoJ&f)|QMWYIJZn&^|0ky27k4CQ^wguc@&@MlI_Z%hcPp ziMmai=aB)(288-vr22FZ;Y}uTtrnfjK7>-MapABSi%E%uOp!^N%(9fuQ5Bx73q(8Q zM-d-Vag?Kw!6J+AA3r_eyz}4(7UpI}*!=so`F=k-y(O?~<6G~Zx_;7J`^fRVfn!VZ z`r#|z?S6ale%F5D_~vUbUo^zdn$5B9JBqNWa>y`GwYKkUEfpE*o#9|@SZ@19<{ zs(xfntL)Pjo_y@;8@sKZb$7$%H|@pG$A7qdwEoUYeeBSe7xtXrLsMY?Rxcbqe{bXB?1?ou-q&wFH{1FN|9%eG4SVmr$lm*B zf8KTD^j`;E3)fz|@byz4t@wsNGrFpM{?H45PJVi6`}h>6UOd@ebv7_Haq7UoRP)T* z4-c-s!u`7DW_Gyo-nKJ$*7SJCq;uS=hDWL3)!%;k`RUhZUis?r=DL-p`t8R*PA~oE ZoDA%g?ziT5_Em!Et+QJ`dw$=s{{cf9>rnsz literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_3_2_2.png b/resources/g2/track/wooden/large_half_loop_left_3_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a93b37a93e15ee5b0c382d65a4f2d8b009c9398f GIT binary patch literal 5151 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_3_5.png b/resources/g2/track/wooden/large_half_loop_left_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..594d06bae250d21e2d4ccb8af1e1f720c1bb9820 GIT binary patch literal 1603 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_3_7.png b/resources/g2/track/wooden/large_half_loop_left_3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..16b5740dcfd1f35e9a0069e61c02e915d92b8e0a GIT binary patch literal 1387 zcmXAoacmQH6vuztI&NdmCUmjj4LYsTkaH{Z2Hj}j7#(!;*pBSb0%a5}P@zJHhpSq& z%Aw7yT381+)yYy_fgT`~LC$ zzV=m3>f-6oPX_=LH`LcPXJ>V`$_w(c{eo(Z0DwHOYUS$X*)=C8CpR}YFE39Z5aj3Q zPn$LkL6Cxig2KW=u~aI>ak)xG&@`#nYZ=DGvMk5B{r*5W9OLaLY9tQ5%+27vtSZE5B7PG;WJ~d$$#hta z0v!g-1aQ!Z*Mx-Z!njwIiJ&kghZ!B5azGfC0zd(vLlBctXhl(nOy*H4dnszjV2E3- zV{SJLg-~21CB$+{qSVRMCQM_+^$sQDQn5bL8KgZCU4S=86sTM+Rni!#S7=QtlZ~>u zb?$&E5VeMRXEfzaOooI65Ya$v01^w3IS_?gtoF;aA;J{Z*b|H=?FhqO3KQuSs9BBK zHA=5u6=dirtB-R`(#NJl++@@TlVPDqA;UDd!a%6ZG;P=GU1qc2ZV$QL(Lf*(i>1?P z2v8G{aR}}es)8sT!3+tNEvfaS%)zuHmhq>i;*+ol6ABe#v05UfF}Yr;WJt=U%O11% z?am>upASbf2?FRygrS92oy1|pTo%G-qk}HPkk1+qxl-|PCNl;J05kwF05|~f0WbtW z5&=V$_SR zX3XhOdp-JKkc~!tsZA4#g$AdT-;NbNJOR8 z(nh1+Vlm-zRw3sI+^51rq&!ApDUB5BB+x2@E*u637$vjeSCkh`Jo$lL%}q2|di&ZI z0CHzF)YY!8Z$I3*wu7DjOkF>`oV%f#96*~r2e)?|>KgoViE6`pzRg>^cXSp{TuKl> zbWKim2`k6_@v%8uKH0u^{NK;7#`^N?Z}u=1f^8=^CU1ma=gy8Sygs6zIC5)ExzNzN zZ+$&~#xzerl}&K_ete_Er5qi8uBBf3M>SG&s<39;-?vVnAJi~TzD(UX*S=fc@B+q( ze7D~&{!}x%zHgwmqV836T(q6Nvd+EJUUH`OCGnk5W!L@B&Wk$FoS#uN`c_kCL+i!% z0my50yOZIj)SECP4f6UrjOUX-BRb2~i%-Y{Puf6%tQFHgHoxi_g8=SN2 z#GDm9$4iF=@yC`O;{r?Rhnt*%^FIrZb&NfleSE=vmdrWy(?nT`W7UJ<#@Mg@@6}hwAo!`la+NN_e!u6T(03jrBy(BE!PQTe*FA%J+X?9g6*Ry{>z+oO$ipcdsQ2r!{Yar45ec&7yX(rbLZ$i-HobmUvLxG5BLT<^Z2%GVnD<4rn-~MHtzW! DvMY0I literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_1.png b/resources/g2/track/wooden/large_half_loop_left_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfb02da5aff8d0eb274a58cbcc24dea2b61410c GIT binary patch literal 1416 zcmX9-e{51`6#e?c(jRM?MWq`ybW+7i8q}vnL(?}0O1szgX&;p+v(&MbOx#FH9kcww z6dhKkNU`F?jaf2iWD`y8u(Iq`(N#w+Doz?-l{IX|=_2WvYqZ_IVNA}wCpWpd=Z|x4 z*TzOkVgBp+0D!`}T5(gFSEZ{mH!I!m8ZI0JAPa1)m#$Bb85tRwnVDHxS=rgybLPy+ z$;qM7Xt}w$d3kwE4u^vve31wx2u!JzYqc7q(P+0jeLjCM7@??SDuwU?Dg-!IAeS@L zYPL?#H<^WY2k!AH0;Dz+Hpk*F5sxMl7HBZ0LB_TyxlS$8ZxoSsS;(iMhD`~|HJuDf zSU|x8Iuuw4nnyz;&Ge{;kqWV3f)7&)IAeh@$N>NcKtZEv=yU^%W#MvNLSa9S535vB zgW<8$2}zQLFgPfakF$jeu0+F=84#sKsC9^pUd$FCTp@*@Qn3XrzJwzrc$iWk*N8MG z+~ia^{ThGR5TtD3geNvl(ow)508<6ndcd{N1Wu;J$CZ<)CM+|@w63Hj2>Wp!Ln&bC zBs{ZB=uwISS|V&zM(x_T*O(;j(_t@+2k8s}mnTC6DpaH+2(wb@(CK_;GwF1O{r*@a zl1wHcU}*r?PD4C&QGi8+c&eDl6qmaaxz~qtgXUri9HQczmT$sKs!T zB7IEnGuwteJ}MYa#ZaKYXj+19P_Qj(o(<8ul8Zq$3dxrc#d~3V;j%EdUk( zyZ{UX5T^l{1}=hnE%dq|6~(zgg8&-}{1QOn01^Odn9z(s7Y_Yu7&1Z11zs300GJ5K zaGF}lH0XFXi^Stn1_H)#*qca%VOoo&0*JloPTjA$wD4``O_oj4#X?tkKAA`{( zmjMK9nuJf6qii*S=vA1-pmx~|0k16_^d_hvOvMBk2K@k10K&8vrnKBku#9>~JT7q9 zUqTxSiR5xZtyb#w8ia2Y@a-t#6(J@X4fRCf~mv|aYaykl3liVM%* zTU~nY=&G>dZc!uaroFGJ{UrDK*{0SStlWL2u4e1qb(0geqLCH9cRvaSYphGRKCXQK zr+Jt6v_HI|_=LMjy{v5CacpvUTW_?jI<fttgEz$o2SNDsDpY5+C2lA>L=RSZ<{3WGJ(;B;L;L{rMW^(l&`(e7P z?cmNs1Ni+@Lyps&E7+aRj9rpR(JS_n7IR03;d$-Iz%FUe7*(bm%s(d{SScub?eh5k gJ8-#ld}@mQl=wWBzrFKDI!>T&eWUoyTdjNl2P4;d@Bjb+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_2.png b/resources/g2/track/wooden/large_half_loop_left_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..95f829ff0a798be409a7f516ea8d65c9f317da49 GIT binary patch literal 1527 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_4.png b/resources/g2/track/wooden/large_half_loop_left_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..45cecbced1ed84f7ee6ddda23dfd53efea7cd664 GIT binary patch literal 2040 zcmXApZB){E7RP`15SqEzprKNsk&=srNggyNX+%Sp^lxHeOD-B27Nb;9)?(r018Ztb zS)x&rky=vXrVSNa=#W{dLxgF@wp5g44}%l6mRA39&YbhP_n!OaeqVg=y_M-{4By$o zvjG6UDanZ$Gc{x;c6qtaWY1^#l>oSd^tG8uGc5vvaC38WcX#*j@bL8XoHc6}5{dNk z^78if#^CXIGMPlD(^xDfkH-;-gr%jW3WZ9m)ftTztJUdpkx76?1rXDR!$AuKxFQKj zRz+1Pp;j$dZxHpHs%&;Oorq*peS}Pml#P?~2r3b|vy^U7u=}+_YoE+vRZlvN3@qRh zK@kneS;$r)(olsOX+^vGv9N;#ySVVQ9EOc}03ZOkNTd*jl47xP0zplsc0y1epFbj% zzE-JVg8@rM<7pTYgrjl^3?Y#%CG+G|k&<4jVbVB@y%EwW#BnFt zK{6Frr4#B*Qlquj2x-W#p!gy04oFp1(Mu~qU*7&ej?vSm)SXLN0Htsx45*9>5)m;hloN^Fc=07&mxj| zRH}#x$+$DaB-*OlzE-W(XmZ(TfXhURSSTqMCl?Tv5}HQF(kuCW8tI5Z=@>D(T(4mo z0Bit60LTH*0MG}39SPtWAUZ4&!5TGe9f1fyNCveupkn|l1Yj0`g&4Ss467knCxH89 zuvHEIFrEUKbijs?0v<+MM68uFTGc$gzSLyWI2 zhIKU9#GF}v%2J=-{55{|ZZd1<9**7TNkMzouc1PRFCg(nQo1Sm=t^QkW?CO}c zc+}93OHzNTJWs0kxaPmlGUu~<`?Vt>N}oVGRCw_A*!JpzIai`9-^AXEf6$RI`)AR$E?%*dF@}eobN5=}k3zPC7!p1C9?21v+kD zO1Dj9H=JKyV{x-|TkpS>bIJkUgEPX|{B267Lt>{^^_d$eL<*x0%E?+Q-a z7nGY>$sG*=8Of86!bkVLX(?Y{kaC~ndubJBe4hVe+jZi_tqaWh`m0I4)0axmjc;W1 zbPNq{UifQRxnH}x<{o@2ET%iPkh=U$<2;AnCE1&_5zA~Bn9+lAJMs<3yXD5V@rJ?$yf`#D5uNg3_gQNl(j5JCKH4JPx>Zr=xkPxm4C`(icR zjM(_?y?9US!TIe;hAC`bWnD=HBV1Ek@NL=q&npUc#3J_krq3&E4_Vyu^5>x(k9Y6A zvdW&Epv1R_j#NergYTOW!4mtC^4KmPj%IJmy}32zJB_b=h*hbxTiIE6Fc&U9JbP~E zU|9ZB#6Ww|GfDUO6Yqv{LJzlL8B`RRKDHG9rdwgFUi<$O&e6q++PtU{T7$7 z=tl7;a6nO_n|QX{@5iZ|mVvx1+SHcDPa_7tDsj4~@dH|@KKm*vWa)|1_L8i`+bG0K z^w^Z2pXumFzY>f_x$3KCae%om+KwEXnqNZvATM#5aeGbvQpDTiIU3aIHtfv%0x3yp KiR}qF2Y&}??V)4< literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_5.png b/resources/g2/track/wooden/large_half_loop_left_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b1eeea022bca3e9a9b9cb31f7b47ab91f99457 GIT binary patch literal 1486 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 SA|Gu4>gyVof4HpapT7Z?R>R5w literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_6_2.png b/resources/g2/track/wooden/large_half_loop_left_4_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6ae7a762b2c6dd0676210f9b526f011f56c53e GIT binary patch literal 5194 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 b*zFik`krNX6RTj=0Fa+sl=H^gt@Zx_A`6|+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_left_4_7.png b/resources/g2/track/wooden/large_half_loop_left_4_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2885d1f267a1ffdd4ff980658ce2f6b8c815347f GIT binary patch literal 5262 zcmeHLeNa7}%1-F*1ahGBq zw$nwLt(64Zy~RneiE67Efa<^5OUfUJ`_0T7<8u|UovU)655HAJemuap)bV~viuT?b6OL$(VWUU>Y)LkUUGXFZ&^M0aA>9-9J7+;Ob8Z9xCgC$*Qp!@n?e zZR}p~jbhifdB1yS#ZN@OXz<|1UiE@cg+^CQ@Q*(R*am(GxwdF^hfh-IUNpf)PMyZP zJO?{a@dDJJ^4@Uam8@OoP5U>@-hcK@^P78K=6^ZVTKp&J*K60#^JQ&006@$xt4dW; zq*C1q2L^F?Tce^dSTc9FPXB7@;}29lxM^?6k!!DTo_}>-!-k_L=lyoGaLYF=iM6nF z-6IL1ops8FRSc$O{i1aVdH-Vc4xTCcq~Pgykc^Xizk7dp+hI@t-%n3~qpR@O2bpnY zABn~1-#&;Odv1pz{-K?K^}%BE)z_{WA87r4vu<0NXJzYGpO0H+KVHxjv#e3}fjh{# z%x(>zbYGb0#a1`Yy+U2ds1p?4_;B;!SJDeaeM0NQS+1AkHyvE_#Q2HNg2#*3;$Kd-%zZBICUWYgC?>vYN7cZo9L~S%O1xJt=C?T6L_{aa@UI=Q(qsL^Yr2`Zti>cH85)^_DrV7 zafCX&3}her^!jY4bLNVdGHN~_{ygq9H4$h>dsxLMTn7uzs$yZ;Ras$qt>LT=8i_7q> zHay$JQ7%i$t(HRoJK@II)%HpUC9hU+qPTMS91$ZNc2vb}Q*hR3OV}#XMX)6Ti9pCN zsJ2##Im?pRxh|7gUYh^Z6a*Y8I2+w=ryM~%9*@9-3P_g)5oKp*BSJAE7W1J7pW5PZ zW7T{Il^%hZ#K$5wx+S~9BYKjHO2U3kW5s^TM z*zL%43(8$k1wp13^otf$8SGM|l%UAXE}ST+A{_4Y=@2ITw!L$+t1=pn2}g)Z!VXm_ z=v8!=OLdX9&;e3fKi$KkpGI6$16ooS3@~23b9fRq#+A#}( zI31SgM1*j8UP+OHBNhnnNJ=U(w;3A19)9Vq!x=*Dg=niVKj1;i@@BZtBfQo6`TkJJ7Rfz zS_>P>gt@VN%uPU0p;#gp3FRVjnGlsrM37RRP$U;l(U0P#mC1dBqYq3F@wQi%$zwhF)@*uo}P}Ph)Si@ z>oquDPEllCU0rjtud_1{3=V|Dqhn(z0+cyGr%5g^Pqo=to*JaSA*Z=T*WOvt-9z>D zHw+E8sdx-SPBN)s)*4t|oa>{|t~ymuv!Sn(44vi?M3SWQ> z^w$Q%P5mS7L*qRuN|34tObcMu0IruI^)c0*-0~hJ*>7kVqS{8iLAp!FOU0#W9yPDQ zkkgK@aQq>Qaw~ctZN4*1Mog)*WaXOiok|Jd?)vR4MY+z1sWAF=omJfS?l37dDZQ0cz1VQf4_fZq@RYq(kuY2NmhE9x;9otfJ=sR zyrbp*F;Dk+bKgW@hz^Z%Q-PGlP$MbjN|sHJ)>t&&T3cIFZMVOvKjJYYd3q=?!o2Zn`BYq)#9s# zJAd*QRnIh>4m@gkWzX*quXyjE>d}WX5*3HM*I&)$?OHy%To+2hPRBJ~&N#+XU^B{^>q!}x_z5w$@iM(KjNz4{@I8(i=W-bT6JNa_}vpr11}uie>AVrdT2#( z`HgF-T?cnRyt_J{w|zrbn)Zp%k~7wQNN=%VG5X9)KQ3Gd7M$~~Wt_=Ao-Qz_I|bq! zF&+EH`>tesIOuW}*C!*K!L#S*Kez6)O>eI>y*>Ez{Dl`QLgS|vByr@b3rDCUZ#?lv sCcWDC;1AnCfpX$|MN7TW=l?fL*>Pq6(%2=JAc>%;pg8~dlN)ya2i&f%nE(I) literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_1.png b/resources/g2/track/wooden/large_half_loop_right_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e62273adf18c7ed939b2cb080d3157d57ca76aa7 GIT binary patch literal 1381 zcmXAoeQZ)^6vp3vP};H<9d1NXF(VTlp}5^zR&VsK(iS^vZ`-RwB^|cc6(?4rOj&~! z9nG-Ad7Cwg6CHD?)G{TpALvNRESb14cdb>KWd;{iYU_rI4rkSO7?a;QC+DB@{P8@e zqqas~kUt|I08mi1th_!wi_;~}%}V!crZZmwkOgY1S5&0ejEs!T%*?E;tnBP;27{54 zlfz^(b8~a^^76O>fdD}yG8sk?3X)Xm^*XcJY_mB$9&aEp5{V>|NkjrL6yOS$O2yG? z`39rJVnuCs+~raG{Q3}WjmDfZ5mSk>bPBFX$)`x6Lyz>DWqzA7}w6UfL9hbkT8FH05VwfI|ST2JnqQNHL`juG}M3`7s@>v_|#L1Qme2xQIhac?P-2 zszhC+%%>-4Ga0t&V{UW8Z%ff`7z?mDQlUtRNHv(uKoC}vv>OZ_tJUvt&|YtJWF(PD zK)}-hp^b^S*fJlF2#GXNnI)!j#tps%HInqiC&MYo60zA*E?3SM5F!bQqIv~xQKyd? zJ=U(E%M%IE$tVWY3Z|Z5o78+tE3z9gw}tT8H9@y2?6=3mfn;(5VgM)s&;vjL;07QF zK#U1s8e9gAdgyk-NEjCa9Rj*A;FW_24j=)bjti{_bmGvfg&_-!IKfNfr9dGAN}Q=B zxh8|Ci;}yXq|axjX?HwM!?YGp0}vw%qqw+}ul5Rc5tK@(+)0BkWeZJuqcEHha)6Z2 zluOtujISjSqeelQw9YP*&)r1_-0?^NCZke?0(t?A00`4wSkiK@;F*o~SWIfSy+R)f z$y6#rt0j#_9U?JHB{mFk%MiapGJ=cZN&!^!p-Bks2=ro*R;0r(6|)|^{DIHvYY6bc zoj;lZ$mCR&m#tXVv2UMt|InP*Dt%c)FKkB{KTT^ovTghj(pp<_LU6}%RdMs-vBE%n z%V11SZ{4=@{$f&mz;j@DSI5}%M{k&Or#ve@yXpL9{{6;-Lw{cUd_m=biPN`=Zryw9 zhq9)jPk(P+UC+(RIfH+Xm)Es5Rm$5N8D&e6>n6vv|jk%1eck z6GeG#!bVbbUQ@+Tj9n zb=mN7b3@;Q&Fg4pe)Zv!WAB%)TYlxqm7e3b$NNq!9IV?D9DVZ1lzzJY-9s}!9>C`$>j;&xTmWUGnm&wRl9+j!s3WzrGt9{II>D;nARvo@04>_Qprj%l!-U+LRLm zH+Fa*FKRDj7+bJ#i)zy3sR*PN%C0_8S3hQ6zd0x=Et_>dofS}3QB!_u>Dn*;2Of55 Ai~s-t literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_2.png b/resources/g2/track/wooden/large_half_loop_right_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f42c3772b3bb7c081219d10784441c10bcffd8a8 GIT binary patch literal 1452 zcmXAoaZr+X7{`B#hGLCvSd{F>j2aeGY;ThqwwF)gv<92u*(vKua3F13E6>+bVB&prP<-#@s08l_>d38x*O-f2iPEMv!C@Co^si~<`rc9wy zscC6x>FMcA4u^vve6d)BzKRUT?A3TrRiI*B1`Q;&FrzL_&a}88R6|rDAKe ze1lPFv0@IF+~ZXTg2qVHF6L3C!VCgs>ZELwf@@PF7xZGUMH+AsVZVV4+s9%)2@A-1 zKqCSsoa!K`UL!r^V8jC~Nb+G^4kt_y`Zxe!0LZCSf=<`5SSBvlE)-tCFuzh6(&>h6 zHt6-T5C%uY%#D=KMPHH?cQ(xRgPK3r_29Hh`FqslI2j}q>LZKSP4D!S= zt;=ZkJ6vI3Fdh*BIZ9RIbe)`SQt_->k<);CtV+LA7xG%kkS`t|h9Ur@0H^^l0pJ9{ z4?vU(U;<1GwQA_J!*B@W0s;YM5pYXD7y}RokYGY10__-dt6;zY!*=k-cmY7gK#EaS z3Z_oOGn*t1yTaqq2ZK(M48nvKO9>EdhRDRk>}aFt4-)e;C_FW_55h*OMsQGOrBBc&WDXG0wqS`p|L!62FlzaTf`pEp0Sy{ZBS zOCAku03dl)X>noovIEDCuBqGm(bRo|Nn4>X>!o^L<<%Ew1S^&*X*0O=FO(hZ(#>br z&D?cu`>PQ9<|%s4H+CAkvTWa4qRKq2aGq*(&3xL93`*PMg3t0x%5&X0fv(g2i@B5K zmolA6Pn))NXS^P*{H^fil{@*Lto(_?&bc+~&UNqQf@kvX&Ze9t@3fYE9ybLKa^_OP zCkw0As}vX8^B<-y?yfExY|NWX?=vjx-*~J$v!(Xn-?OD@w|CiBe%tyfUR>X7muA()9@~h*1kGtde0fFa*g#G#qr=vat0>uQrf(kJjF( zEMH!GwXJ;C*D3AwHB;&FrMo8secTQ2|O`l>~|Ekirv@0|G6&C9&CJ~ZdgtlrIo7aKa!hK0jJMJKasJBW$i(LX%l zj*&_7!TFr!F@`xeFZvw!*ZlIVcJ0QLyOTdeqE8$%{R7P-xh=bA->Z|>R_E01@3_0u zPh?*HuxZQL*l^hqXW`@>4T}EWxGC>Y-P&+d?C415Dfu-^XZ8?!AN_An*8W&tx-RK8 XWh$qpNOC$6IZ#?sQGB*&?f3r!qb--4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_3.png b/resources/g2/track/wooden/large_half_loop_right_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5d79cd2ede9479d94a4a01c331c0b24dde50a907 GIT binary patch literal 1656 zcmXAoadcAm6~})N2*D(hhFW5nMGsoysKu06vXbSIyjY?nd7L~~Qc=<3z=YG{4z@&5 zNkb~NWMWGbmU24m$O*O27EM~IqC$&Jj?#!TN2yZ9ggM-@<(aV+Tdlv*({sM}-gE!C z-#@i|)e6d)Bq6m&Fv|6>vWVG3AZnrlO2u7n*$t0Q0ibVjC0!&e? zRVN)#bNTq$KkfD+m8xW#tBAC^{2Tlm1d;l;2Gz^B3#jTz8UrZBB>Uk2bNY0nyLWNeM zHljv5X7_5mL1Qp(jV4|3j6anNvk<_>0Y?vb79emkBwmg@AW(-9V_fA(nS7)(3db-Z zTPxw3er$n6CSr|6K+$Qu#sVRE>6I7l*N_^getK_kDz88cWAX9vpL{!guUK) zFqoQ}B1sYgt`P{_46&buhPZf4s86BxwAz<3he+pCHjsIc$iZSEizVT3M#9S?c*6NEJp_GA*#Y<3nR0H^>k z0pJ9H0AK=uGy}lAFcex$knq7|0uunE7`PA+l!GJ&AP%6B107=M!(h+=V|JMIfuDny z00jzE7{j3DSj|G0Q||X^Lm^u{PGmB1nD^r9f!I=vI60V)rwIy-NvV@m6IpX8=Z-xH zreJ~;uz`ffkc(JqglE9T7QMo0HTYcC5aEhPiA*vIvnh!}0fPW00fhN1?0LIi#I;#G z>9oY-{zax(3{|UfgF$Pt7{wx+MC3-q1S$?IL{peBqvAsi4_XD#BZff)#ufSJm#iwD z|CxbZ?QJ-a{ry{A9*n2fH8pJLc=H35x_5YK$$x33Cdggc`y~DJ2{Sy|2wv-F4aSGI zw-2me(U$o9?1}1g!B6O$43w)KN2<3S|9I85T^EDrx!fD&$8xRA@jZ(+?mE6jm^$1u z*!7Cn`2se7>-`bx#Y0YZNezDO{pn8X%vs~F%jy>0<&Ebq*Y?b(slKU$^HbCUusf;j zsleY@QBT`GU?11L75mTbGS(ljIu=_8@2sOtlrJA=$rdZnjWzp~lxI5DJo--1e{bm1 z^6yNM%bl7vhjL8tS=YlYud+ucOAH6@d!8x1t~(Gplio-D_ra$rHNN|X<{CCJ**@+y z$SSVf_;ACF<cofK7Dvbb)k%G9yd{Ew@e@1`J(rh z{SDm?(My|lVyo|tE(FBG=jzQxYcp(F@A>DqCR*C5r^>$`>%8^SXj5d8y1cBYW$EH~ z)AE7WCu^AL(y!M4LGA)2Rm1nM|7wYRTtdJobU^hp}sLW8*u6eQoO5 zzs+R|@9ZCc>@T#Tox7v!yBq2T-wySYU3HsZ<#roxK5_(qQ{XSXaqfz8@0{{XckRNS z9W&I{^FO8h{oAYS3$iH&bMxr%dUejSsqsp5=&#$}6*TX!cx$A)<-&zSwboDOHzz6~ ekDTN6S%a-lDpp=QXwTyV)~#)8`m}Lt@BaZg+1qFU literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_4.png b/resources/g2/track/wooden/large_half_loop_right_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..df7a76dde332139c90932f15f46b8171f6dba7ae GIT binary patch literal 1794 zcmX9-aa5A`8vY3giY6{KG*;-q!x|M8Eq2B=GDuWR)UOjZY^ZeNc4(&1>IfXXiZc`<(Zm_xa;_o}(qj z{3ZD1cmTkXf_z?Clry8Fj6+BF-Rn;+0H8rh(T;7=GbSbmg+igxXbc7u8ykzoVsSWJ zTwGjyd_0jtp)i>YE|&vA0;yE2R4Q~joylZzIGi5OnBO0cM3@Y~VFRHcK`c&@%gHJ= zLvLW4%tD((;&Lm!K0_dA<I z2PzJLA)HNta~lZbwv>pMgoGGKM1m~92;!jtAOt{y!zl;^4T%KPXjV46Unm@r$;LIB zCl(9hc9WPX6b_LgB(o(nzJe~&Fr_eCY3Aze0;3DEdL>T3jLaf2_!Kro7f4xR1y`XL z>MatBQ{nV!Jbt4uWDCr@2^^3D0iq0$)qn=$SQaARK@+<<3ZKXjP+G&V2k95mQ=}}C zicdF)*fuHGrG$Js>9|Q5wClod)4b1)1U-Zl7L6`qvSb{t3W5w$sad6R7z}QU#piSe z#>T?oFak&lKr`W(HUig0g1mHDfU6IRts#{w439+|p@s2zB!NyKu!uxHnF7%nQZ`#D z5b7n-XKIJRIAU}7J-$eQ10({R5+Z0MWLQo&t2uT(rryTL>5x*7u zVLS^6xIiSt$)!Y%if)AYHmlU-()oP$P{@ZwwMa6+R3~s?qR>i~IB5z$8xD)@5tVD+ z>TwkpN2|K%4;a0|beBp^wV_ z36f524hC6f)1Od!yNnTbs~+TY&r%d{`wExA1FHWh%< zo`qLeyNlc5EEhX*micq~&9%x;~J=1c=`<^HtTSXWctc{w1> ztRB2_P~AG5^Ql@`$=@(JbS?bvmAdt#(vhmVJ^yN!bfKChZzE{v6&gy#J5E);ynz|K zf4rQ0E50x3*8QO?;ZI_q(>K%7A@kJXjjQ@DuezwcQPi_4S;y;+rq+T zZd%`k((0v!8Peb;qL9aLb`9k1t1V9Zlq!>*sl@P${(Dsvm-fx#=V|$!hp-*`LBE7v zlHY*|zNs}W%Q^P-XbVb|`*&r}i)XUIy1wC0KKPJ?IXBdjTXCKHh?%OkusqwKx z3r}XK`EB?gK3BE$m)BAT8`s}@i0eRcIwGThu zdVI_)Y3RtX^7d`Mbc03Q{Z{#Ifj8!sa{G5rS9f?@jM7h(-yK%SN8$8?oid-OeCl5Mf|A1n)*(lV$-kGA6_qS+g834Tk0JBM`ArS zyT%Y`+}=)YRGlCm>rLi<*0}UhN3Ut~&3PJWVo!1*PJB4E7S1TU)_1j~Df5-hOQ~po zu@^htReF2{_DkxT>5QEF@9R2x_peLea&E~1-=n0KTu1GQdUDiYqUJ>E+aKJ`t!~Aa zK1}s>nQCrd!>)>rO}njlb8jEcadP9S<4eAp-MP~6pI*i#9CpN#)G%!7Og_?_yL1nF zDl>lvUDvZ=p!m$8_352PZAFFlEUN0C=d_^{LsFrl7gKZfZK?Wriol$CSWR>JSCr%w4F59w&*T$G1Pp%)2u0NV-doEq^LUo!lHe@Vd3%L$(kWH78#D56z&2f7DxQc+nz* Nf^EgT@3vMR{y$idAqfBg literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_5.png b/resources/g2/track/wooden/large_half_loop_right_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..92261ed1b77970ec0cf4f03e90e7e2e43c7311c3 GIT binary patch literal 1411 zcmXAoe^AnQ7{@<}ia%CVxL7j7B8T?9j@-AT8+P9na_EtMo!=a{*rZ~`l;*c0rA5UQ z3ymceEt;$-DQQtr*~DVS8e3X4*=9u>-MEuWwyd}v7O8EY(RKHFp68x_p7$T`_tREc zA)1_#odE!tTvl3Am6+2LwK9#8=*`S$9|J%EmCIKM6YHc&lai8>C=^O^a&k&aN@{8< zl}b%ZOG{5rXRz696y*v87(s~Ta;Zv1>U27@+3IwNkoe6t0&J7sQ<%I7zP!ZraymGCo3F+(e18RZKbXA`&esH}X{$fzBZ|xe1$3<_aoUJSJDf<`alm&XbY?QjhDc zGOLSp`L*7l$se(Y;vO0X=mcOW080ZnMk>$B5IH$g4@UYWhLFk@HF{w;j?m>irdos; zBz(JE;8qcSojhPxg&n%6#~k-NVAxBe^EikEk0^k6k z4}dTgzy!DeYE;l+gTVmK0VE1c7;uR|5C@O|kYqpu3T-%aDWOjfgEsKecpeZ7fCQ&1 zXHp`^QA@&J0WT~56j*S29v&-Vju zp5l=mM>WCwJ8sUXTpt`4YnX~&)Al=CcB=$?&Gp}1KSygZ=KfB+Y1@$by!qQZMN_8~ z$`0;HYZ$oOPrDeUrDUZREtKt@Ypy?&A4Vdvyivu(4yCZ;$hr^f`|n`Kks(da`K}Gs z3tHa)Z`V+F`;mvwzZyT&UK5`-dx&>glilHDTdv${nw4MtgtE1?V0_6){uhtm@Pr)g l*R4OLJmxMmGsds>V{HT3^R_6*MiWT_Wx|S*v&&XB{|^(^bxi;O literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_6.png b/resources/g2/track/wooden/large_half_loop_right_1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..27775d47e22f21ec4cab297bd6485b0816b5ef0b GIT binary patch literal 1526 zcmXAoe^8Tk9LK+oA46bFBbz#M=+LK{I`TOkH0_ZF4SI~Hc+^#+MvdD%mp*b2HgwvQ zDT4;=bm+u+H_lnBrp=;j=+2hT6JqH^iis97)*BA>sCgXl7 z7bpZkivcsqbW%*8i5+t0CIVa-6T*Z7J~2b+=L0|hpkOj7He1i-ni0ey7IzawuUZ|_ z>u=lb(C6c#xqOTxBzR&4BBcZ}J*qT|X`960!Yy9X5m0!-YMzKIl=8)-09T6Sl!P)8 zM!Ul9p*%soKWqucoRLW%8w0r{;HUvl2M{w;WamiTh}?%!L76E+JK|

?Q=cN)cBp z6_{jVr&8jj$)G_QveHqPA?~wI23;`fXXlC#feaO?F^QHWO-iLrt96@9KD#~W@k9m( zmGzqf=Y_^EQk@EPYK&TXpX`C=B zlE-vzlcm?`4*P?N2nG~5lP1}E1<$Mz*mRi7NP2DRUY9=Pv&BOGMB+BY0FVJd17HTg z1wbzVQ6_*%2np2D(B**P5P<*+1r`i=q##THNCHT4pb3Qz0(vwsV1!`@_|JF|z$HLN zFf~e!UMsMerA~*^>oo*}u2?JxlUiIgKy_J|nL{{u3J*es#pbx&mC$-8t$`<=2n@xM zTp;2xr9!qG<7r4#r^d~Cjl-h%x-3DzD;D;{L_~z+&;wu?K$!Hxn3Ve;u0dyuMnyL3 z|ImSeL@p;a8l_H0p+bX5XvI*M1oh#o2t2ZyCD_hEkrdT_kUR=EV$Ct}zeDM6$0^Qg9 zx-4gN^(pknjSc&2*~eR_`X9I(8_s?|Sv_X_Wp3Y)b#WxPt|)7c==PPf4R^V!X%!QR znj^ zVNYGzmtEbfyRd=go9)h}MV)<@=1tGe9=(+F?8*F1GuuX1>WIQ!6X)i?wf@)bjc*<; zNZ%c(9e*k3>97f?$vL*zb)h5mou{UbE>3;a zI{)X5g?szt$7T+-w&i6amDgW=W+i^5b#L^1!E>GX(Dj*=df9u67F1krYAe}G&lp*A zr9OZC*)xM{@FN?HZ&sE?4|-Hp-wciCJk0+tZBaWpQLwQ@HC&Unv-Lq}qWF z8BV_Vx0%6@AKYKx_;Wh4Ju{`b&Yl$;_;NIJRy(ou&%=fl8Qlw&&a|e`k{haBr`{d8 zBOfd|JbXYkwx>l7`#)SI`n*onUX{K4tzvh2-JVWUOVT(yBnr{0-hXtfg2`W~)br&-lj@?@Nn5W;M(2 z70EEvv;ER*JFi*)QVw+77ksg^6I*}s;nwe`Zty1UV~k(uylu(wf{L=r(yv~rY5W&! CceKv{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_1_6_2.png b/resources/g2/track/wooden/large_half_loop_right_1_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..53a5f5857677b6ce72d65d77b8d11bbb360d3bf8 GIT binary patch literal 5219 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 JUAb=Ce*ndtWre= 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_2_1.png b/resources/g2/track/wooden/large_half_loop_right_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4801eeac5ac907830c5abd0ab4f3d16ffd7ba5a5 GIT binary patch literal 1175 zcmX9-Z)_8F7=E{IyOqfb6l`Lh6$;elz!LAn%@jP~Hp@K2ksaEEMi0Gcfqppci47@w zfvPvDaEXnpSfEN1YHXy0MK4;hAF4E@Bxg30q6cZDV^u*aDapb=e;y%u-hW@-CwZUe z{cy`>|NME6%maY=qnn1u%u1NCq}O8Riw9Pkg9WxczjeeMJ32Z#J3B2FOIKG{cXxMB zPY;G+y}i9wtJUFly9vTe(-g-sf)JD>F&>YnQkgllA!~S+)`i)nxfi1qC`EAs7u+FT1JyBZWl;r)Q=|uzMMc8B~FhE zwUpGz$6KY;oSsLGvdvC<@Bl%EC_2h<2|-9lqlHAGl*#CtR-c}3wORD!jQYR!Af(xq?yF+jRKyL}Z=0096AKn2JHQ~(+nAQLQ&ViL+{kx^qk zAQF(IK=Xsa0^$IP4wN8JmPJ|^RTX4p;lA)BFf;^MEG#(WD4taPxvWqu#&td4Z0gA5 za)yA2^--#W&ANEaBN{%n70kDz#ko}Vj#fvtmd6gH3-fzzLCO{8h**eG<#0AB7xPKI zoNpRs)UJ~ZgET+}AY^Kxm~;=|jK|WA2ANJhfK;v0!5|k73$d6;c;louMG<+LC^6n? z7HF>-z`dgONiQXU4amy~5mG{_YnS&bFVB1k=8U>;1PM7k;Pa&YWuASUa&)*|lm? znVOK#sK&RKXCtHM%R|SGtzDsZFT!$N3a>4GgFE>7Pe;cFA}6i4rp|3+-cffP-t*cI z&eKCfP5Hpk?M36iE_I#bmc20Y@THsm5AA#JlYQ227FY#+vGnLGC%7s9?(6?q2mW|7 z`OkF+{CFBZIFkOwd-ti#b5Cz8iH*mWeYJ4aGqYd*rbvS`H;+$LBD1UC9#9sq>pyId zbpE{K$oFH{(i?A`IMwsr?D)}tcP=?ld3CZ@SXY=ypIP`P#uYQ|y_Yh_Eze%vvvTX% hftlo$-Z2@$*HarlyLf5ua`U<{ITvMtneULmqL zgFPf_)PsfglrXY!c2Q0jW-GCTnaOF3#(B8nq8v1`utgXcW{@IPzh(?R?>#>MybpXn z@4dZeA~?`@UmpMrj6E~5w>5`bHPqA5>Zb!CH$VsM8Q(YBqHS$$?d|Oy9UYyWon2jB z-QC?7hV}IH^!E08{C+=423VF61WuB|iXyA3s_WT&zF=9aj?-v1$pA1k@LYd5?2bl# zv3MYvqV)`)%ZtU5Qnpjon!yrSi0+p;Pa@>gBs{B-3o2XEL*=~etR(A>vEHzPUJwb0 zF`x-pPR2?pS0(3emc6JRKur;CXb4$;03JZZFxllwc)c2q8#KMZ^DB`^C6Tz5&7xAt zOS=7xC&2q?5f92lC_zdZtz=l$%EV&%RH~HC+J!=Ob+yrGAn?k7>lm4Hu|=;? zCL&cfSqmHWSh1n4HuLq3$~x*NTrSGv3Htm35s+wF;rOK3S{Bcz(kr>VW7*9r10shh zf-52Vv?!5@GiFjKW+E$QqEgD#D^|043o!s800lq;FacHoY8apvcoxMKWE#k+@HogM zq!}m#!QlZ3fMgF!k;vdtA&SaLq<&8oWRT{V(C?6IKxWbGtDv-eeR{@ZtcV0!O_0K0Dfa->Bz#zvmnx8uFpt5ff*TQ_$fdi1x! z;wALvfpb$Q)hEB6+4Sq{A56orvFkupe1~7Ve0H;M^wjd?;Bj^T{h60b-)_4e{@ZzD z@ZJ-j%wAhuTgUn?{V`e@0)xD{1s-{gBj(@Lo_&z6eQJ589-2ElHY)}X{;>4$>|0Vt`|4qCWi1 z#`Dhf#P-8Su6_0KpU=_9UVUN2e0)+re`Wcn%JC0htXU_A7ZzT+JbTZ~(qrQhY3{Ma{!Y;AOu%JbfrE0`1c}ZTDRD-jL~ zvGGn3rzG0@+}pRj|Bnb#^6+(ApSW}EUejQeGWWLjp9~+Zb-j8wuJQb`@@Byco6mKR zf0|5k0{UI-pRRB$2xk4ZWBXz8+y<(G+OSml;mNl+Us6WF*?H3E*Hym4y8jgbvhH>2 zbf#*Z?tC^dhdo<&mRH413-2?UpRB!Ue#@1cc9|p+IM)-&zmKi|HhR& zt7`99k~g%yT^n4@;yBh{dq>`izq5{=ey#ew%G-X2EIYj8i=(4k_xKZkdUX=)TTMK3 znv+xawoLZsOS_N*4{WpKF4zvZZ(QH->Hc%J`FsD_Y}{JszkTl~XC@r;ZmR6eTE0{H zhA+U;lNAUx; zr;i;vwxII;8?7gz2Rt8-9Qfdx1GMqGqo&*I-}FBI!Qw~O-csP)@vHZ4UZhyNCN}f*sIk*XD4!h@gnNACHz@nm?t$eTOYmBSfYU-NN}*niJX!Ft(s`Y#8sy6yV2-#+;J z{b25J_G=2i`*C{Da-iD%{+IJSp8S=ME^9k8dM4*pdNR_B#<;7V^X{sAU6&2JuEhzv zYi-R+H9@(=xSg_*;#QXjwjBUv+Ex!vG?G4^jdVEO<@{7M#^*Wh<$Q~xMpEO^ksF*< zTfC%s%c?qJOCzDO^R>$h%39SBz(x9SUaPCgO{-hW`59a_yiSV|J};xK@rXA@Tx1y`Dy=ZJ4HC{>dd7?UP{`q(gqQM5x7W>N|hoUCuAZ8Dla8S zQb{x@u~|^nZrX>t2{H`@!NpF9gOQk2QHm->Hkl0-$)yrPgewU`B$p{jy9}2p>;ygw z!svCvuEd*WN0o-MLnuOND@8FCDw5c78-yxViBzPjRAiG%vC>kxREn0`Gf;LyeJka4 z;jo-e7w#YtkK2)1NE5DJVX7|Y%fylk5>pfIYk&rD2Apm?<)<$!)j3_H*@vh3lwvX^ zCXvWcl>}2rl=2HoYe+8*dohhFm55PgW+h!1HB1Lmi>Esk0%YVc8@0|$;y%h-M^R1X z{B%&fwB^il4IC&t?!zl^9|=JvGPznRQA=fY5>$;!)TmM@k*X!L^eMZuVe|jePLB_- zY^vy0P8#~(oDogUl$qQ#bvJd}HBL;WK;tds6vq&2YKho@yB#FlKc*Y@ zyxjQ%&48Cml&D=U5h;`^OeDA2Z6X^cmy1x9Qf9*x3YF6KJ#?CC@cD5sxxxW?gj~S} z&2YuLak^B?GOW!+i{VeNhP8Sl&Sd0bh1c#$2gyD8S-Czlw}lVZ86YpN(Q$s zxDz5XTj4Zc(D#q|nXbc+>4L|*?BtU8y-e3-x-N-m1 z@GwQX;Xfchd{o-H57&Yc?AQqMoLy_V)I!uI~Q+NIX86Os2-iQ3Pl;z-TC}uPe39)mR03N@xk7L`Xx2b?tqI&ZxO(z#2(9xL7fwFVUEV1_G<6bX142 zqubgYp(2SuJlUBT>m8nmv9+Mc3^)$JZ3BW33+v|S`vvteEtRkYhv}YFD9#)*3X2G= z*sm7`Et+0J7p2XKc4DZD9_?#S#kwXEeavW_U4#jQ78G-6b$+usNDyJazdsm^b$2Hs zk>SC?R4T=QVhRYlSZFU>7cDjq2pz+^j?wy_F@H1_8XWH*n;e>83WaPo#^LC>C1xQ) zXf(9J*kOfWZT-Q{|mZ7@0^T zGtj{#dqBGI7%=F7#mH(TI03(~Go38qV-MFF5l~4@ zC{^D#?vGA%4NOLcnW2=R2w+^69%0vOxs7JD&0z=y8hbhe(Z0?^yl*TSXU2yygMovcy+rp!xSh#EIpa%wY_4Ve)Mxw2aLXmb1>C&QoIy7cL293foO9^A; zG64Y-Mwy6~Nf==BW1_+@(lg+zU1bJ0|K&sYZVP1D4EhSNBk$TOcr(XSwGNV12;Ybm z7G;6mdlo|>%U4}f$@*)--0Y=-ij9AG5Q>7;6)WnL1HV2wu;2(UKi4!#iE1A@qWbPC z#Zmj2@$jNkSN_Iygnn<^Q;(D^VS5%XSRB0P>(@c=oPiZzXpuFn53FUUmz-L2ptV0S z+4hTrFF0P#SA71|oBI#$@;|e~)!#5Ae)NPkka}q3=!?lR-3^-E8wZ~ckDMB`oh&<{ q)-%4h{uQdapMGO+)9U3fXQj@)8+NnrUIfDe)s?F%p1tL+?f(HnRBtN) literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_2_3.png b/resources/g2/track/wooden/large_half_loop_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0353a049de784712f695c8977e9a61b0e440ad44 GIT binary patch literal 5238 zcmeHLeN+=y7JqyhlrJqRZfTnsYSCuHB$)vi%OMFCX*N;nUDztMNibU z3v0Sfk!`VpP@3&Q#fn{A)1GXb+St-At*KH)81pr7WEXXT?cP_lp*eLidTu?2Cx8qw%*H}w1 z8_R4Vb%rW}W!-EhSVWyc2SDBD#^PXtpBMY1e%JHwauOfvGn5=iwf?A)AAIv_;Zi(t zUxZ{sfN?>(XRdYa>z|c;+PRt|PKu8*@;VbA`XX1fcZ{_=vi@M-KacIcrf*+5qgv#8 z$=P&KeNNZ8>0iN?Iem-Xc0Z(VC>|(~L_gt}k7EapZBU#`Y{RNwY5x4e4}tn?SFbwh zw2vEJc%`>7KkBq==h2LK9g>G^WIGB^Hf>!<|6q;0#M!wv_nk+SbpS*>W01>>3+3`# z!N3sOwl(Dz_>1R0t5UyK@@Qi1?CQqiec!&ye*U$2&Zj$%&RbW*+x#_CXecOo>VcTS zoer6EH6um8{=uhWmi?V^;{5T#Q~6K)5m|Dy@w@kix3$>(?CeRJSjO=A1C8r8N^+p6}<7svGpkLEW=ENzl}VD+;vvD$-2 zttW4sz@BWH`z7_|5=TbCj~~{YzbrmUG{m(3BGdA6boHJ!zZ^eu!GB1z|3vSJIr(Q6 zSA6I_WWMy}p|kfNqE!EWuXt7YN0xnO7wlg1_$))?3#T5NCtA~Z`f!tmEgz{)qW2H0 znw5`~&3o>Fxc%~H|8o5}{l$3IC#OF?+B$bv)J^2rO@2gl?T*@kV?LMByDjp1#}3Zx zS9(0#|EW6Nx}Ix^jyFc746ZM_6qRAy-ju#x@UY_hf%~3V^u^8R-Z=o`ha!)QY^Hrw z+ftCV_ssVRW^?R{mzLCD9KIO!Hg&_(h5DE)k68BPzb}u3MOSNp#kHnrg%l@^8JL#T z5E*qwGpsrQa%6R846h`tEDfPIm~z>pULTuf(B`tsL`A$Jvz*vyDA-~l)LT}T;#(^5 zEG=8MbXHEC6ap9tE5@obR+%ViT`oI}D}~RYWrWQNi&!gj*=vf5S#r`su!I@H3?4VX z&QL30FP+88v1oPDlDy@U5O9{u-e|R&r3hlP*)nWs25HeF{H&}jgeO1*0xp!`QkzXy ztd47<(n1gu75-2qh$N2_F~nxgv>9$Q5FIf~$dUKq!bYDhEIe*VYS3W#v#_k7QPWP=?Qp#Ocv~|b;C~-gM<)i zbbMUQ&B7#Fu27;yxe^T~;fe(Ukv1y}6TqShvoM8Dkvgjlvk=SlkVnWBEYL7lti_Y5 zT5_knZ6guN1Eh@0=W%aSCS)U%!6Km(<5sje$ba#X6Bd|u#6Z1?HF$KvlMtCY3Mcu3 zzW$t_$vpg=CRnU{M(&E=dvx8S>#i8ME8%<9b&syQV&JZX?^W0Tjjma@U#18X`~_r# zuSyMxaoYfh0>vvz^Wp1OL_|bnWMouSRCIK7Oiav-88a9RMr>^C%$YM&($dmU6p_ni zYPAx_%PERN=FCn^QEH6 zX|fbV#mufqSCE`CJBquqsaCn8TiNVYyZb9VK|NEPiYU^u)f^=*E+^$=gQ}sUqQgUa z0(O6}IWW>SH1121fn+sE(F0~ZNOv*B9Vv>Q^m3n!43s&CDEFw#Pxq=g$+$Sxrr0y6TvN)YnhKltvxlOHh;&`jg*5h>gIywR#&(OfY z=;$a7Qb~~B!a%!{5Ujq(+1%IF6Z8khhGd{Z$)MCp_6nw}lG9o*>uykcTlIb2_Ca6k$e@30>`6`<9CCR1o9O1o9Gr;_e( zpo4A@O1u~-<)BQ(sKit3Hcqok(dEXyUPmC%Ju(uYp{-OsKZ`1gW0ap z^6oL4cf6(lhG&Q#98FIKVkSd@B$dmUm1?wJuXNcf-OYAycXPnsJreZOV?$!4lJ)>P z2xuDSq5+zl7^#l>*5P4sYsc(9s0XYiE7jn!ug<~0wm^hNsmKG3F%K5N$xL&>T1Zx0a_EWx zd)pSkMTWJoD4+4yS@Dqz6F1DLy8v}&7v?Q1E$DmkrB(MiSn+vp(WgFZTmJi-uWw(> zo>{5;+;y^5?49$6g_7Qa>%7*j$Mf@Ee73CV>Vgg1-u=_pz3aw~9Jn%jQ|Wwl&TCKp zrhaGB(&TIB`P~D9RSRt_8R&&V77n=&kXj#nq90_%=!-Jx*39G|L}pK=Z)-MD`4 z>qZf?D^2pNnF%Y@Pg(nyk3RV68|~K@Y@hED9^W8*zg_szBkK&AqYwY>ANCiLHpbdd Y-AB%uKY!73NEax~UzvCK@uzqG2i|e5bN~PV literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_2_4.png b/resources/g2/track/wooden/large_half_loop_right_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e77254d5dc49bf3c8e49cc9e660c0ab98ccb43 GIT binary patch literal 5660 zcmeHLeNap<}FU$S33r446Qmh=~LnC|Z1Zd4vebi+O?Yp&Kn) z6tt;=i;9-1(V~sYDy^urr7N{)sm70LT0;jbGqPK&QBunmTi@OUv^d+D9cSAA%-omv z?!D*y&N;tx&Yiq$R4kH(hs+3pASgU5Q<@9z^T4H;5(K{U_eP%ww^P-5`Q}{MLNS`K zVqFx8dPUl_pxIMCd{93>EnwNIY3>iQtQUr&*XgewYvfZT882>j zdAArQ&u!Xo=&vpa@wVsIi7;F1G5@IXaVbV5{V*9B6$=I zh+)_2Eh(8jim3H+<-Xi`(<-K~Jaa+#b$a^DZ2I&6T%e18|GVYGm&7HP-r9SdA96UD zWPRQ-E#dr0;qj2yuah@))Hd#EXsRsAEr}RhPl_G-20!6RPAzfmSTXI>fF&K9%I3{} zzTTm}{-?Bc*Ck<#H}0qwc5biJuKq?zyRvMPbNJ4KjyJY#JqxvF&eWcSBe3aC{j0*E z)i;=qmqYFe?lq-_J|{LUtN3X%ei~lu42${c`@ogk^AG-Tq`&vziv6EWB{rQ~CU zvEbVePZu2G6x@@7}eE9)_LJ zn67+sW{Wgv-iy8DhotU~#6HgDJ9`y@FRVIp+ctOlSHVKM`{Dd!x6e<#Zk>Gi{kOX> zPQEG5!tTF+CW3i1eCg5=ZWZ}>f52yNo6o*A^Q>Gpw|VUdXY^evvpRH=tH1x`2!Ay+ z+;n9)+-RJ#@RgDuPxf}zjp7eF+gb+5JtL-GVcpJp2%5G;2dXPSXQ2?m^a-#AQ=Z~D|HoY z>iiH&vPn}c%#~)0Lx5QdwZv>T3Kqp2-q2C&*(OU2)a_llHX_C3!6AnK~TU zuktUA^^_7_IW`-cmg)S>M4|ZGLI@*cA>eQYs`2{?u*SBK64;u#eVtzflYb zoQU!`Fq^Jc^E7m>09Mll#cU0o&*gL3Oq8qUuoIs|$FX9w1va5+TEHXV3KXcHE6UvQ zRK4`1yrl&7&67Kh78M^^g3F zm)Rd_fTeZB5!HTEx|i4?1c+-OVFT2Qk<~j^xqeRUDpHEU_q+4G7X=v9vcdbhoxTJ39w1 zU-o!B1Qdfov}O{gjV$SkQTD}a2PAcah4vv!m&bP5+dlNbH9~~OlgYg3XjyEWGM<5m zM0mEmt_XnDv^O;Nwza!^oZbO3RFqA^m1JvCtgSS@rAF+iQ+BmzdmUC+cgv8g$LqaC zh#^P?K{y22Ajknhy%01=f(S6=5~2nt9CpI(lG7lJ12u}FP8sBuLxd6{uxO%zL)hg+ zXDQKFN4V{fFY!DmTLP)%q*5f>YKd>O$=d8lS68jm=@=Sv62MlB7UI-|ifz$ydu&lB z4RecZootaCvBv5HFS_V~`8Qv875*jW*k6EwwjVyBv+q9>Mv(2V_5fv3$mgFDwQ2*RB$R)Qz7-MXvvcY`1KavG@L#R4MhlVfL)x z*}o)}oXM}+*BZU})Ca=RxW9b#N&jd@^Onk@GkY3^JHu*kZgqtOC5F{UG460_!kzpk z_1>AcQU|vt*IzvnfY%5 z?>jzUl4d)2?8w_(#nz+j9BujO;JfGQ4~))PQm|PUJoMiB>Um2Sr(B3!F-esat6JW5 zNO0wX{l>*(0c2Ig&yzn4x;|P%rC-| zg+#CDz|nyIhj!X}J;Ba{x4*9W{Ql*leJ{WB@z0Gbax0a8`&Micui0MMm%dD}YI9)e z=ZoGow%oYwTyT1i=N@g_>UZ|X%+>6Z-H*yplwI7`R=)VbjDJ^zFTZ9@j&S|OyWz_{ zYgc;aj4U7eG9e{RyRnowA`OvWc}~7_wpliVSe0>Pfj4dh+4vD-9z8tDKF8X-+7)GR zyu7<{jp4PE^nspr=a!v#<#r-^iMvCzJ7>*SZuKSej(Q^W&`lk8|9e$w<>w0X+ur<{ Y6nk>z0XKmYAn8z6`XcG!1J1C;Fm3*hJ$s(d`@YZn&-;0v&*%N9 zi;GxEiN8t&03_|n&n<~gO0<3#9~GAnO;V?u4FavPdSUw*w z7L#Ohno7ga={aVr!0wO^x;6fQkx9ky7+49Lpx}|TLW)5Obt;(-9dFPo@wrq%pD_}0 zvWP%H1u__D5sX=aacFQ}Gd?^>M1wRmEI=2vDC#5wzyUyj!ANj81(B$wP>c*lCx_z_ ziM$HMw84Nn97G6Dh6ywdi6Nk{BvhUP5^5PzJyU66H`@{8pupx6k?2Gki_Ac%Y$2U5 zVMDdJWNy*g>Yq6|575w`^mIB|G7h025IBA6*d5RFi%m&vRejl*DY z+iZT1Clm^yfG7bJ9R@Pvn06vENEP{+ssP^@l-WaCPuLn<^hQuD6^Ek}2rLpAq0)p5 zhLp`w38Kg3R!y_ZZ1p+aVLuE6Y>X7aDFh^~n5vh<78PRGi(D3k*P#!3o#F5_3Io6c zKnj2s01E&v00J0*M!{jCaw%#tqCPK&0wfSnux0F@9>4TKsws7;Ixs!*R1 z{A@fOu$h3z!H9(fg^b#)WtojayItvaTY^D18s#F203^r4S^~#N64)pbA441BTf#DX zL^rr-^P}Dn1rO*X42y>2!z3{R$wh3fLTqeS*e%U&rzPlfqG3Os%|>ki^#K%(dZCKa z{Q{y=t`7w0dfhLO4h}N;d_*i3%Hrliw!Fl1pu4mQohp$2(mR6s%%6jTqPHW+oY zqt8#@jD7ZV20kb$LO{;MgNkS{PVLFv$<0@vJah1hC4J@YPP9F*IJHc@C9`sBtMYc{ z`p64v%l15v86I{SBQwK4=}TO%EuDYQb>oc%+Q7n3SEmpB8{Q=BNV3Mh{X)E1bN0Wk z>C(AKAF;gq)0!A8HCsV#-G~qx3oL2Be`M#b{yc9A#xEXU>V22Q$I31dt~JF#xdhLa&PPVTP%H+*;6&`2cMLzX}DTFl|tao)j!`PbsE3UX!y;# zgt`*0xwoas)OTkjtZo?XFKxSHf3pxy{;qF3u0nn&I8#2G!xg5OF!4(@?W4C&;GY#z zGX7#Sx0a-gzg2R|Mpo~9`lWF{cQlw^?s^3MsqEU-Q|r^cW%>2@jO>Q#b*GCQ|7c83 z>+JnC=kXhBO(tSLm%Z=4#671j>I{p0M~w;mq3awPcZ8MnnZb6|HS zzW2}?&$RD@*Y{qd5Nf|V|DOZJA5H9XCEeS!xb#u1uQjcKGPl3+=1QhCTVXwVE>SlkNNd{QTY0%&Mtd273I3Ns8f0W#_|w@J~N@ zr?tyao<7&zlsGrM>I6Pb%=IEegu}0oy=c83EZ&>khOeR>&;Ie#$$_m)f7er9+m1EG z?i_(W>Z-774tt$(8{DsC!-vO)S5?CJw(hJ_?fA80NZC2YSf;GI=!eU-mQ71nCeH}3 zS5M4+(tYh|cko1Hc^BzTL0wyKUL^Fq-79};B+zpEr)z`)Ds3@_>(fn#(9TiiWtXMJk&Au%A7&vVZ|&-;(}`#G7P zCrqA|J_`VloVz(^Yh0_H!bO2&N{+7axku@qRDmpqkCMG5}Ha0FUECGMQ1Sv}v_YlgVSZ`}_Jr zp%4Ug9Iy-lG~=$M-=_X{)ui8-irgmisjTX5Pt1(VoRDwjqRGME^fBjfQ15vq|! zj;U-~eW%6db9uskK9Gti1V$yL44r~)RPn7E%wd#wT1l_d81%Zr;c>_ZKnwr@fDQmF z0G$8?C;&!41yDsms~P&dC=1{S(DQ*^2z)4j7=SnpY7uBgp-AdGmSiO9W%u2vZX0j|;T z8p7=sNFxzbdb}dfmhUAWn;TxPiJsD?-^4z|vEA1Um`(qZ=fBaMP zx>LRPf)5OWYIu8Fmwxc&{+TRW1CnoZf4^^CIQ_kyTK->!6C{H6R#Pg(4$cxPp{{^%2Z+Y(n*%It>SJFWX~-Fs5h-ebO1aLOAmId*n? z%k$o={%y&9p6qvj9NP}!S|yJk_r6G9jbE7>7iK4~)m;Zx0-GVz=57l8nqQE7?oCPX z!=iNmz|h0W=J<-yL-{?TO-ui%FX_q$+QH(zGi{ksIZ*Rx|Rs(c3bbJo}>o@WWN(qcU8r&Cc2}c_RA1wC8u`^mNW& zzP)4duJyc(gQqfYE6EjYr>UEkHXlFwXn60gePv&ccDUX~20-_BnsdJ5j%DTSv${u!(6es3|P`+FX74T)QpmuXz`a)Y__lFR8spDLZkf zOYR<;Y`dByE0|e1pqG}sT%BoLGVf;ISk)TmvmRAtUVS=c@>2cZ$41+jJ`E`kOVbSab17!SJjEq96gcOnr4xf}CxE@kgL{y(F&r5OMK literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_2_7.png b/resources/g2/track/wooden/large_half_loop_right_2_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2f246ab7f5c08beefbe54c4378ab3845a3e1f8c3 GIT binary patch literal 1385 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_3_2.png b/resources/g2/track/wooden/large_half_loop_right_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff241f6db5b15fd12c0e12b7235ad1d4fc4df3cd GIT binary patch literal 1078 zcmX9-acCQL6n<^mUE5d#rV{9h*-Y_-Q^Gjp)SJ7`YnRq@xzej-BX+0UW~Kpe^D05J z5ixF=%f@x48n#U13=%P}nf8xEB4!v}pmE%=Vy35L5H;e^Q1VB_qCam8zV{yAKkwt? zd+&`Izi)VGbO->3r>7=nt?9Aq&H+9?5@9*EV zX%mKF0|NttgM%)Q$3szGj$=iUm*t?UD)D$coz51EdZn^vn(a=9@&e0%z}tgCXE^MR zM7@b5lgg7zUUg>mhAQm71paN(B1%N6*69Z&H;80XWg&Z>L0s#sI zDHe1em;xXXkm5o~3grZ(hfyto%pBYdo(7(SfPjT%S1dxNG+#a^mr8NND70Dzvb69J zP*FRpxrCfs(h0?6w05x2iIlqO+J@dh^)}%I+Ku_Vjv(s}i&QkkYq4-H6)P1|My1d) zE2z_;c^>J2OhCxWB4Nqh0v?ZMnoT;Bz6G^bdR3u&>|zfrVMW2;;w9d)6YqOi%2XyYKYTH}~BB`sUll|IMDf z^b?vo_UFCMi`NhD3Vs+qDV&l_Q&Y!6K z_}No|Ll3@OUA}8~eRA*mj^O0J^Y2{Sa_IMuKRFw^zGZuB`AXt({KbdA9WB3YO7AbM ly3i{>&psk_4x}hguk5M;gG=YBp$+q(=axY} z95aP5Zu96O%ZCVIo->Y!anyQZlv6XPCFqS7&E~m98Z~7_LX9JHMSo@tp7-CE_krhm z-xK3w{w;mm`T$_d=(8gSS`}}__MVPb{@~c03D5!K`zQ9b#2I&Ka2A=B=2Az?J zCmQo5R63RBv-wcLluMRcsp>3&1?YZ>b14CjCgK^HoR70+Dp1Nx_F|%D>&<%6?}iWo zQ3f;t%SxE3I?7pRqvS?4A8LfqriM__3%~<}Fidhd6t`Q$ah;~;d44e*E-T7Bn=kcJ)NLE0t$a-BXqIsThij+I*C)5C)71@F;SaGqO zlB>CR-ApyD9I6%_P6{UiBo$`Zs354Kn2tvCs%mC3mSI#@R_gUS0=EQs3L~=)w%`^@ zM7Y8xszJRLE!4G@M!vRLZlZp|;h_ZGH}VJwR$kuh!&cu(xy>CdR2>)*Kj18*J}6X2;oF2CODyGBR$PCR+))bi+=`1XPBN#CWb z%T4q2-0F@K-g+=bGWp6@$h#a{b#ff;*P&Q zTdMAmkHmH_?zz7I?S(-*vVQQ!nT46PM@El+y=~9YsRv2%QDN=kxl4Qc&u*-D99M@9 VADRAkxTOw^?i(BV`02^F{s+%u>+=8r literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_3_3_2.png b/resources/g2/track/wooden/large_half_loop_right_3_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..44306f5616cc3eafbe7f38d70b02e8d3daf8c828 GIT binary patch literal 5241 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 S|D1{`C@v~3Jhy7of&T$xkh%B( literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_3_5.png b/resources/g2/track/wooden/large_half_loop_right_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1bf22a1e3e0b3e9dc71db42ecf86f5bfe714b5 GIT binary patch literal 1558 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_3_7.png b/resources/g2/track/wooden/large_half_loop_right_3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d5386f0551dbe108f5aad074bd0bf8cbf3f71318 GIT binary patch literal 1391 zcmXAoeN0nl6vkh^EFZe6W$8x6jy2oOQe0sdy>3M>dX<7#xa!r^tZK)KHm=5NtxM4| z%2q~YRU53>xQf*k>0C1#K-ZbZRP16yDl4C(?`lkb=bW5>&hy9f zoVE?Ml6koWxd4E9)m3XYrKTuVCD|FN{?ozm5C9oq!}`r@Q)^mUT6%hVMn*nn)&55x~WOBJ*T2 zj!MPX>O@A9*lMGkZn@W|35HCuQ3oMpNyT{#$<<5wW(8u`pnV3yXO#xsOf+DOM;%iM zzk~DTlLW2>k*8C;;Rv7Q<%ic|0?MIK<*UiV7%| z5xsuGZihY}59J7Ou887`<%on4O7*D1EY{cvgNw9yX-81*i7NRRPb3kDX(6e=WDLO= zDWhF(_b{H2-XFDu;?CHVkBtKk4Y*3c*8#-L!t7j$8(MX5Bn$~M}hIQ z5}`>db}9(3h7K7N5vyj@Wk~p}Qy~`|^|Lt`B9x+-5+}4YZBi&~TCLk;^4aYnk0%xm zClUz=cnmIiWFk8hNO)0 z)G?jgWC=LkQGX~I!-1S+X=t`y&Nr)sHXZIV(q5Y~;L=BYws^#!Oin-?04V?(0L%cm z00;mu$^tM2ML?Yfx*RYXp%B2Jz=8vh1VkwSX#g26G@;NzL5~UsjWFr}FOA0lNdPIu zQYpB4tj}(O|VO%PJaz4}}(1t<}4nt%r{MeGb$(KKHU{fs( zD#q{b0wBGxdd;fMRc#$7cK5p8nqT<`yt8oM-ETf%KRpE83j_zZci@v{GtY)L95PRZ?)>z9?E9A#Zy&p@-fIY?Q4IMvd*O4R*etJJ)u{6bEVp^AJLDgO3S;Pp^JQG0i3 z=av>~#jhi!jV*)Kvz4Eo*0i{-C3}uvcMR;AS@sw?TlcV6nw-Bf?5rFcoTznEk9YLf z-)x{3Eg=4N^7~dd7*D}{OP{{|Fvn<&ENm;g)IQdY(xTj3_0#y;!M_K88IN4{_k4Nl z+ST!&ldb2t<^R1F==iGa!|Q>)x4RUUglxy}W$)}Q--y1KP#3Mf;i(_#Y+PyyW81Pz z`1_Y<4y_x$y7$=r5&@qQ&V9gFZ_C|URTC*KYI2X?uPAH{7rP23|7?HsS%HzceEZmi z*udDA%yEKe4uQUj{j)~>m@ I`jfBz2b@EG$p8QV literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_4_1.png b/resources/g2/track/wooden/large_half_loop_right_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa1da56c77b66d094ff555ffc39f5481d66fdc3 GIT binary patch literal 5472 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 CS0fz& literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_4_2.png b/resources/g2/track/wooden/large_half_loop_right_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5474c26f664476a2257327e7401fdb260ad864 GIT binary patch literal 5711 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_4_4.png b/resources/g2/track/wooden/large_half_loop_right_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f09cb5c7b52e25cf2e511e045d39c286a5dd3790 GIT binary patch literal 6069 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/large_half_loop_right_4_6_2.png b/resources/g2/track/wooden/large_half_loop_right_4_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..978e7a0983099c645bd02a12f7c5e05e43ad8b8a GIT binary patch literal 5195 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_1_1.png b/resources/g2/track/wooden/medium_half_loop_left_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d37dbce30d749b232461b119bca3f3867c5c31ec GIT binary patch literal 1592 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 H3!DB0t<=H* literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_1_3.png b/resources/g2/track/wooden/medium_half_loop_left_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e5b4007bcbcf1e72c4e31672022566292c5798 GIT binary patch literal 1890 zcmXApe^}D@7RNvS#2*uul5o;}a&ob#N2&ijw|Ij45( z7G_FPdJ+I2W#fi*`H@PBL`6bOBv)B0w*wFZw!Xh@eWZdbi8vyWNTEOs2A#uU359%_Orlb$^m?P!YInK%{r*rmOo0HM2H31*K0i$? zCdd_#T0_$t*k-H1;gos2nn2LRAY-_+WC;tWLLQb20(zpNU&HX9lOf*^to9z~f zd`jiG(TF;ocuE?Pj)T|)nt;TVkhw~VP)m~;7%B@(=irz;0=r*CfbkHMNaK)MLYOaM zNYre#QDC%7>|UkIuk#}2z?2h92WcFD69Iw(khB=sh+|qwd?#Jv)rEMz!j9Ir~~)60SuRmiEI@>5a4L}eB&s*s@;6YBS|NkBpYIy$g3fu9Xf4nQS1R6{{cY}77BJ!;f% z0)H3}0~P~t*%+}9r<9X*TBg|~bU0LAuLVK8XhaJy0u)6uU5jIz2m(7v;-_gtd`npF zn9_S@>;cplBBcSCfMG&dKAj-uP!uATRw*{=ln#r|>#`tz7a9)0EEZ}9s2`wc#0zyq z?oaS4g&`P(4f;Qkc{~h0pCc9v6$%LjQo)d(PO&g3P8QV9CL>%TDj=Xr5^A8Jb~@^1 zMV24VN}l}V2Fmlda6sPZosR*CP2IR|%{JcQBRqbWW$~IP+|KjfaXIHJlcRxR)-S&jH^U{3y+Y7U~2YO1+2`d+hr|@l3 z7j?(*;EL_TpJtVuC`dV4(^|KnjPqsrsou7jcs{fKg6k9U3sX@`+hx}_(+TChtMjPA z;(6_HC2fn-XO0ACBq7BQuet?K7N57CXWJBb}GUzJKVH8<(-E!2TG2=9J2NhE@lPuuWc%w#`Z}I|N8ZGxR`$hdW

FA<$c z%ox-?s4677`8$yA>XJIqy(>4KjbsV=<<9h;hbdH=)C_{%A}rv&L|x?l$NWfJw5 z$~A!n_SF8>^+p2qcl`+O@R_w9QYhx3;$-RR_tt&zk*0LM;rnXEvEJ$?X@hDPx_C%% z=lLDT9CInE3mUFWdYGoj{dp|UNX)`KOu}SkHe|Y0S6YOoxD}Y@oj2aY`8qzOp6Y!U z=1!v7o+93_3jEl*Gtjc`I5SBc$_os)?Ma2l<_`Q+*8h3>A^sZKcrx`_bVZcqLO*vC zM&LSeb+Y17($KfLD_<;{T~XaoJ~%WO-p3y1ExA=WE6HM(E;(DA)ZX~^&Wj6YHy3_4 zlGriv7NKqBNM*@E(JwoSysg7U!}I0&s?FN*vEcNoIivM_bs6>4KzJ*$?>qayVBGrw zQ2}f&JhJsfVpGQ&<~!0=*{_CL9{BUPIW64Q;Iz!MJLjt{r*|ozmz8WkEau6-%9HLs z$-IiZ=$o%WY*nkyzP3EK#*tpQD8X^*mMydOws3h_Ia1KnU2v;rPx8hUqx$pqJ;A=W z-?;W@;xh|J-Zy zHC&_g7;p9_9On%xFpZ_s{c--u-{!Uxp>vPitd;3|SNn@|B_FoPkJijdN!$x(AKyGn zxPrVY=XKvLLH61=&)YJBsYE8DwrjJBQGfm7h>fdR`gPgOr}tmV(At4-+RkMowhgIw zSJQo=C2DCV{y+jPBmUH(iPLX&%;|jHzx*H8i7pB9#h3nK#e(>*nYziM3)$ro>Iz>E zu?iPFscSx?>C^->Y|?>zwD}2@wvwdUHc)e$ld7!bi4p)nSz|-p#{8_wmx^1M@21W>y8tKz&FeSS=huRQ0v3x^SXjtr zvx|y~=FFMH;c&QIZgFw3P$H3_s7$HENm8xXYbnZPv)SBkZ!j2&M#qxLY%Yh&04@iF zx>Tzb7>#1HMdonI-5#Pps0&A^IO9yE{Yr$Rk(Zj(LaRnh>!n@_9keMUZcRLBO2!EJ94VN?PD0f3IfG4Xg-k%*Q`{c`yr zLBtG(gw;CX^}Lb+H!&J#it=aaC>$gZ zfgTf?Rftm~@7F8C6v^212{)Av*s>A#G!ua7C{KV%5etGbz*3hLJtZV&8tZB{y>#%*TWx>5w`#7Pdj0CX|EWs;;_5uMe5kAZQS9)fLi=d6 zdd*DHYhUZ1N6&Y>lREkRg!RWqFDJW>d^i2+A7b4vn^)bE*mr#KV0xCnaM_OGf`u*H z4dWv(k$V>}SN4q~jMa*1fQ8QTcoY zciuz66|>Cx>ZQomSlebKQD1To*8P~wnm;Vy-rQfaU9~rOYeHkS-rm!8jehP%;Z)kN z^{KAknSK1)v&!0Ejvnruy!A1HV#%=LcERXh8~L_|vu{m(zPyL`)c9k2HXVEA zFn(=uckRILXU}g()>GZP3>fpz4@A*c7QggL3-EO`eQu0A9quR}efaK{hVF6tD$%p* z?az+3e_OxEao~E@v-aV^){3J2U0+xAQs+|qH~Gf%@BCX@e`@T?p#|9EZC$=Ii#kx% z-N~!I_Ezo&cV?%jy_&y_g&m!m^U50DrQ?+?bj_Fc`$Nc*ODFGCt-1JFwAjTRI*q*N z>HFyYd3SRQT8j7iUf&m7E7QgZ_TWlOWZ;73T+hXd<~19ZZcHx_o;>GwuT_t_qQ}aH zx2|sUm4CBg6Ytu`^l45}>&>ABJ+=pqJ-y{SPZ)+O4;H-fL~!)T*x&nl+BWjnmc2ME zVP5quavZ%r`u*gNuMV8!->DW0u+98myTk+R7kuwlI@vd#{G|MOB6wz`2c4O?*`PT2 zTQ2sbjsJdM^TToX;v*ME8g_nsXr`oYMN9Ds^A^^limKc=X6w5?g#{X&foXgWsPC!-$shJe7msHU1j7xXq;E=`tx_6^szM8 z>?^(GIt3zGsgUnqS8;Ez5^1x)-P!iTz?&CtG@U~4v%i?Dsre?i`yVsM4=p=!-_Gbu zjx1gOxLwwFWyNl|4iD%umAu6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_1_4_2.png b/resources/g2/track/wooden/medium_half_loop_left_1_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2c1f1fb89d07c1eb1ab854bb6071bc6aa491c0 GIT binary patch literal 1183 zcmX9-eTdU`82))5P48>H(Lr|xsn?>>MX8WM=Hf`boa-G?a~Ma_!aB`d2W19~&|#TD zds|Pdgsp0og5}Jl%*b`~*fJ@j^Ws)r*#h2Ng{U2NvoHsBtMl9(`>i58@5l4c`@s9W z@1cp!fq~w|y#RoL@v+e@?Yh1lguSz!p>g~x06M|M#;qILbkU+k9UUE=ot<4>UEST? zHk%DW5WC&p)6?Vfdc6eUV;Gv}SwRR%l9)&&GMQYVpc}@#Wi?wZ!Ut#yaBN>FMDaHL8?z=U2@Q^2v|-cW)n;)6RZ?OtDJ0D>O#{9pdgHc z7!4F2$%{xS<*4SJtqKYoKG+Jw#|ngo7XS``FoK8sMq$*yL_CR3S$8g56Xm~P*RpjXl%O3tCg^BMcgFn3wS9WX9Y4OGGdZT=E6B$)J@s2 z(qSqFKr;m>R4b4kwA>L4u6XOpNDKf{=~H3aL~nmos&}Hb38NHX%SofMpOO?_i23 zU%?|aCRq=ujaad%%(n`S$JGVchdUgk%N1~YdE6&Zl*Dq$aC=z1kV=>H1mH;52m&Ahpa7r&PzIom0N4h{z_3labxgDs9IY7=t;(v1Xsju7pR@&5EYtzC0EBHXl5M%CKojw7y-sE`Pa#z*Oen-hqe46`621iK%g}_z5GB?( z&*6=r7lz$X#$c9!It@*>ef;F=zCWJ)z}_vJdEmc$-&d4ntrtBm7(#;J1l?w=-8=ge?PVB$`r~_tM}D5< zCm$YkLfrF@wbEDrwDbWF$!AvvZG&?Ue%-Nr+pC9KmyQpQ9rOCTJ{i8VwCBLmo)Kp+ m_x90c_Dw6+9e6l>1(mO!Tlnz(v61#-!T5&FqcbCK9Q+^C2LHeS literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_1_5.png b/resources/g2/track/wooden/medium_half_loop_left_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3166c43185ea85f1fb585fcf2daab7fa0bf04cb1 GIT binary patch literal 1284 zcmXAoZ)_8F7{`C?-))SgK$Vi6p}49wIiVq^bgaTLZc7=bySW29QbNH~N^Itd9qWrS zFHo`3vYe(1#gtK#B4u_^!yGj`VnYg6t=nlTbmYVWRm&VuU1JJ^@w0^F`}}+Jd|!N? z=cA5xW8M7v`2c{rwv8>FrP@>qRdsnOcbkT104N6?uWW8Djq~QsD=RB2FE6jCsHm*0 ztg5O)5Tv@gx~8T^rO{|`Tt|`w!%!@1w%a+E%jNS0B9Ul3o|5H!p@8cEVE{B$Yc?xw zHnqd4b9)RvKOKr##F#xPc{14`i6JIKEk~(%lUiW40Xsh8B4a*NGQ!CTcTNr#^Kl~z zEEsSQKwyv%hr~RJbVyl9qA;g}1q-|{Kp58mKm%Yw5Kf`sQB=@sg9gJ0O((3@G|x{5 z0x%XsaixY(>1egVqBU}uiN{&NVE2=*Fy$4QVA2wmt!h20GinSBMzMM`M{;i39k2wV zTvX!YvRBH5GR2sJ07?d^tU&DqS^?1qRK|$b93wc%u6i^($)see?r8o$U-*|JUTMQh%ncrFnB> zf4}#&-s$BFTDCS{o#Td9AGvirU-|U@AEq{5d!|2iV)j$E=cW4VjYa42f#^JzVyNvirmez3YOwU2Zx!zIdlNuve;IV_i*Nn_k$n(mr+codcua&6-w@zp$%W z9A2>?u~WNfOL|S?Q=cqIT)6b!k6XGA|F&nh<(D&4NB&9O-n3-z=FfJt=$`zu)z{Kt zook;Qf4})i|L}o6x^D2&$|2*DiM5`y3-7ixL=Sab@4fQw=M37gZ=KxRwfjxm(_Lj_ zcWxeXbcEY3&UBsJer)Zkq6*yV+rQ|)rh9K4v)+oG{qj&B22&Gb6F(IOzr8s+b@=xu zF7h9YjZTb>j6b)h?(Gk$ZF7Tn))$3_!Nk6<2RB6it5sF>)Dvw@;Rld10;&p!}$RQGjmJ;+ptEpJ=?zY=|&mCO)u(Mc+4sU20y29Kpp#*KM?JcJ_>^Sg0?AS%U literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_1.png b/resources/g2/track/wooden/medium_half_loop_left_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..55ba01ebcb1f4760d53c691e0f4fec300ecb76a2 GIT binary patch literal 1142 zcmX9-e~i;)82;{#yACD}95_PJ3PT%GahjSGDOja<46I!7iY_osF*VFMye3v$aDjS^ zILU&&xX8jyU37CQO;6$DMH`O>WUC6D~4w>WQeIBP7rJ>!0^Yp67iJ zZ0--vowIlj0ATLM4ZQ>Hy1E^UU0v;b;cN4L0J^~DC%5#q$BvGU&d$!RuC7_LW_5RW z_w@822;y?NX3w7O^ZWfI8DLpP5I9K+D~g;*Br=&?v1nMqH#7(>KL9)cB7(>skBXuij^}CmB+r*4k*car=W@_A zQPS&Yd;uP#MLZ}IA(fOgTFJ5rolBR5d_^>z2u7iSpq~~9PNKpxD<}D6PRtpyVXKyt zwi|`ojOk&3R{*{Uz~TVc5Gv;j7V)sj$aW}IQ}RvCf+u;xD^X}HNTfn^L1IgaU?-$% zMyczGrkR{GiDI1FwQzFp0c!bl`Xg;l$^t5g1 z4ab758pUzY0MG#tw!KKU>23i{#IyA}mCf9OQmL@vun>((@wiL|5>z0=kUC46TwszX z8X-RvF{t7&OG1NzHrGCWYNh+y%^!GmpkDxwUAnlV-7nwR`}mes2j8D~d2s(d^Ln?lsnL^ADMih@R;E74bcn9pNt3Dj&+H9fB1OQitr~dcDueLcAmX@7TrrwJ1**D-=7&9 z_-d`asOMaH=WW#smp@!^7;~OIvg@@&i%O5K-OxOD=!=IsaaD#jnWJ7iW$hzq~Kg77uLf>+e0jZu`Ff E0nlLeKL7v# literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_1_2.png b/resources/g2/track/wooden/medium_half_loop_left_2_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fcec1b03924bf959b53265fb1696f32e82339add GIT binary patch literal 1009 zcmX9-Ux?du9RJ?m-0hr&^`Uc7D^>_BZheRny*y-h>5)4#F2^z`(qT?B)`u#2h+3p* z)J*Ephp0s>R_P?Vf|={sse$z&4;ec&n{gCZB@YFw*M~!k6glzGpE(Af@Au2+<@@=- z=lk7QTjdWPIC2004z4U`PDOJ*sv|QKQNR7I`zXK!terf)6w$GH97t(N0?oiH4ZMpPPD21H>lmx~t) z$zmy8t}wN_*lfvdSM!5PuWxZAmSyHtA)#lJrb09{YSZA{TGnr=;Z}JNTDwD!$3Z5c z$buP@eIBpVz#W0(qxRuX$b$zGNK(32Z z@f4d#i%CW%c$LiRlwvYkoil8q+LkO|cEWs;#?yR?kw`(Ib1J8n#d1S#II0uqURVtV z&EBpXV<9dvV?0Ap%?lqJ~k;7}v%npUn5T zazAGcitVA<8MOv`-CZy1V`hy}<3XaFXF4X_2!#{fkTIaJb+ZK1F$5};C0Wx?Sg z6ah(q)C8(f$P$rLKz)1% z$YD_+M8{7boBMPB2VOk2D#3~EpU&-*=L9|jZ%;k29Fg}{G7G1l@PF$p-23`N_e`EZ z=<%No^^H5%tA{fS7uGKS@$T8HYwJ(H7C*_Y-??=gHZFep!7pze{piW5rSq3Q>n%Qf z?!n^6-tnccP3EyLt{y+1nf!2mbmhX~XYapphWhf@#qZz0v3&HU?9FTceE$18xBTZ{ zUgW=`m%cl*Gylk6FYNsA_cNc|JoJ=#-va&W_OBa1{(IIQCl0Or_sXSjwpSu|u(Gt8 JxxBdk=KlkDv9ACC literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_2.png b/resources/g2/track/wooden/medium_half_loop_left_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f147689031e98d27c99e4c6fb0b77dcf6c4966f5 GIT binary patch literal 1062 zcmX9-VQ3p=82;L{y|i)0Eu$%hdbJTEJ4Yr5-sIeF-L;q4xxpGCQnsUR+wb~kuAu-Y?u|XwjPVszB6pN`;C6_ZxCCe~c+uPl47lM!kA_W95`{`Ps2fHnf43yy|q8R{Cen_L7) zILK4LV1Ug5$O9+^VGf5H2aP0bWTCBryT%iMr9q5Cl44LvVR@A)YhtyUu`IpQv7oCJ zN&r0Vqtqa$p@I>SY*OvUbthHr6&m|S3pTrv03c9=iTdLdn&k0xf>o8ImRG8J-m2*x zy9S*W!LrZ*&;}5?USwUldkAIH#de!07VbfAH0XGoPbS55TEe3lB3htuoyJWzy3Jvo zSQrW@R3fm5LxX}A>xQ2=>brgS2i`a{&x2FH-#G7*pJ%71&L02x@|CI4%*1_z^2KXC z^UBEgAHDtRx7UX!4<1_jWA2@kM^3?4JU_hu?gK-o$GpoE$6CyK*vtI2GA%64k5Aos zVIolZ8eQGE@DH8X{9^yfjdRxMBmey*U7lTjS$cT4v3lX5jl-p#&-fFI&g9(H@vFNl z$Fj`1#n(p{o%9pGe*VeK@lSsXZ0+8;>AU^G>iU-*b$sjZOUm9a#;revx7OdhR^MxX zSDjtHc>dobE$?%y2Y=jr?C`TkhsJJBj@^3kwa0zW3*Q`i>Bi>D*8L~cwY`(d)2kDU U3r}6L-21@n%>4BA(@XFD4@{%VWdHyG literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_2_2.png b/resources/g2/track/wooden/medium_half_loop_left_2_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8a082e062a48351a2f9e58b7d87e83af5e832f GIT binary patch literal 1107 zcmX9-e~8<36o2Ibg%4;^+>nWaN-w9mN-kP2DQ+#(am_Wa8VQ0# zLXrhT#EJ@5(S6OLzgrKY4u!fB+At8Rh5!Tr3BwehPYVVOf-uA3WkIOL<4sLlEfi3t z5~TehHb4n@SRx_{8P#an2&;K6ZSmQ%Xx1g$jpIy^iiE-<$;(Vk;gpP!DM$rdu^p}I zW}Qy4wN~-5;1?kf2RsFYfiZm~mOZ1$slEYz@7cx?BS*oOGYsHdVb-FDUBpy>m zpC;i(g3PB_D3)79a|s0vG@mKnr- z1v>(+07wL+1dvW6Q$ThC)icO7;a>0z@Ek-1EFlN9B$+iLMN=-9(~e_xIu7b-1>-=c z##kdDn7CvUiW@e(nAJ^|*K+j@yM>w_;RgoCB9t%2;t7#X#d$+Zm|3lCWu2p0`1z%KWS);q!dpWRP4&oM)06w=rfQ#j@Z;7K z+eRigkl@a1kNmPIEfSKdO66GyicjecLJF`O{zAz404EIJbU1b@+{M zb#B`geCX>eZuYO9!qXE6A7*E-zvFx0%!Q+S&wMp>vj4F^BIEgs_96Dp{Ab?czMryJ zU*Gla$F(iaYe%q&-*;{<3;3(nzm+3@JG+FM|S zw{QOE3E!XRR}NtdJHC8;JaKqs@Vjdm>?s~Qd-E2 Downyw literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_3.png b/resources/g2/track/wooden/medium_half_loop_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7d1ba66ab8fbcc51b77f0fc90237dd992ca259 GIT binary patch literal 1462 zcmX9-ad1*~9RInou?>|ua+H`jDN%8<^QolFo{ddhulBY*jXLt)CY_|D&+}QRn6xp& zh54q;k)lK83hk+QXA={X9H;X}C+DzXQsTtqa!pdSbuImc=iTS~{oLoD@8^%t=i6Fa zqaIT*p#T6drg}+beTK_2)0mf?*`Bd|NdU4z?ORK$GIG?YQCV48+1c3~4ksrkCpR~j z%jM?f<>lw+3ndZ>g2+`WlprvjPD|62#bR+dTwbp)7>vYXsdO5V15^ocjHlHK34kzyMlKuc43ftldw@Sv92YA|shW~$%!rOr(oU6y#q55<9U^@(y;vcVt0hW8hUpYqN<~?5tBZ8` zC|}qdjM>9UPkcDQM}dFAfvs*D6-)9IW>qt|8&xLjeMFCK}cQYi>T z6p%W&h=;H8i-?d+A6HouT6fauPcf0SH#rg=hCCUcuMi5=VhJIW>y%0w!>wfIn8|Ci z_jtUqU^pE|0f}*Gf^R0pj6vo!p{$kgJM}%RIT~;#qrr4~5TXER0H6V20AK;=0U*Hz zFaul#O*CZPFc!t7fI@&B1wJ*1;Q$f->I8ILs!KVVLm}=>cNmp^OlBi%Fl9iYb|tmQ5S|!;a91FAk$AsQ@U%T(z99 zMa2dJG3hbJY;fDne%2livdLHwrsE0>gFXOb0K!Zb){NbAh%6>&BB5|Po`VjBR9Y=z zFz8Gs3XxkBatDgADkOl(Be*Q7kw8)m%~I$@pbv#%EK`0(Deu9vAJ|Y|Lx4qhudjS2 zR$%H%us!GHB>-e;sw>}E`fhNKMtk_!?n^*N3XRops?>%AJ z$sb(cKV)HC!LzSL$GKZpEw||APiq`KaGgm^Zo9Q*vDkF4A!}&l@~2ioN7cU5g%x?l z-M1VccNOg@D4DroJ-M~3k(zVlT2Rp-ijz+|9q$Ox{~m=3ZvJrR z=k7okJ5c)g*Sl#0J~Hm%OmfqA<$ZmV=F5lb)A8Td@bN7pWZv@O5*7ccY3{K-lBBqH Y)@MIm{;>3;Oy59tRZZoIiiYO@0iP*_I{*Lx literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_4.png b/resources/g2/track/wooden/medium_half_loop_left_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5c61a14d5f2f49c4acdbe44ad5b47bd97ece7674 GIT binary patch literal 2094 zcmX9;e^k(0)3?tRYv=RSWt&%LKIGiU+6b9?~+ z0cmSfvZgtHy5!#Q=|1!Kp=pAH%=C?^(<2N9^YHM1!{G=7!qd~!%gYOiM0$IB`}p{v zBO@b;L;{scVKV7lE?X!R$Ye65Qe9VPFq^w=HkaE?BmfE-Fz9}4b`YPB6^RKYaZ}vkI!c^2?YPTK!vGE*h$uk8 zMCt@clN@E$1-UyhkdpwpInbm6g3OTsFaY2nkpdJ-g25LWf@FGAYL`ddOi$1(9%g7LmlGP(@6poXb^-M0IkxNv*aR4EFAB zm&*kKi~!)2NTLo!HDZ{Zc%GeF;$Ul?BBM*u?XGi9TE`(jJPJiZqiNVkCZ510lZA9f z31@nlxK3W#p{ui*Ep9snaOg-O6D8qb6@0u(OwpGxjVfM;USc(=oK~~jJq%F*U;!Wm zKmmXrfDQm0NB~WPL50LZNUw!#Rt63Th@g@J3^ZV40Eh`70UDAMAuR(k@S)BU$fgDV z7*7IpDqt~?d@fod!dEJ2IxW{|lvyl#r_%yWYhieRDE6Z$&W55Y)WQB{ZcZ-bU z%FaoH9kRM`L4brs(g-Lv1ki z_b)IqvC82fsg(ah*x5;CvzdH8S1c9~2{IBvNg?W~L=&CR&A>ZZkq`$9NpO&g2pK4l zg+3jA(jvdV{<(p|tPCbd9(vBX?6l2w<@zXYu=B!Q{ z9DF}lHCaGto>_1`?~NrV1BFU$i8CYHVtssz(7zT7#uhg-{TAk@T}~!8FOAiGynN4k z7a!tS?kUn3Yl^OHm-Z*j3}(#q{&C`G@9(n`MvAk$QK?5fQ;T6&PQ-Dix|3>vyL7SX zd-0yvr(WMcMelNZt$a|!Huc)3{6-4X!vDAt^ZelQvZ4}A^z+NBdlp;{?rS`p87z9% z?23)5&Ag4S)ikMugeb?;Z__s-Li#@aosf9ohnL2dn9Rf@&H-3(7kWr@x!#dcxV@eo zvmtt2`jth|hMUz-whl+$Ik%H(oCgmXIyawT%X7Lm6 ztPhJ{3rk}5#?|u{FNhb&&q24#Q!~!fDi-MsAz!zRW|5!Pk`T%HlB=bY8DXtcK2vuT z@&BvPeNO$cs`tD4x{*UW@*l`TizH)b(wr6LEUC|tb=z)Ukj=7{CStf1hkgw;^&hC> zW)_vWS8|YoLVHW1^vxmuE1sKWo;xe@C#r^fA5zgHY+_c52;0+_A+>bNJzKd3` z(hVN2%@?Dpy@8|aMVoP9L~GStR=eV2t@lO2{h{b~!lQOdL0IbIR_6V97s{3pMBrjE_d zJyzY392)Ru#nBvOM9n-`#BMBF-E(h#U~UD@xic;oKjE=?S%Zbvx%)MK?N8klJS_3fb0&aJVnlU@HpAhGx z`Fh#KJI&kAEP?gqNu46NzBjSCJ2(!uOt`{cyngqwvv1`y8sD){?;as}mJscB;!z+HmZhbG13bsJ7T|wK53J|xFXraRMe7t6JuYXra-wV*$ zFXJC|#^fx1y!39;yN6w$KGxX%_l1Y~H}3y@uggDrcmoxq2@R08I~!kPz>60+OPNpC zCy(3N0oTGqFh8ZDG3i{Yb7W0=gCL}9qBI9q9vCKl)Oc5)jhSP08XC7JD+VFYz1ar% z#C-o#AanwJXxx-MDLizc>#sTgjk-lUPb)uDdh%82$;UMdl36ML>ALyd+j8%6Tho^y zEvfov%Th$)EdLe+Rrd`jT(e|!mVcG+yqY@u7ch6*D^*@&^WgN;18J!lDc4u$9{WEV C+q>id literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_2_5.png b/resources/g2/track/wooden/medium_half_loop_left_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..30f99a6445b4111888ed08fb2c1a345d430e5ed6 GIT binary patch literal 1328 zcmX9-Z)_5G82Z#Wb$!)#1XGME$ZVr_#%-zgsXo3k_ zQBj#PCGI*g()H}9-jr?KL`9{B4>e+TXszg&BN?kSwiz|db<^12FecCYKJWA8eLg(z zd#JI&D6Ooi1OP})8|s=1ys%J9%S#HqGcvFjfD+L7?#B9pEGjB0E-o%9DJd;2Eh{UV zHf@?jA}KE~uc)X{sMTr&(P0=$lDNe}u`J_qxi~Hm3WZ~_p;RiD&m%g38UTS;QIy(VCrz#cN>wm`lKY5t5J7;gnUSSL%#v1F6L=dWyjqH{lM@ zfiM#mow1Zp%m&kwQ5g#4Bv4p^$^kT9i9Vn(hBQK4E7URxkazE8?_#@ zA!xxOEGfDyNsi43u3VIx6a|=x$>e&C){N+_C}t-~kHzA*+e02tG!PKO;q=f@E|-Hq z$p8%}L4q{ztGQC1!RH;d=&SEgIIN_!X%N!w( zZ!j22#l(CX1vD;UNtu&Yd2L$10~Oq4#BUuGoXMy^n~df2V-N+v3;+v&7XSf(K>#um z01F^6=wPA1!&H*c00sd*6oic+MF2Dl8e6xr(rUukpsO-V${hf zRAnO(hZXlaZM@GJ5qx4y$fja2pVs3z32mlp8NHu-4K^OfD2lY% zEDi^Q=v;aohav)oL~-2^q0O4rkXAvb2Ko^gMxlroj$gl|>glT=*xlSfg0+ty?06+U zz>Rg_VA-4vh53%DZr#SW<3~0;e78&n@Vw z{(0}jA6qUDyPv%=I!h{U=q5I2e;c}JSV+KyjxUe*ogSHCl9pC(vh6Y5 zz58DGv)#M?{c(KT&`3j9YofY-^^^U+26}7p(a5;6EP`qus5ha^AJ{i<+iL$&B4CU8{Q%Bh9-aMJ=EVXJ3sHp`pRA!CU#Z5bE>I*+ljpj zbLQe9WaZdQu6N|Hs8Efb@s+uHd1044(AUtu<>8w*hMmVRE$LRTn0M@vbaV84W!wFl z>ctC>UVeV%K)< z@VxK2xucQs(I-X$V0`w-^s(N2rdRuieZ9V=|NAh259VGyKGUOpeSQ7?{XU;>U|?Wy zaByg72*a@9;o*^y5j+$M(R7&SIY|-}C8lX=I-Snvi{-Lit!{W;yVIe=z_B0-W3gBu zksy+(a3;&<3u37(R~)V8W*beDr?4nHrV6+oB@BfuYV>NFcktC1kc z6eKw?B&?)jPS#&91v<4LYK2ipMtcTA)ewLPAY+*7_v^u+L6RoRu8QJ%JYLuJJH;Y$ zoFE+tad=oHSecBdR8*%GgVhRr+7faV$*jq?7blotI1*wdN>G@X%BvYMQ_DN#QG+8r^B7(7^Oc}f zqv8!d(~Oy|WTkCvbjq#0dKZmRem{fb5h5f}VTENiLCna#WvOyDw_YlHRkzdNKo&4f z^6N5TB&b4)vocbp5MQ_Sx>IP?tDVjr!~sMBGyns@0$2xVVt{%Od6d$SWg@RGlAzL% zFB0|F0G5lbkzo}_X{q+}|UO4@a;R?9^_tzaDJ z)EH;rqDja$sd}u@j#-^#rJJwq*$q^0lL24|EE4v|I3gj@skmV12{Wfxteji5T3!`( z8jK(y8;}PG^|HwHrjUOCtybe>F)5KyQYn=Vr|EY_{q8qUm3)(*9$0v5zw>nF_LnC{ z=l6Y<@c;Jq3)+R3?p<0~d+gL!-*;U4*R{X4mp}ZocK+{s&;EGp^GR)OVt3)fwR1nu zeZ6a)r!QXr-~@i1dwl%OKhP`RPwg7-qm_4k`{EPAcI(nq&kW4Y9G$*$_>HCi0kW9O AfB*mh literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_3_1_2.png b/resources/g2/track/wooden/medium_half_loop_left_3_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d98bfc5fa3328c3080c85a87d6479f7f905e537 GIT binary patch literal 941 zcmX9-F=*pv82u8*krOv~FjQ@IMJ*mQs6{z6h$32DDj!NtM-)y04=(7adNtI8T6A|F zR1ln@ZfiI}J$TUIK@<;yddMI+Q&iC4!Gi`5E(p%0F42&|w1#>Jy}t?v@B2R9^4{>? z_ruw#bg=)ov=Oz=I+e>-BQ8NwzGe z)8+fFG8}2+(45BI#nKaLti~4&8MkYsqf-Nuy=aSJzcw8i$)uAe-ewg^1ZXt01aMSr zXkcNtG#{4NQv#(7T5IUqK`5#KC;%FU8Ksg<5DrCoJb$4mlSX51+gF1D3PXY|R|K3< zNM55PgRa@E?(n87wtcxbR=uefBn^@y7^%Xmw5)S=Lo_-{XP^xNBZ%!N>BZ@Au?b58 zlvThRKw3aK7&pMB5mgTbBd&E9rnhn;bfM5?og-Qj-L3IMT^yTg+}7uPbLqENVSf|* zXc?8t97Weyt|5pmRqg7!+iH!v-Ec67gJ3b6tyU`pgaK3^V}~ViOsG@3u@F1Ux|g=b zD`&PIrPuQfD$=DAhvO1iQE5i!c~e$8S|(^3I8JrCV<9=9`OsOuAO_jA8vST;Bo;~(^apb2-gw_jAmQesG0fe$FI+@*T z5N*p{E;+aV8s>B=*6V7ssaux8GHs6O3#>1)q0Gz_I;~ZZMk1R+E{g&I#d21D?!)5W zH$U+B!Kn&&E`R^>hI}qdRro&t?r}y=PpU`fZ_S=OKidE8u(0zVTHgCse&N6TN__9~ zk6Ukk^V!+?&qw&LAKfbdrQiPP>fsyjAHR5X`07y8pT0b}BYu}Yuike5IWoSUJ-+gR{GMnmc28cvoBMmq*VP82`{kTFaRg>)P@NYZ54bx~}lQf*y-RH>jw z1E<4LE)o+7Rwm;rmC$L$V6`%zvxH(@GF!6kr3eO(#iOi52?~=`c{MNQD{{qFZC7`^ zqT8!>wi_W1!V*MMKxBb5Fs2fT*T`gpQ{6 z(z;g8ZgB!su#Gb3_0+Il!5mca&DIzam8OwECI)cB!>vcTn3W!@v+&JQhlFL|US=DZ$XwW>K$OMc1)y+DPl4yMDhxY*VCqi71i@ zq?4#jBb!66FgSkZ$mE|-e&FK5yadw^e>yiH-_Fg>oSnM%(F5T*=U{O3{^6Tj=<}sd zwpK2`QkeR0;iXl7`Pk{*+OgH;XCKaeIQ1&~%f-D*fm2`K$EWZ9@E!C01>>#6*!=bM ziRHf*f;a9=%-kKhwELfbpZV(LqrbnqXZqfi7v8+Ge>(c zbByx$%4-{6EbV)7_||G~t$#Yb`25!E@0V_UnfdJM+NG82`z|~_e)zY&kBvh|qZ|5x mskJ*l6N~4Y=Wc8Se;xLZm=E4)zjJwD0On54&)z<<_`(0f^SLPi literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_3_3.png b/resources/g2/track/wooden/medium_half_loop_left_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed92faca6066b1637afc6538b274e17f51d49c8 GIT binary patch literal 1550 zcmXAoe{d6Z8pgkEX}1s{V5E_zbKwk~2n)nxwV~#&i)>3;f-JJd?HNjXu1CrQiFAuW za-CFylVX_0A>~#{Y=lKKV@4tbNx2l_8EOwxT)3*Kt{OGaP<{m`Fjaf-y*SQ%-uIpN zpZEFWdER~N*Xd`?sGI=+nAOx+zo9VIg=#M^Df9+*{#gJ@!1}e#4TZI+sHnKOxTK_H z+O%n_G3nF^O{NTtrC)>~29fiWH(>m!^YgEvO;NmEobE42!ZUZtZ@1EV!s z39E~A1x$gcH7Ym~qF2ZU)01&24rCONn}N~})E-0|kn6*0V;r{%v^&l6IZpycNL0pX z6*fKUrgcGvh_RI5WKtZP2|06dZc+%rOhPKts!NnO>)VpXd0$+Y8lWf z5xqug#FZ8bvzrYbhlTe#Vj-`P2xY|t%%`;m1B?PF0tgFUxC(N=qj1`NnT*!Q{SKQ< z5=J9su`qVK71KDi8V<)o1Qs`FMoBbFtDs2<9ct*qU=)Xfp%8xUQpr!h{Xpl2bre`R zKDGsb;=!i+C!1SdeVdH2nQljE1ZT{C2U zniXo!Pc&^0tkn(wRYLh+sonnOs(R8{oG?!~z$&QH|NZtc&s9aGA?eLp-i zi@G;<@;=@BXy0=)KmBRW&HCVHCN6>Z9GbQ0o-WN>dWi0iha6zWq|OxD`Q&bHMdyjv zhkse8NI&I2{!st=tcSn!$}(>7PRHR60%g8fRMoNU%$EoDkM$lBA4sjebzy#oX2-Dc z7S?ZDJ#p^w<)>U-Z94zUB679APGNjKqBS$k`>2U;`{>rWwzD5Lyk8~#54SDy(N^D; zEwcly-&dR}9lRFhUzG1??;QWy`NCuD<%?ftPIPUZ9qC#nUgX+G4xVuzJ@@w#ezUhl z-61CA*F4<+D0J$E*U?9RUol>M!6e{c`~Qp_9tnId-FRW+snX1c`6JtU>G=Z&|Bqcv z^CA4i!)(iD|5kteCH!jV?LQ1%1)InCLy{Wl+hcQvN)n$`-R#f)dgM>XmW+qbXqF7r ztbXiv#mMElikWrCpC4)Lss8thuWEW^{HO1VD^-!M^25EmvLlu1)r)Ue@Ac2GXsOLV zy})alUDk6_QiAYU=h5>M#50>#&zt9LwMWAHyU_0%hPa~xfq}}(<|WUzZY-}6_B{Vb z&0CV6?`B?0HO^?SZF_`TS~mDbsBdQRcdOdp8?xW2lU$UxAGo|Suw@q{&l8CS3m0`? zkZE?JSNi_tuckLV^7ex2(!s^m3*Yh9HWiWjg=^+6_pOO!Mt+>Tef#xGOD}!ye8{jZ zyy@WS4_b~~tT0-d{Qsz0PK)w8tgAn^s%_8z0ny#QWdHyG literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_3_4.png b/resources/g2/track/wooden/medium_half_loop_left_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c80bb52235d5d9898ebc12bea58e8e1353be11a0 GIT binary patch literal 1686 zcmXAoe^lD_8pl71_|-Y%6iwD;lawYaD(rr*W5uqxn9&Z-Zw?oBs7R=>LicUqWRp9| zk+DLf#VNK};gJ?M*@n9|zbBcY(DH877^96jax^`T`+1)8{PVp3 zct5WXUZ@u4ulU;v06_lM=eKN6&rRv7%^{`xRQp#N07&44s@lr*nvs!_nVCrojT zNu^YkilNbR3`U;CiaA^|w@2*{7^4$*0UMF<@^BGNCt;WrESnnb(+fNniQk1sMhvlt zJr(x}=|IK?8a^WaK!zYVg`%U=O)Qq3$Lqte z5v4M$)6Ljy(Bq+_R3@Ls!5BOlONg^2I#glesjULNQ)G6F?S2^%Q8Ku6j*!U{vqcK7 z6c^wI%wUt*2%HG$d=YaX=7^>|6h5Ge0Zj=QTEH?PTpLa3Vo5!GJRmVf)%Li_2m3HK zRl%ieglwaP=THdTYH>iX2wT(>PJP^CNd=s6!bhQUS!@Z)Rq_QIvDm0kST!1#(de<+ z0t68ah2rrz1aus*EC}kL2;6kBpRJ4v3=>j&OyiE5LJ3!FDV&0NYzl=-qX`*IF`J{{ z@zf&BAWI+9x{T%#hb!U>B%*vE6Cr9bMJHpJRBWr3?=*BBt2mliZfN5a@s8vI!9Y(?!3*aa)^8q0Q5ez^vfH(~rQE0~?p@Mz`jM%}S z!E=E~03;ZqQqXi7w%H_f*cEQKJ`ixmVgZ=;qALNa&EuPBn4KXbSa^hIic6gdjXP!W zFA-4~jb#iBYXmWYVeZW}Vw<4)~n0hz};BT#*P807d|W=`0LsyT3%& zYpoL#T&v|Tsr`O|R4P`f6k08ga`aq|g^xM~s7J&JVeFWM31tkZV?iql2|f&n($CL* zB5&?b2AZ~4i$TS$Ydh0mY}vYHb8TJw7Zy>AzI5e#-@)Jmv;E59Po5gB#S{ZW-J_38 z&e#r@F*kp z^tTl+cJ>kjXPc5koxY-M#mD5?N@8u>HuqKT7LO!tth`jjfY~r*@wnQM3p)HBJ|J>|Yel2ipgwam3pycjsfV zo5dad+U^1w*73=yYf z{Yl2VWsjY0^PTCPF5%{%D!KGlMX7BlR`>m*P2=7>Emz7%j#=IG-~X3ewJb*(q%V-Hs6_?ll|Zph7L z>_5z;-@Vmk_#*(8);o~UdJcU>&BZkrksZ9BF1U_eW-id0H+E_*8(%@waDlCr)mu(I I``W?(13mW@xBvhE literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_3_5.png b/resources/g2/track/wooden/medium_half_loop_left_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1155423912ba5f5290ef659b6128acde2407c4 GIT binary patch literal 1279 zcmXAoeQXnT7{`BOFSplpq{b>mFIi_Q98lyi#azO{Zg`B6-Q1DYQAu&99@vm$7E(qD z4eLmOIxkDXLu+WVLmN4@gbo^4Ls^>8kqX^Qv}n;P4OASlfo={m!_N|u@ALN0^Zn!V zJjXlQ>4w@RwE%#Iw#}`brMjvV&DG_lJoeus4uEpdv31*~(pXkjwrJ6!^78VEii*n0 z%Brd=1VO5+t7~d%G&-FQ#|;!kvaE^YEOxu#cDp4h5DG=&@###aP%PpGKoWp4)mbcR zn+Qy5|<>I9RFTr1_Krb8(g0sK?B>ktZn!%X&G^?{I{?-dG@zibS&0(}h9-0<8e_ z5`qU+R8-3*F+NLqauzx7h!(`@Vkp0mo`-dqN@dh&XjI2y296-?CdOkeEpvvvzC*jW zI_*%AVJ6M!fq(-a2_iJeFaWXu3L5Ceq0GRD4JJJ>BZH^ljle_!GlSSTjmv@gL^>#Q z(WpC>Qu6r}EO}{pfII6*QNzfnHKG?XgjldBMMrdAN-jjQFkR5Afe}S$gUUjpHWqjC zCedY+eXgkDOU0FZCJu{Pqsas#0A>J$B^I8N-7{(3PJb?E^h?iVPbMjgg|*o@r&GWU zZlggWafQNTCc`v?<;^;1MWIU%{Wy$}Fl8zozj0;VgQq{Rud|&68}8oxpwxfc*1B=q zy1~JdmP`Gs>o`$ftMOoJ%Ja|$+p#$_WD$K+$o}G>dO6hk;oQc@4|)=Nb~oj^55Yd$ZKi3^ mb8UZ9cE6Op{I9DqJBP^a!$o1m=WmuMg0@ZVt>3lm?EfFm_&dY^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_4_1.png b/resources/g2/track/wooden/medium_half_loop_left_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a18729959b2528061d84249cac26c58e4f08a266 GIT binary patch literal 1451 zcmXAoad3-w7{`Co^0vxis-n_~HX|b}t=HY#$<3>MTWO{9I&V)#Rxf)?SddkaTIMps zvI>ogN++#!f^?0O-8ym;E=M{kK}uM*h2~C>twL_iw(j)ow>Wp7=Xvh==lTBe{XR|0 zmP*EtojMi(FuuB~VtIO^>3TOSBi+BpZr1^j0hZO&R;Jfcqeih}(F7&qq-aLEsc6Wf-|yt2T2=uR0JkMq_qDh{(h_Dk(=NG39m&KaH%4GLp)+1PWmKV zKnsBe2PO(}s1UD_9d_iV0$dmu!4wTgOc46`0FVIC2%=)MbzH7VAh3(YJtXN@D8f43 zQ=1KXy<9Yxk8?yMPfQCWDxpk=GA6OwO6Z+Zvxl+=Xm>=x!?+>|UrY(53?^3*Dg$Y- z(Kffr9n|?E=3v|r9rm(ukV^rM0`RmzU_vk(N8%F5y|^kUGe*_+q{#<+NMSC6aWxX5 zQ6_dUghx#U^-S2Jjyd&7uVpysgfSmG7ZV6&D5k&(4MiCl#;Vb{j7G1`7IeF#p-?iJ zgn+980tI+|xv3awh)X`nn-h2Nks7od8-<=*D4CnhrlUH|Nh+Kd^22QVJ}3 z^2>SvSSzb5%4(~cI*vTsYA+sFxpU9r9RqORoeAHyb5<_gR6N4C>NlA4LsveVXa4zG z+0gCn-GjS!(j9e2+sLB&8h?EDdo!7vv%1c9U@}6`*^t@$&bEtpqLrPKpXEQbAuYvc zo~_Io%sN~yO0rtcbv%B8)gQMUffvHhH}((QgRGw>(1qleegBPnzpha~Rn&S$m*5{7 zVXf01{Bc$6!NRSD(X;(O%voD8W6P;a@i!iov^19zABOss+UAp&&hLFhR(H02(Ob3y ze~O4JPQ;d<;x1gr^fj(N`qvCrAKYr1 zOAJ-9`?`l_o%-r#SBWOGtF&twUO*rCD3N#U&O~=xu{p^HAmWt<5XCc!hm+iM-aqqP>zQ1)D=1Jqrb2&l&VJ{d#%YX8qxC>HYJz$y9O4 z{k-z)?SaKJwY0KimJMylTon>vOTL+4Dw}%p zIXkg$O7rxID+>l=u{U=YbhF|a>!Wwe!i@*M?X5Uh4G(W1# TuH2GN9H_2bT5+~~&7S`ObJ2~2 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_4_2.png b/resources/g2/track/wooden/medium_half_loop_left_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7e1c452612d8ff046a56e18129538bcc201608 GIT binary patch literal 1610 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 M@>gD7QS$Zw0oUDn#Q*>R literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_4_4.png b/resources/g2/track/wooden/medium_half_loop_left_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2ea09feec51d469884af1022f0c814472476f5 GIT binary patch literal 1986 zcmX9;aZu9t8~%VOs2PeGDHRqKGjdpDG^xiO9i=sE)U43xH+8PQKX$u&-uJ!tpZB@vp7(wCWo5F%LSjMy z0AcBAsq6hU!5;!lfIt6S*`5SI0LWUGv&P>d5C|j^84wVFLZJc!1A~Hs&}cLUg9#1} z#*;`S8jZ?gF(HT}6!N7~iBhT5YV~Hb#cuC)yS+XijS83yz~zMU`H^BVQ6{IVY8hG` z*Ju`4ZBmD`c5ukRqM&(trqJtM*18C*h7VV0(epl!*&t?T)zr5T7tzY2n02mY+x|jxZF;W$fZyW>-DhB zMxaHKn0P9e$Pkd(5(-a26RH_f9ZPBAXsnRIA+WebL^^@WCNUriM@Z*OSP~Uir5ETe z5{pw|cWay;5G;4#;XWU5{s*$$T4A;^fs1N)2AM9d6@NB87B0}CzMi((zG6<>_3UxA>xwh7(*E=ni!QNi4 z*9!xJ1dz38ni0#g5+DafG{{m7@eLlC)vNCHnLU%PF*uZh#nSP3HjxBTs6qxq%HgU6 z{$X-+t)|mxcH5o4K_(Dz&{7Di5D?X3icZcnsUWLP)M-+~MfFU%1{ot}-xfC`TV7H4)1`-<3FoA^)+*|-d0G8n4S{iKN!WJ>?P{D2k_}6$k z;IIIXixvy<3K>PCW*ZGct5xZAnmisS?B^ng08JjsRO7h@qQF9yxEX3M-{g~7$Fz<~ z%OLFXk|P0~h-Oot!sMpe?OS|-iJqS-jqUM|JMBf$b9tRTZW8f;<0PL6;1 z>G7eX|K7m1^_dVz{^M~m0H~7m)RdgOJx#o~jmHzhKLox@do}>?%84aDQHG~u5T>)_ z&H2v6Y@g6nVx;vxr734m#dcol&j&DZmoX ztb|s`TVC5%9GcNNUfQk=xG`li`?l=J-IL>IV?0H#_4CKEtD`QjtfZbHOgK?v2j8Ch zY**|09ilwJUi~lFr?VBDg6_a%TuY3?*`J9@Xg*l=S!#ZTXU@ausM6l3xJ!8#BidG` zW<*nRmwwT6e$zEwWYO)^xEn95Gx{nK6&r&(x>Jx0Z`Huasg4Ppsb!sKMe0#dZ~!kS z9Gu+0*z?bl{Q8!?(b>Q6NMHK#4f(@7#HI3ONP2f#0`7WmH{;ijl5Roi+KA#BG4$f= zYgvi8OG84dGQdXMzSR}EDSh)1GpO6w_h3L*LWC%{eb;8hF;-2{T5?2H(^qOx6I!yM z=}yhx6Xlfwe^0$h9dM$NA7&-BqLxQiW!Ffm7B%%<+>}bqL$1qSGM;;rpmvfQDjHCPwi%GtZS#iv1LOC)PAz+7+ZuwQMk6<63{M{^<6U?@Fjx12c7>Mp+Xzvb1uM9>nqbv7l8 zy5xRvgW+jN-FM9`Ld&^)Ub(Swjpl7>-=f8jUp(D@t#N%H_dfBcVdwFnqIHuc*EULq zTU&j(?MwRG^DRZ3+y_zrNa~l}TOdJSCG~%Y{tz&9dD4&>gP*!|n#+9Iq0&U*@b6QE z?h{A4$Q7Ns;#lul9|7~K`mb-=OIlvnji+9?@xFYFyeh4yZ?o=sdPrZ+gHg{HW5g$! z=-eGa$&Sj9@`<)j&o6Ni+8*y=qi0k!q48n&FL~EC`G9oW|A;{Pn#|O*s|$AjAJ#~H Aga7~l literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_left_4_5.png b/resources/g2/track/wooden/medium_half_loop_left_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..11756d0a2778d6fa34909b89ba4c9158d6388a07 GIT binary patch literal 1196 zcmX9-eP|PR7=CL%t{>WrM#wOXIOBF=l>Bkq&U&(Qy-Fr}pP$inqgo}LKvTf6T^^6w z@3#el&PbGsC%9C`o6SiDEm|roj01C1T_S4SoahK?DhX_HYqy!UAv#~6%6uheLvyoP(%TDnQRv`PW*#g)umu5^F*0d!WpGc97BzRYBq@fRM^l``ERfcK%Mo=`DS^pK zycQOUajBdR8@YH*OQUk$WF~Qkn;?BO6X5x%AS42TOf;HHCN)(p&CD2vfxs#P9><83 ziOE{|g2Pv0B4v+K31kgE&x|L5Wx&m0e!&t7IAXFZr3l$Yw^NUwSsNjPxt7Fjn{7(A4W#b6)x{Rb?c3dSNx~fe0Q$qHa_xmJ%c(hl1{Q>&3X6)UzmOOU9X`yq4^!0^N znEz@Y&RoB}?9x!Sr+wwWH*WL2i_8nb!ug~XmpMO5@Ki==p z(N#6loXpvo0DzpT%Ca?yi6m-KdP<^ykKU>WAO);iSzDf1lai8>lao_YQl?FtmYSNH zmX^k1vC`AiGcq!`0)YTQ#5j(Tq>Q2z8VzkQ7%Uc>%jNd@21B7(JdTI~CIN&jOQGPX z)qJf^Y&1zMR>I*@db}Ecz!Z+yaS=-{$)aUky`0ZbLYoG;WWc=^x!*;H`i#+#eLUuq z@_0GWmV;(_P3)k96Zi9AR1D)vILSch697N}pk%RVHe1i*F+!nTBDq8meJWK@ zuOGG9px4VoI0B3-CioJiP)dvBdW2#m8Y^ya%FG_p?pL})Dn7~+O9c{AB%@FTjnhWL zXj9tUv^${ph0KAdBRuY9V}L^ft_tvVK*+FA8&~QQD!dpSkek99dyMhHON59+p**cr zWRgo96zVN@oL z>0BmrpTiaM1>#{0C}k`S$<{0Rj9O&XVNN6Iv8wu<`k>bu4f^8oQHTK`2S5V=1Ar5N zJ^&&t022^6)M=p84nsjg2xtVDG2oVh5CI?wAkBp)1lkGcRztrLhV0;_@hFhtKu)mK z6j!emnHj0WPI)|rK)@M|24F&qrvivB3uCy1ov(BY>5znpDV%YwXWZhSbcbOuCgcE= z&ytGS3XHEN5uHlL=+$CWCGOLjb~r7siC#D|iN-H4;IsmRD%} zeq5m-)oMzoqY<$I6%OBXariKK| z{vO%}K=SOWvgNgvM^BwnU+J8ieW?DYPbR~+(sM1P>l?P~ZnVGo?Ec0E#Y8lMT69~4g% z6&FlR-#Tx9@A?g&?V$1mPi-?s>iGRs@Mm|%{Nc2ld0Q$vPQNo}Z1u4Rb9d)|UDUMf zB*VIW<>2+y-D9rG*nGJt<>|^EUwildNBflLpKV&< zJNe=6ZQB;i+^4uob#9*3rL@lB6^zUuey@D#{e}4QGsTPc`1_Fs`>XJw&M!|49#K6ZOB{Ig;B^+x+&0C1b~VT@|g_@e3`( zCFg!jCcawig?OuDK?*PbBj%r>M!EF#SVwVhRCCYHX`Fp%@8dh~-tWI$DU LO<7mzri1?j|9ouc literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_1_2.png b/resources/g2/track/wooden/medium_half_loop_right_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6524bc8e42f86d3452d15a1e05b0417e1de557f8 GIT binary patch literal 1450 zcmXAoad3-w7{`CwYFaHhil`vH2C;<(@41)Dc&l$Uc)PxMO;k$E+cqp*wx;AP^u1f0 z=%u_W$XrIWIn7x{OwWRJOEt9JV%~L~2Dx4C7Hx)YSp^-Xzs0%xJkN8_KhO7%@As)+ zQ>GX@X6hIKz}QtQi`OM5lB~rUsmZRnIzJ3RDp*sxenoN}HEL8!N=j;KYFb*_=+UFo z)6;o8UPeYnW@e^9EEXe(4978wB4}Er*Xv9slg;Mvc)Wo?Z#W!JBoGavIP^%X3HRHSL60unWsZfNL-Bw@ z2-H$wzyM3}TsofL!VkG}5%VgN`0)I6S!&u4@}Rw8lA<*g*yrO|{K z=83}r{eB^mBgO+_4x3lUhOzK#W-!DlhGcHqITOm^uZvm zQc+qhZ8Yi-nF*EIFvN``enQquN@GefREr=Zfp!FXF~||g@T2px2H*Zb?Yc4w6b{_0 z1|VhQs^aDASJt06x%Rp{FZ;met*apo*2`Qy;@YI;Tc zfB!09%+4!$=2J|v9y4_;J1`==d7IFz8*iQP?Ufe$(gQCix7OXgxGkSB+s@SWtb69V zlDA#3ui|9O_$|+Ur$=_r>bRBvGm)q%E2(asJE`-~mzQqOtNgWbaJahT@*FgapbqEl z!9PLP&a~`MO(sTqXJi%@k=ad|ZHG%AVarFxcE9%QC_gT5zpUsvGd`oC8TJ%!t=avu z{Ail(l=0Q~X^;0;_TBw)*ELt9vC6lo|&u^-J*!x}G++4k7@015BqhYp~ayFpf468g zzc#L%QRR{~?Alg4U--&fF)%Ikep9D^(E_}TDJ#v*z0mRd3+c1Qx>JNU-o&1j4_6Fy zwqO3|*n1jwd%==D51BJl7v8bES}Ro<%@q%rLv80Gt7QzUcF5+fb^gV*wFIBG9yDIt zsXX?uYTkvTi`a2+T0vgmQ}4j0NlU)&pOB9)lLcR5TRvaYAIo2uEh%^*`g@#g+w|gV RqGaH}sug9$7mK!j@jtgNj}ZU> literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_1_3.png b/resources/g2/track/wooden/medium_half_loop_right_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e09e5c99927e6f27b5265d7e51157ab123bfbd37 GIT binary patch literal 1688 zcmXAoe_Yac9>+flfufGPNIBy=DsyCCmD+duZE=e!8W~O0uZt%0aI(j!utOu`VYHz! zWy$s+=MTDgBo*uEq(wJexL7geIy$`_Gj7q2Ix^2#>SRjJwASa?V~@w{{eC^(|GZy+ zydKYEWu^QS%1R0VAf;q`QAN!2VzV=W5Zg}4P`0zOICjRx#l^?R69@z%k+^Kx zG7^bICX*8q5)u;==@}UrD9YyXxHvA5O2ta0LaWspjb^*u>GAl3!ALZUvH_O^gn}fo zm?oDqRcf|Q&oP>WR=dRIR*v}ep>YcjA&WRk3ISasVj83@vl4Y^d2XX<#I6W>b>X08 zA>!dPfCK?5E->I^tAgy-Qv+67bc6xJY#5cmCk6;T82|_YkdVm=DpkW^7+5R|hvN_m zy)s!qqnR?Bq1(+sX&GEPTgc={SbPN{(x6fUM`_||ZGui0ZW)m{gEA(@VDmFLI3kc@ zVg*m36Y9(ovs2;pX*|JBU)UO2a8tQ}h6B0`Fx7x%AY*1a-_8=dxeA|1A5vN(1`l)y z5twIPRg+Fcu<0F&USq!g0M+YEr4}dcE6h z_Bov)zdsU*K)_G{mXVBFsXP}0A3LjseYP-JEYqbYGzG#RGBm%M$r)nfjgB&rbxi%f{GReF)O~7pm2RzZ}6yyRR z0ze6X0RS5SUI50)0LCQbLA4UvEHD@lvVZ~wom}ALgP;&V96$vf>QQJBLZ=*#=wQ$S zel8vZ0v-?v$#N-Oqe40je5*z3a%p`&TR7~4u`GrRpz0*9fiAQ#B~F$i$T393wy4Ur zU>tek48cHzMFSX<%x6=@T&5gH)iQxWBe!&FT((Z1#}*EHU^IjY1ked!5I`8~LKlns zMGURlG(L`*jK4@ZGQty!ak*ToRx41p7GoQ^sEvoZ1#G_%35znIgb6h)XhNZr3w<#N z0G5+9`!fRvD@t+j%7fc)$H3TDQdCg6yR}uwQ zsW49>@=YZFb7Ql=f1&W83q}`jyu^2tnoi32gD@?1?)R*@YuQ}lsrA;sm3`LpX_x)X z+Tl5?d~Bdso@TPm}< zTW@gY%Hw;uV-e(R&+!*DQeOEE$AL|+uKw$t6RS#_$ooiLl8ZTm>JJ`2sN;S9l5HsI zQ7vij+wowXlA59S{zo8`r zZkIi`&V9OQEIIdV;zWMg+4}$3cHA9k8O}w!&h!}Tj#9GAutQb7>BB!zwvhLiBi@p) z30eHMl^nk^|7Oe0cXp`bTV|Ihuiti{qPu^&^E#nF_*!ee^spnq;T2qS#5EoXw0lnO zB7MK+;^}_XUS}We%=r&@wZ2h0+IF9)G^Z5@hvM$`QJ!nkuHEv#_xff$>nqU0d-*vt zU5L&iagx^cn^s>hrSJaHpE!4~Dji)xG7FTC_hTi(Af3}v9_UpnTLVJm(X?AJF z3I6F#o3(W_m*#5=+36P?E!Bsr`_4IXt2eb(w1uu5&BRvy_TZf+&HjSs;VbEEXT!Tn zwEp|Wjth9wj%vfxw7mMi)T*<4*QD;d{(Lv(>6aZfhesDu)|z{^B40n-Cfb8vcWL5i>>38;HJ^dfuj=peb zupl>hDCg>hriqTqUeVg&!s$^Pn+n^lYO%8^EFrR ze~HfTSG>A3RGc~MEiF@D&3a4pC+rsgxOeQtw0!S;&#e_-xx=%hKe)p!mr%*pp%d5M z9Xta47k4$>$39jJ?ao?rx31j~{;}=B>YYED8n9<@!W`|SdrSNOD=PkpkUY?xxBZKH RT?{W!Qe0Yev9RXo{{i|j0I&c6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_1_4.png b/resources/g2/track/wooden/medium_half_loop_right_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..02a40254afddcf95b16959b827db874c58387fb3 GIT binary patch literal 1863 zcmX9;e^k=<8vghb$&5N&qr%3z+{B`WT}&!UG&J&}Vt!qCE+rP-(8zHN4U=OeG||Yo zhDKK^R7`5D&@6FLF^A1Io3wCJqeX>E_CqW(E8D)8ot^W%?|a^V-simMd7rm7JBtxD zYtbwKKveqX)SN&i2Z9?B63F|~QELGR0ofV3X@NEzb`vT-UNK_?=2$>~-Nd%z@g^((wC{j|@?Of|Epr=y1Sgd|N-zk+o z*XdxZ6-!3rX&4d01W!CfpOnn%Hk z8AK(UYT(f=BFHZ1IW;1WQSP&9rtL=9V?&`S1R|SE;nV112vYKRTCv!qR9ba9yV>k^ zID9@I46s5#&>+YL6y1V_28et&UE$&Ay<&?`$Lg(&tVz>Yyd<6 zr~ohm&<}tI0pI{wbXX#Sje6MSWD$Un4AeAWW&jrpzz~3i7+6V$^(@#dfCm(?OAr1O zo&uP3z-A!?Jd9LKRI3;UJL`qJADK+px_V;5{g5^2_UkB&s0eTdbQMIRNHMvugeDe-4rGhHUroNU^t+KB0%>S zuyTpk?Cx4UI;9>Td!GNaQ8_tzESzKg7@qx777{laKQEyccQD5*t-AKO^tai@)o?g)PkAgo= zo@u^T)ZSHXtNU%`=m`G4Yv}Q3DGAT!&z(q)SQPz>C_nzpd1n6BCd$f+!3Y0i4lh7` zue^GvcJ1EO@A!2+os?alA*(Y}=;_6`Z$^#NG%>tk!4`*T*6 zEh$Ufd3XD#OD<-1zkpWNY=0XxB!AIkBifh)MP|3)`YQQ3+|oPWEj{-hYudE%uf z`+(*1$_{&J*`n&E*Z8!llnu=qRh1M}()4T7)w%mK#2(v2 z?UFr7&DM|fPj>glEx5DktA51yH4IMi$sSvHgP~_l;R0gCy@nH<{q6;f}@(Yx7JBAwOuOFBBGnE^+e7)jXO>4B{#L&+-qivW+ zWum^zMSAGa<9;k(^yJ>y0d(2NmN=8EZ&!l-oHljK!l)y$`Q>$qA8XEa-CAd9&9KiX z*L!aW{{udW{dmerH>m*0<$HV-I*L zrKZ8Sr23kF4zGu{ydJ)Fj#oM;n}1E9NOY7J-tuR*?a(4m-uU5iW3Ddjbi81uOqSSN z`1fNGS6k|ejwK!$5tocyb&R~s6N^i}YEHV;`QgaB$tc{`d9w>q?(9=@EtAHi`QBXjs%+-e oPsH2PaM!clqxK&5l)4Je_*>C3%ACfwz&8NtX<4ZkHx|hL4`6L&egFUf literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_1_5.png b/resources/g2/track/wooden/medium_half_loop_right_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1d3e81687df05f1aec01d8d4b0444d50c1ba6b GIT binary patch literal 12457 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 I&t3lbe+;p-UH||9 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_2_3.png b/resources/g2/track/wooden/medium_half_loop_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fbfcce509509b205050b61bd0409887bec9e3ad8 GIT binary patch literal 1520 zcmXAoe{@oH7{&7n<=wn?sOW?n z$Ee7zwI&rN9m!$cqvWRHq(X;tCKees)Vn05jdj{YBO^8YMyGQ=@B5zjpZEFWdEPgc zRO`o$nLGvnFmB;fmCN!|l`nH?QNAC%U$6jB1ePp%W zY7~MXrKP2#M~{{(l}a2}>vRM~85oA0cnuXw9H~b ztv0pOrFDBqf4~$9bJ3V9neyo{#Hf|92D#mc@{G#M;hhd$*lmmkSh3fc7Ja!)M6UoQ z3|I-kQ;45M!Y*mTFUv+1Fs+7J6THPk7*PU10$@TARw}hC6ue61(`q|Ove#@**zLc0 zy)YbB;4&p4SCgpLq|&pP(T+2`mh*gmNSq}Q~sDO;A-vl z2gFD$nWw9_e z8;h$Q8nv6i1sxtXsN*D-HY%YBg?1J6;4nzQm?0m2&2-7N|9)WevT6!EF?g;HfWlo1 zE9XD+?AC2N&g>BG9lPKLB!%`Gt$j-Ksne0ETlOwKd-Y+}~hY{z?36Y~e>qJNFwdP%qQTqC07O1itJAAjTM%te9m z%B2_0WvPzs^CuL|KZ1H_TtnQIo>lzf&4a(RT&h_9*_$U$Hv7gt_GI(lyJV7I@9S7k z#8zycsPw*Fw!Lph$<5g)*Nrv}cQx&~_(d3H8em6PUf4$ZR@lUGR2S|0H= zi}m+a|5%7jzp=7BcKGb>MEu}`1CMU3cs2FMo&6gIjkDjo)^c&uDNBtyx}twWj9oq? z7<)y!V%s|-BR|x>6%4khR&`#!J?G*=`lf&97b}(yPsHd8tzZ0Pz3?%8=7*|7BiG8F ztDY_|d-nVIq?fpHww3$a*PG7Yh0HE_sQd`?rm(5^+d=)vl!i|?FS~LqzP9X4_lAMW z(yvw_&I#Au5zA^`5mjzj-E(5ey4!t+>S{iEWt?^S{`hOuk*9}e9G|mu*+#2NJqs}{ zcGR8Q2QiV^yS94WDOKO$MrQ?m=)_jn-Zt7+TZ3I6`@YD0w!KaA!0G4DO|0n(t!u;A qT$y1`P3yVac3{aLiZ#3YiMI}^|13Gtm(Ir)EL>1sx&O&EE&l>O7QHV3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_2_4.png b/resources/g2/track/wooden/medium_half_loop_right_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..64f4b21108a6db1342687394bc95648133e1bcd3 GIT binary patch literal 1920 zcmX9Wp7XIZID&x=&85R}CF=LFBwYQ>;skcNUC8d1r;KWW$y=^#>zPUI{BioWO z#Y{A^Wg8h96}i-);p7K9l2L~oPtk}U86_o&uJkpL0~3|&yh~@!dG5XEIp?1H{PEm- z?l+qXxC!xd;{gB(xf`+z!}a5E6vak{^OJ+;WdKBiO&g1H!gR)r84(c?k&%&6QBl#+ z(J?VG1Og#8Ha0FUj*^m+0zpg;2SyMciVCGtOsQ0AwR*GJVz&>v-TpuTVgi^A_&lOe zNR~)wGC5PFW@~kPqgiCNNgYnLXUxE15Cm)@#-k_%G!07EOQBXJ$EFoH%$U1J<#QWC zemj>6L<}He5QbOiI5^8*-ZPF*}LOqB8^#OAK>l2%<(&olIs{t8IF{ z(_--q4*LCm98fVp*AgHjiDRWA4u;snQH===KAF|884Q?xQ?3wBWROTK3WZBcK^RPw z&6e``Dp7ct+^nwcF`C_WXTSpk5sx56ND2{6BVp*|ut|kjb>beA!e!I>T=qcV84d#= z06+?W1^^QPJpham03HUPgUhA3$$-0Ed^*4&PzwVK7r6NVM*xmda5aP*__#%aJ5;#a z0NxqT0z3{7@Cg!>qL49aHC&?swOW-*p3+q4Z3}bHdhU=qo&I%a^_$VI zeGfca0^+>4M<&gSsMRAKIaU5pPy0kheINS}%<=5sw#eVmwQuo+cTU$*1w?B+{^;Yl zN#?56$tORlddzuJcI@&QT7J2{zv}6hd`Tmvzc0UBar$P`>Y(IOLf@G2!RVKz56MSL zYv8O`V~;|X2N`R~ze&VR567EEFXS#so~PmU_tyXINW(qigQe)J;i<-Pm1524omukR zzM<{G_{rpZf6%v_%4|3nmloQeanzeyjJT5wosXkCoAO@_KkR!}_vl|2-S_&so6fyY zu=>8M-6j_Oysr1~jv{X}CzokYN?4n+I`^?*ZCSti&WrpTn=g%jluTdt3%Zy3?ZAr< zY&R1#cQqx*`iY5jZ`v2Us}~cYGaGy5si&I{WIS;WtjtEYGJ!io8P)?yu#j+x5e6NDt-Td#S;*b#Q;DYAIH`F~!HkN0gGt81J!_wQMcUN5=6*iqataQXeS zmVey3D|_NSK6llRl}j(rzMq!$Kk};6N2;T|kJk-m+1e-O|NDO0Q>gNX<+JF)@A4hP zS7Qoy%sH5aRuq;T7Ve(N+f{uDpy}kG9`9&kwC$F{raCh;qUHeHV z?5FOSBg4&ys&C4-l$I5`s#>qF{JCW2VctMZ!h+nV5gpwh-H^XN!0I|qT^3mI`pVFf zSMkkP2rK+snpM&_b${;mPHb$BKF`!QZr>$3y@2VU}v*Z=?k literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_2_5.png b/resources/g2/track/wooden/medium_half_loop_right_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..175d009513a92b91d6f33c9709cdb2d0b6bff6dd GIT binary patch literal 1221 zcmXAoZ)_8F7{`BI*=}Plhbh{*#@w)mOK7ygLk@By2i!$NJ)s1Bz+nhR0H{ zhMN{Fq`Qe)$)>98gjt-44v3U;$d6Dv7n3B?>zXEPhJU?Yba$w+>dkbIwiZ=Uaq z&-0wxy2aD6uxlXzpkvd<-ffNgY9n55wKnqP<3}O@RgQBjoaONsm^lDaM6(sdkCAD_%?$@uW^rw1niNXgO^&OAc6bLsNkBDue|m02}}Uf=DQ;I26>`E$QB9MNZY#0vzL9Hj#7$J+7#iN{dWR z=Jl{xj>}aoT+henbPZMusEx#3UV`+~OpxcJqL>H1nbfn{%G6Z7UWdRT0X&Wn zX_U!1_>#+CVIoyusus-E)hRPmn=jA7b{C40cDo02@-DYXQ8LR#gvPQ^CK@ZIGe$u- zD>M*TMCMUNz|?>%5u&vSpG)|Qno`auYUP4y&O#ahF90$CDgYV)MF6S@fDLgB49QSS zL8Hv!Kq5el23ZdhKavozG%#_^M{wEz3$2M%xB!h^Mc-`?No3&|XU%0{`GJLZnvb6zvUH3d9vT{6K0;mk>BQOL$lAWyBm0qqpWRzk zw|sR(8n`{+iB3EaKN?tV@>XJV=NImGEGs&`p6$zpJ-_->Dat&77ETdkgywpIDLaq0d}De(OK-(Q6yqRvqf^-xEBz z^y-h(#LaatogmV_7t8y4C+C+_wWwB623p4K-G@e^ z-;J369KN!6aDD3c%MW%={Jg(w$I@ljjGgbNe;B^7X#2Q+|IUr^VRYBg8~3btZVc>x zI1awNYQ1uS+SN1dDb1cex_++MU$oAkUFYE>&wS79{gueQzSq`%d3490c#k;KIX|Nv eDq`4U%Z6hk$>-l>I~y#(rVU$qzgfTg!~X$=(ivv} literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_3_1.png b/resources/g2/track/wooden/medium_half_loop_right_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f367259a7672187c9460ec4933d19330f3be8b4 GIT binary patch literal 1173 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 OOi#^De)q~-OaB8Z=hmVC literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_3_2_2.png b/resources/g2/track/wooden/medium_half_loop_right_3_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9e53296d4d37bfdae6441adea760a389953288 GIT binary patch literal 1162 zcmX9-Z)_8F7=HKn2HR|<3nesqa}6tcnN^Q?A1?6*SLo)E-QY(0p=yy+8mxH2X)dJ9 zQwo-)(HoRdv5AdT(nysO7jkITs+}8H@q#lc$px!4QW7wQG-M_yKTAlS_s{d?eUkTi z->LC2Z|~BTO97yFbi}i{S%;gkx~r|3_gH&OfHoN4II+G-TUuILTU*=O+S=ROJ32Z# zJ3BE9>+0%SvSf+f>2#8$n`Ie6;6%|c%Tgo~NhDIaoL($0m}b4vAl<;wz;oSxzbzEP zm9RS+qZ3I!lMCbva>k=6tkfrWfl)uLA-E zC=6%$S8YKs+xltp4?q~=Vod7&Q0K+7UMRhndmn%)vGdw>Z43<^(dMbqq z1qW$!GIlqQ(*c)PB77<-YP6hWBUvt<7t*DGZU%A6;r2Rdf#5{SFR@aTkEQ}CUD6G; zXvU3Nrm|SDFklnF9t1oLE)Annc5lw*FEEnfi&f-wT`Qs)p0J6OL-7(ZADt1|yet?I zv7C^r*+{*RSTwSzTC~_G7vUqRAj2wx5EI3uqU2(+LMmnGdSzjuUauo?NZ?9fWX8hg z9YTo+R@i9OpROtSy0*~B)$WuRQ8!_+P!a6YS+3&~o!*l1iw41frjc3Z zT_BMVXF&IY$paDqNp=(?QJP132$iD9Ov63nDd1S}@mNT-s|pdB0%bVskCa@}PE3dg)|i=V+m0vQf+ni@*S)qFN? z6tgw6h#D1&1caJiM4NK=;fREj)hd-t+=pB$v3|c03W?#cM7krCJHe1ymMn1Y z1)iw+oG5@J)rFEI(ivoM&Euzrx^Lb4fj2gf2{3&1()N2~8|U@F!H$PUnmsY57aOS1cYesKhpvS`xT%G%_^N$|uVAt8gkz><(@Ahr8 z>qdePzPQ5LadG!Qw+4<|e;J%oqEGa!e)6$ZGtbQ)Y@f4z|8?rkp@E*yUtjkAikEv= z9J@7r_QUDN&n&}d$Bu6~|JHCTJ+-^ zHG1Z~o9^m6*K$O7eCoGN;kiE_K|RXUzi;pTXyxRI#JQ(F+4Y~YJHPqzAT{?le&gHJ Xjm|yS57-YicL<~F$2_OjZQb`jO$hK* literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_3_3.png b/resources/g2/track/wooden/medium_half_loop_right_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..93aee24e93dfef3f7db3337594d2bcbc5688f264 GIT binary patch literal 10644 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_3_4.png b/resources/g2/track/wooden/medium_half_loop_right_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef117ec503b3ce918f6c61260dd78b0c9ee05f0 GIT binary patch literal 1872 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 I%J#SaA9`x;X#fBK literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_4_2.png b/resources/g2/track/wooden/medium_half_loop_right_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2751708b2d9b35307531870c51d13b0b3d937010 GIT binary patch literal 1696 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 literal 0 HcmV?d00001 diff --git a/resources/g2/track/wooden/medium_half_loop_right_4_5.png b/resources/g2/track/wooden/medium_half_loop_right_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1c53187cfab5a9ed6e3c048070e280a7768156de GIT binary patch literal 1162 zcmX9-Z;aD)7=G_|NAFlJBR8bc1&23a#)ed_v0zDx_Q*JkSD>d0>_blrOkJ>Q(Geyz zI&_|klrYJFkqlX6TuK=6l566C83rE742@iHn0**BWg%!5EN}^z@N1zI3*z@vQpMmOiL@* zQdToxpDDRmaEpM4!5ag=j?q~>Q1FLJtYQU|bv4)0%VeFw-E~v1W*BV00UqOpn(BuL*P(MMMe(Qs)8RB z3Q{bX0jLRpL_i9Tk`&4b$c&&$0@ZTx$aorf4uS#}k#Q|br1U^OCl`xx%QBix3$?jC zVW478R>y^$S2F!djnP{n!;Thb(v?}Wj;bxc8)z>UAYCEW8xg5knAf#PE~OQXlvOsG zwKB5nG|wXwPz?}jdy#0E=NG;2TCsFXfBdb`y9-V$uOAz_^aHu8FTQ@krOq7(XLet{s^9;R9Hi>= z|8d?O-&LpkCmnl@1Bl=L_Is0C_Z_y+j25pSo +static void WoodenRCTrackLeftMediumHalfLoopUp( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 0), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 5), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 40), + { 0, 0, height }, { { 0, 0, height + 44 }, { 32, 20, 2 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 10), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 45), + { 0, 0, height }, { { 0, 6, height + 44 }, { 32, 20, 3 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 15), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 7, height, session.SupportColours); + + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 48); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 1), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 6), + { 0, 0, height }, { { 0, 0, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 41), + { 0, 0, height }, { { 0, 0, height + 70 }, { 32, 20, 2 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 11), + { 0, 0, height }, { { 0, 32, height }, { 40, 0, 64 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 16), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::topLeftSide, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::topCorner), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 72); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 2), + { 0, 0, height }, { { 0, 0, height + 2 }, { 32, 32, 0 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 14, height, session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 7), + { 0, 0, height }, { { 29, 0, height }, { 1, 32, 96 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 16, height, session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 12), + { 0, 0, height }, { { 31, 0, height }, { 1, 32, 96 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 18, height, + session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 17), + { 0, 0, height }, { { 0, 0, height }, { 32, 32, 0 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 14, height, + session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::topLeftSide, PaintSegment::centre, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 144); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 3), + { 0, 0, height }, { { 0, 0, height }, { 0, 32, 160 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 44), + { 0, 0, height }, { { 0, 0, height + 144 }, { 32, 20, 0 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 8), + { 0, 0, height }, { { 0, 0, height + 140 }, { 32, 32, 3 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 13), + { 0, 0, height }, { { 29, 0, height }, { 1, 32, 160 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 18), + { 0, 0, height }, { { 0, 0, height }, { 1, 32, 160 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::bottomCorner, PaintSegment::bottomRightSide, PaintSegment::centre, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 144); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 4), + { 0, 0, height }, { { 0, 2, height + 48 }, { 32, 32, 1 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 9), + { 0, 0, height }, { { 0, 2, height + 48 }, { 32, 32, 1 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 14), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 19), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + } + + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topRightSide, PaintSegment::centre, PaintSegment::bottomLeftSide, + PaintSegment::bottomCorner, PaintSegment::bottomRightSide, PaintSegment::rightCorner), + direction), + 0xFFFF, 0); + + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height + 16, kTunnelGroup, TunnelSubType::Flat); + } + PaintUtilSetGeneralSupportHeight(session, height + 48); + break; + } +} + +template +static void WoodenRCTrackRightMediumHalfLoopUp( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 20), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 25), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 46), + { 0, 0, height }, { { 0, 6, height + 44 }, { 32, 20, 3 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 30), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 42), + { 0, 0, height }, { { 0, 6, height + 44 }, { 32, 20, 3 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 35), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 7, height, session.SupportColours); + + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 48); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 21), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 26), + { 0, 0, height }, { { 0, 32, height }, { 40, 0, 64 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 31), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 43), + { 0, 0, height }, { { 0, 6, height + 70 }, { 32, 20, 2 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 36), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topRightSide, PaintSegment::centre, PaintSegment::bottomLeftSide, + PaintSegment::bottomCorner, PaintSegment::bottomRightSide, PaintSegment::rightCorner), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 72); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 22), + { 0, 0, height }, { { 0, 0, height }, { 32, 32, 0 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 14, height, + session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 27), + { 0, 0, height }, { { 30, 16, height }, { 0, 32, 96 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 18, height, + session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 32), + { 0, 0, height }, { { 29, 0, height }, { 0, 32, 96 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 16, height, session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 37), + { 0, 0, height }, { { 0, 0, height + 2 }, { 32, 32, 0 } }); + MetalBSupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 14, height, session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::bottomCorner, PaintSegment::bottomRightSide, PaintSegment::centre, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 144); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 23), + { 0, 0, height }, { { -12, 0, height }, { 0, 32, 160 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 28), + { 0, 0, height }, { { 29, 16, height }, { 0, 16, 160 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 33), + { 0, 0, height }, { { 30, 0, height }, { 0, 32, 160 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 38), + { 0, 0, height }, { { 0, 0, height }, { 0, 32, 160 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 47), + { 0, 0, height }, { { 0, 0, height + 144 }, { 32, 20, 0 } }); + break; + } + + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 144); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 24), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 29), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 34), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex(SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 39), + { 0, 0, height }, { { 0, 0, height + 48 }, { 32, 32, 1 } }); + break; + } + + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::topLeftSide, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::topCorner), + direction), + 0xFFFF, 0); + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height + 16, kTunnelGroup, TunnelSubType::Flat); + } + PaintUtilSetGeneralSupportHeight(session, height + 48); + break; + } +} + +template +static void WoodenRCTrackLeftMediumHalfLoopDown( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + WoodenRCTrackRightMediumHalfLoopUp( + session, ride, 4 - trackSequence, direction, height, trackElement, supportType); +} + +template +static void WoodenRCTrackRightMediumHalfLoopDown( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + WoodenRCTrackLeftMediumHalfLoopUp( + session, ride, 4 - trackSequence, direction, height, trackElement, supportType); +} + +template +static void WoodenRCTrackLeftLargeHalfLoopUp( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 0)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 7)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 14)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 21)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 5, height, session.SupportColours); + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 1)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 12, height, session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 8)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 9 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 15)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 58)), + { 0, 0, height }, { { 0, 6, height + 64 }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 22)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 72); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 2)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 9)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 0 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 57)), + { 0, 0, height }, { { 0, 0, height + 70 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 16)), + { 0, 0, height }, { { 0, 16, height + 80 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 23)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::topRightSide, PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 88); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 3)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 22, height, session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 10)), + { 0, 0, height }, { { 0, 0, height + 200 }, { 32, 16, 0 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 14, height + 8, + session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 17)), + { 0, 0, height }, { { 0, 16, height + 200 }, { 32, 16, 0 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 0, height + 21, + session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 24)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 22, height, + session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::topRightSide, PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 224); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 4)), + { 0, 0, height }, { { 16, 16, height }, { 16, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 11)), + { 0, 0, height }, { { 0, 16, height + 110 }, { 16, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 18)), + { 0, 0, height }, { { 0, 0, height + 100 }, { 16, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 25)), + { 0, 0, height }, { { 16, 0, height }, { 16, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::bottomLeftSide, + PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 128); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 5)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 56)), + { 0, 0, height }, { { 0, 16, height + 210 }, { 32, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 12)), + { 0, 0, height }, { { 0, 16, height + 200 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 19)), + { 0, 0, height }, { { 0, 0, height + 200 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 26)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 59)), + { 0, 0, height }, { { 0, 0, height + 210 }, { 32, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 224); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 6)), + { 0, 0, height }, { { 0, 16, height + 32 }, { 32, 16, 0 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 13)), + { 0, 0, height }, { { 0, 16, height + 32 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 20)), + { 0, 0, height }, { { 0, 0, height + 32 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 27)), + { 0, 0, height }, { { 0, 0, height + 32 }, { 32, 16, 0 } }); + break; + } + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 40); + break; + } +} + +template +static void WoodenRCTrackRightLargeHalfLoopUp( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 28)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 35)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 42)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 49)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + break; + } + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 5, height, session.SupportColours); + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 29)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 36)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 61)), + { 0, 0, height }, { { 0, 6, height + 64 }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 43)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 9 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 50)), + { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 12, height, session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 72); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 30)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 37)), + { 0, 0, height }, { { 0, 16, height + 80 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 44)), + { 0, 0, height }, { { 0, 0, height + 0 }, { 32, 16, 0 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 62)), + { 0, 0, height }, { { 0, 0, height + 70 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 51)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 88); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 31)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 22, height, + session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 38)), + { 0, 0, height }, { { 0, 16, height + 200 }, { 32, 16, 0 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 0, height + 21, + session.SupportColours); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 45)), + { 0, 0, height }, { { 0, 0, height + 200 }, { 32, 16, 0 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 14, height + 8, + session.SupportColours); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 52)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + MetalASupportsPaintSetup( + session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 22, height, session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 224); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 32)), + { 0, 0, height }, { { 16, 0, height }, { 16, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 39)), + { 0, 0, height }, { { 0, 0, height + 100 }, { 16, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 46)), + { 0, 0, height }, { { 0, 16, height + 110 }, { 16, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 53)), + { 0, 0, height }, { { 16, 16, height }, { 16, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 128); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 33)), + { 0, 0, height }, { { 0, 0, height }, { 32, 16, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 60)), + { 0, 0, height }, { { 0, 0, height + 210 }, { 32, 16, 3 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 40)), + { 0, 0, height }, { { 0, 0, height + 200 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 47)), + { 0, 0, height }, { { 0, 16, height + 200 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 54)), + { 0, 0, height }, { { 0, 16, height }, { 32, 16, 3 } }); + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 63)), + { 0, 0, height }, { { 0, 16, height + 210 }, { 32, 16, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::topRightSide, PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 224); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 34)), + { 0, 0, height }, { { 0, 0, height + 32 }, { 32, 16, 0 } }); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 41)), + { 0, 0, height }, { { 0, 0, height + 32 }, { 32, 16, 0 } }); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 48)), + { 0, 0, height }, { { 0, 16, height + 32 }, { 32, 16, 0 } }); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 55)), + { 0, 0, height }, { { 0, 16, height + 32 }, { 32, 16, 0 } }); + break; + } + if (direction == 0 || direction == 3) + { + PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::topRightSide, PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 40); + break; + } +} + +template +static void WoodenRCTrackLeftLargeHalfLoopDown( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + WoodenRCTrackRightLargeHalfLoopUp( + session, ride, 6 - trackSequence, direction, height, trackElement, supportType); +} + +template +static void WoodenRCTrackRightLargeHalfLoopDown( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + WoodenRCTrackLeftLargeHalfLoopUp(session, ride, 6 - trackSequence, direction, height, trackElement, supportType); +} + template TRACK_PAINT_FUNCTION GetTrackPaintFunctionWoodenAndClassicWoodenRC(OpenRCT2::TrackElemType trackType) { switch (trackType) @@ -16915,6 +17926,22 @@ template TRACK_PAINT_FUNCTION GetTrackPaintFunctionWoodenAndClas return WoodenRCTrackDiagBrakes; case TrackElemType::DiagBlockBrakes: return WoodenRCTrackDiagBlockBrakes; + case TrackElemType::LeftMediumHalfLoopUp: + return WoodenRCTrackLeftMediumHalfLoopUp; + case TrackElemType::RightMediumHalfLoopUp: + return WoodenRCTrackRightMediumHalfLoopUp; + case TrackElemType::LeftMediumHalfLoopDown: + return WoodenRCTrackLeftMediumHalfLoopDown; + case TrackElemType::RightMediumHalfLoopDown: + return WoodenRCTrackRightMediumHalfLoopDown; + case TrackElemType::LeftLargeHalfLoopUp: + return WoodenRCTrackLeftLargeHalfLoopUp; + case TrackElemType::RightLargeHalfLoopUp: + return WoodenRCTrackRightLargeHalfLoopUp; + case TrackElemType::LeftLargeHalfLoopDown: + return WoodenRCTrackLeftLargeHalfLoopDown; + case TrackElemType::RightLargeHalfLoopDown: + return WoodenRCTrackRightLargeHalfLoopDown; default: return nullptr; } diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp index 46a1a002f3..3b99aa1d06 100644 --- a/src/openrct2/park/Legacy.cpp +++ b/src/openrct2/park/Legacy.cpp @@ -2404,6 +2404,25 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType break; } } + else if ( + (rideType == RIDE_TYPE_WOODEN_ROLLER_COASTER || rideType == RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER) + && parkFileVersion < kWoodenRollerCoasterMediumLargeHalfLoopsVersion) + { + switch (trackType) + { + case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::RightLargeHalfLoopDown: + return true; + default: + break; + } + } return false; } diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h index 03c8b36187..d6be3f4944 100644 --- a/src/openrct2/park/ParkFile.h +++ b/src/openrct2/park/ParkFile.h @@ -11,7 +11,7 @@ namespace OpenRCT2 struct GameState_t; // Current version that is saved. - constexpr uint32_t PARK_FILE_CURRENT_VERSION = 40; + constexpr uint32_t PARK_FILE_CURRENT_VERSION = 41; // The minimum version that is forwards compatible with the current version. constexpr uint32_t PARK_FILE_MIN_VERSION = 40; @@ -31,6 +31,7 @@ namespace OpenRCT2 constexpr uint16_t kWoodenFlatToSteepVersion = 37; constexpr uint16_t k16BitParkHistoryVersion = 38; constexpr uint16_t kPeepNamesObjectsVersion = 39; + constexpr uint16_t kWoodenRollerCoasterMediumLargeHalfLoopsVersion = 41; } // namespace OpenRCT2 class ParkFileExporter diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h index e4987dd487..fab16a757a 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h @@ -22,7 +22,7 @@ constexpr RideTypeDescriptor ClassicWoodenRollerCoasterRTD = .TrackPaintFunctions = TrackDrawerDescriptor({ .Drawer = GetTrackPaintFunctionClassicWoodenRC, .supportType = WoodenSupportType::Truss, - .enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::waterSplash, TrackGroup::blockBrakes, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeSteepLong}, + .enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::waterSplash, TrackGroup::blockBrakes, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeSteepLong, TrackGroup::halfLoopMedium, TrackGroup::halfLoopLarge}, .extraTrackGroups = {}, }), .InvertedTrackPaintFunctions = {}, diff --git a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h index 5a92f1371e..5cf58d8ffe 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h @@ -22,7 +22,7 @@ constexpr RideTypeDescriptor WoodenRollerCoasterRTD = .TrackPaintFunctions = TrackDrawerDescriptor({ .Drawer = GetTrackPaintFunctionWoodenRC, .supportType = WoodenSupportType::Truss, - .enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::waterSplash, TrackGroup::slopeCurveBanked, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeSteepLong}, + .enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::waterSplash, TrackGroup::slopeCurveBanked, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeSteepLong, TrackGroup::halfLoopMedium, TrackGroup::halfLoopLarge}, .extraTrackGroups = {TrackGroup::booster}, }), .InvertedTrackPaintFunctions = {}, diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index e11a9d154f..16c4b0b237 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1306,7 +1306,9 @@ enum : ImageIndex SPR_G2_WOODEN_RC_FLAT_TO_STEEP_RAILS = SPR_G2_WOODEN_RC_FLAT_TO_STEEP + 32, SPR_G2_WOODEN_RC_FLAT_TO_STEEP_FRONT = SPR_G2_WOODEN_RC_FLAT_TO_STEEP_RAILS + 32, SPR_G2_WOODEN_RC_FLAT_TO_STEEP_FRONT_RAILS = SPR_G2_WOODEN_RC_FLAT_TO_STEEP_FRONT + 16, - SPR_G2_WOODEN_RC_END = SPR_G2_WOODEN_RC_FLAT_TO_STEEP_FRONT_RAILS + 16, + SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP = SPR_G2_WOODEN_RC_FLAT_TO_STEEP_FRONT_RAILS + 16, + SPR_G2_WOODEN_RC_LARGE_HALF_LOOP = SPR_G2_WOODEN_RC_MEDIUM_HALF_LOOP + 48, + SPR_G2_WOODEN_RC_END = SPR_G2_WOODEN_RC_LARGE_HALF_LOOP + 64, SPR_G2_BM_INVERT_RC_BEGIN = SPR_G2_WOODEN_RC_END, SPR_G2_BM_INVERT_BOOSTER_1 = SPR_G2_BM_INVERT_RC_BEGIN,