diff --git a/CMakeLists.txt b/CMakeLists.txt
index ea3731916c..4f1d03669d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -406,7 +406,7 @@ else (WIN32)
endif (NOT DISABLE_RCT2)
add_custom_command(
OUTPUT g2.dat
- COMMAND ./openrct2 sprite build ${CMAKE_BINARY_DIR}/g2.dat ${CMAKE_CURRENT_SOURCE_DIR}/resources/g2/
+ COMMAND ./openrct2 sprite build ${CMAKE_BINARY_DIR}/g2.dat ${CMAKE_CURRENT_SOURCE_DIR}/resources/g2/sprites.json
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
add_custom_target(g2 DEPENDS ${PROJECT} g2.dat)
diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj
index c95cfabaf2..82fb2485eb 100644
--- a/OpenRCT2.xcodeproj/project.pbxproj
+++ b/OpenRCT2.xcodeproj/project.pbxproj
@@ -2504,7 +2504,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\" sprite build \"${SRCROOT}/data/g2.dat\" \"${SRCROOT}/resources/g2/\"";
+ shellScript = "\"${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\" sprite build \"${SRCROOT}/data/g2.dat\" \"${SRCROOT}/resources/g2/sprites.json\"";
};
D4CA88671D4E962100060C11 /* Get Git Variables */ = {
isa = PBXShellScriptBuildPhase;
diff --git a/openrct2.proj b/openrct2.proj
index fa6652969b..f9abece593 100644
--- a/openrct2.proj
+++ b/openrct2.proj
@@ -199,7 +199,7 @@
-
diff --git a/resources/g2/29.png b/resources/g2/icons/29.png
similarity index 100%
rename from resources/g2/29.png
rename to resources/g2/icons/29.png
diff --git a/resources/g2/30.png b/resources/g2/icons/30.png
similarity index 100%
rename from resources/g2/30.png
rename to resources/g2/icons/30.png
diff --git a/resources/g2/31.png b/resources/g2/icons/31.png
similarity index 100%
rename from resources/g2/31.png
rename to resources/g2/icons/31.png
diff --git a/resources/g2/32.png b/resources/g2/icons/32.png
similarity index 100%
rename from resources/g2/32.png
rename to resources/g2/icons/32.png
diff --git a/resources/g2/58.png b/resources/g2/icons/58.png
similarity index 100%
rename from resources/g2/58.png
rename to resources/g2/icons/58.png
diff --git a/resources/g2/33.png b/resources/g2/icons/cheats.png
similarity index 100%
rename from resources/g2/33.png
rename to resources/g2/icons/cheats.png
diff --git a/resources/g2/78.png b/resources/g2/icons/copy.png
similarity index 100%
rename from resources/g2/78.png
rename to resources/g2/icons/copy.png
diff --git a/resources/g2/2.png b/resources/g2/icons/fast_forward.png
similarity index 100%
rename from resources/g2/2.png
rename to resources/g2/icons/fast_forward.png
diff --git a/resources/g2/3.png b/resources/g2/icons/game_speed_indicator.png
similarity index 100%
rename from resources/g2/3.png
rename to resources/g2/icons/game_speed_indicator.png
diff --git a/resources/g2/4.png b/resources/g2/icons/game_speed_indicator_double.png
similarity index 100%
rename from resources/g2/4.png
rename to resources/g2/icons/game_speed_indicator_double.png
diff --git a/resources/g2/14.png b/resources/g2/icons/large_scenery.png
similarity index 100%
rename from resources/g2/14.png
rename to resources/g2/icons/large_scenery.png
diff --git a/resources/g2/6.png b/resources/g2/icons/map_gen_land.png
similarity index 100%
rename from resources/g2/6.png
rename to resources/g2/icons/map_gen_land.png
diff --git a/resources/g2/13.png b/resources/g2/icons/map_gen_noise.png
similarity index 100%
rename from resources/g2/13.png
rename to resources/g2/icons/map_gen_noise.png
diff --git a/resources/g2/12.png b/resources/g2/icons/map_gen_trees.png
similarity index 100%
rename from resources/g2/12.png
rename to resources/g2/icons/map_gen_trees.png
diff --git a/resources/g2/60.png b/resources/g2/icons/multiplayer.png
similarity index 100%
rename from resources/g2/60.png
rename to resources/g2/icons/multiplayer.png
diff --git a/resources/g2/87.png b/resources/g2/icons/mute.png
similarity index 100%
rename from resources/g2/87.png
rename to resources/g2/icons/mute.png
diff --git a/resources/g2/88.png b/resources/g2/icons/mute_pressed.png
similarity index 100%
rename from resources/g2/88.png
rename to resources/g2/icons/mute_pressed.png
diff --git a/resources/g2/79.png b/resources/g2/icons/paste.png
similarity index 100%
rename from resources/g2/79.png
rename to resources/g2/icons/paste.png
diff --git a/resources/g2/16.png b/resources/g2/icons/paths.png
similarity index 100%
rename from resources/g2/16.png
rename to resources/g2/icons/paths.png
diff --git a/resources/g2/17.png b/resources/g2/icons/rct1_close_off.png
similarity index 100%
rename from resources/g2/17.png
rename to resources/g2/icons/rct1_close_off.png
diff --git a/resources/g2/18.png b/resources/g2/icons/rct1_close_off_pressed.png
similarity index 100%
rename from resources/g2/18.png
rename to resources/g2/icons/rct1_close_off_pressed.png
diff --git a/resources/g2/19.png b/resources/g2/icons/rct1_close_on.png
similarity index 100%
rename from resources/g2/19.png
rename to resources/g2/icons/rct1_close_on.png
diff --git a/resources/g2/20.png b/resources/g2/icons/rct1_close_on_pressed.png
similarity index 100%
rename from resources/g2/20.png
rename to resources/g2/icons/rct1_close_on_pressed.png
diff --git a/resources/g2/25.png b/resources/g2/icons/rct1_open_off.png
similarity index 100%
rename from resources/g2/25.png
rename to resources/g2/icons/rct1_open_off.png
diff --git a/resources/g2/26.png b/resources/g2/icons/rct1_open_off_pressed.png
similarity index 100%
rename from resources/g2/26.png
rename to resources/g2/icons/rct1_open_off_pressed.png
diff --git a/resources/g2/27.png b/resources/g2/icons/rct1_open_on.png
similarity index 100%
rename from resources/g2/27.png
rename to resources/g2/icons/rct1_open_on.png
diff --git a/resources/g2/28.png b/resources/g2/icons/rct1_open_on_pressed.png
similarity index 100%
rename from resources/g2/28.png
rename to resources/g2/icons/rct1_open_on_pressed.png
diff --git a/resources/g2/21.png b/resources/g2/icons/rct1_test_off.png
similarity index 100%
rename from resources/g2/21.png
rename to resources/g2/icons/rct1_test_off.png
diff --git a/resources/g2/22.png b/resources/g2/icons/rct1_test_off_pressed.png
similarity index 100%
rename from resources/g2/22.png
rename to resources/g2/icons/rct1_test_off_pressed.png
diff --git a/resources/g2/23.png b/resources/g2/icons/rct1_test_on.png
similarity index 100%
rename from resources/g2/23.png
rename to resources/g2/icons/rct1_test_on.png
diff --git a/resources/g2/24.png b/resources/g2/icons/rct1_test_on_pressed.png
similarity index 100%
rename from resources/g2/24.png
rename to resources/g2/icons/rct1_test_on_pressed.png
diff --git a/resources/g2/59.png b/resources/g2/icons/server_password.png
similarity index 100%
rename from resources/g2/59.png
rename to resources/g2/icons/server_password.png
diff --git a/resources/g2/15.png b/resources/g2/icons/small_scenery.png
similarity index 100%
rename from resources/g2/15.png
rename to resources/g2/icons/small_scenery.png
diff --git a/resources/g2/77.png b/resources/g2/icons/sort.png
similarity index 100%
rename from resources/g2/77.png
rename to resources/g2/icons/sort.png
diff --git a/resources/g2/80.png b/resources/g2/icons/tab_disabled.png
similarity index 100%
rename from resources/g2/80.png
rename to resources/g2/icons/tab_disabled.png
diff --git a/resources/g2/5.png b/resources/g2/icons/twitch.png
similarity index 100%
rename from resources/g2/5.png
rename to resources/g2/icons/twitch.png
diff --git a/resources/g2/90.png b/resources/g2/icons/unmute.png
similarity index 100%
rename from resources/g2/90.png
rename to resources/g2/icons/unmute.png
diff --git a/resources/g2/89.png b/resources/g2/icons/unmute_pressed.png
similarity index 100%
rename from resources/g2/89.png
rename to resources/g2/icons/unmute_pressed.png
diff --git a/resources/g2/8.png b/resources/g2/icons/zoom_in.png
similarity index 100%
rename from resources/g2/8.png
rename to resources/g2/icons/zoom_in.png
diff --git a/resources/g2/9.png b/resources/g2/icons/zoom_in_background.png
similarity index 100%
rename from resources/g2/9.png
rename to resources/g2/icons/zoom_in_background.png
diff --git a/resources/g2/10.png b/resources/g2/icons/zoom_out.png
similarity index 100%
rename from resources/g2/10.png
rename to resources/g2/icons/zoom_out.png
diff --git a/resources/g2/11.png b/resources/g2/icons/zoom_out_background.png
similarity index 100%
rename from resources/g2/11.png
rename to resources/g2/icons/zoom_out_background.png
diff --git a/resources/g2/0.png b/resources/g2/logo.png
similarity index 100%
rename from resources/g2/0.png
rename to resources/g2/logo.png
diff --git a/resources/g2/1.png b/resources/g2/logo_text.png
similarity index 100%
rename from resources/g2/1.png
rename to resources/g2/logo_text.png
diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json
new file mode 100644
index 0000000000..19db0371c4
--- /dev/null
+++ b/resources/g2/sprites.json
@@ -0,0 +1,281 @@
+[
+ {
+ "path": "logo.png"
+ },
+ {
+ "path": "logo_text.png"
+ },
+ {
+ "path": "icons/fast_forward.png"
+ },
+ {
+ "path": "icons/game_speed_indicator.png"
+ },
+ {
+ "path": "icons/game_speed_indicator_double.png"
+ },
+ {
+ "path": "icons/twitch.png"
+ },
+ {
+ "path": "icons/map_gen_land.png"
+ },
+ {
+ "path": "7.png"
+ },
+ {
+ "path": "icons/zoom_in.png"
+ },
+ {
+ "path": "icons/zoom_in_background.png"
+ },
+ {
+ "path": "icons/zoom_out.png"
+ },
+ {
+ "path": "icons/zoom_out_background.png"
+ },
+ {
+ "path": "icons/map_gen_trees.png"
+ },
+ {
+ "path": "icons/map_gen_noise.png"
+ },
+ {
+ "path": "icons/large_scenery.png"
+ },
+ {
+ "path": "icons/small_scenery.png"
+ },
+ {
+ "path": "icons/paths.png"
+ },
+ {
+ "path": "icons/rct1_close_off.png"
+ },
+ {
+ "path": "icons/rct1_close_off_pressed.png"
+ },
+ {
+ "path": "icons/rct1_close_on.png"
+ },
+ {
+ "path": "icons/rct1_close_off_pressed.png"
+ },
+ {
+ "path": "icons/rct1_test_off.png"
+ },
+ {
+ "path": "icons/rct1_test_off_pressed.png"
+ },
+ {
+ "path": "icons/rct1_test_on.png"
+ },
+ {
+ "path": "icons/rct1_test_on_pressed.png"
+ },
+ {
+ "path": "icons/rct1_open_off.png"
+ },
+ {
+ "path": "icons/rct1_open_off_pressed.png"
+ },
+ {
+ "path": "icons/rct1_open_on.png"
+ },
+ {
+ "path": "icons/rct1_open_on_pressed.png"
+ },
+ {
+ "path": "icons/29.png"
+ },
+ {
+ "path": "icons/30.png"
+ },
+ {
+ "path": "icons/31.png"
+ },
+ {
+ "path": "icons/32.png"
+ },
+ {
+ "path": "icons/cheats.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_2_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_3_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_4.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_2_2.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_3_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_2_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_3_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_4.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_2_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_3_2.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_2_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_3_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_4.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_2_2.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_lift_3_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_2_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_3_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_4.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_2_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_lift_3_2.png"
+ },
+ {
+ "path": "icons/58.png"
+ },
+ {
+ "path": "icons/server_password.png"
+ },
+ {
+ "path": "icons/multiplayer.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_2.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_3.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_4.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_3.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_4.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_lift_1.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_lift_2.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_lift_3.png"
+ },
+ {
+ "path": "track/junior/flat_to_steep_diagonal_lift_4.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_lift_1.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_lift_2.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_lift_3.png"
+ },
+ {
+ "path": "track/junior/steep_to_flat_diagonal_lift_4.png"
+ },
+ {
+ "path": "icons/sort.png"
+ },
+ {
+ "path": "icons/copy.png"
+ },
+ {
+ "path": "icons/paste.png"
+ },
+ {
+ "path": "icons/tab_disabled.png"
+ },
+ {
+ "path": "track/intamin/booster_1.png"
+ },
+ {
+ "path": "track/intamin/booster_2.png"
+ },
+ {
+ "path": "track/bm/booster_1.png"
+ },
+ {
+ "path": "track/bm/booster_2.png"
+ },
+ {
+ "path": "track/junior/booster_1.png"
+ },
+ {
+ "path": "track/junior/booster_2.png"
+ },
+ {
+ "path": "icons/mute.png"
+ },
+ {
+ "path": "icons/mute_pressed.png"
+ },
+ {
+ "path": "icons/unmute.png"
+ },
+ {
+ "path": "icons/unmute_pressed.png"
+ },
+ {
+ "path": "track/mini/booster_1.png"
+ },
+ {
+ "path": "track/mini/booster_2.png"
+ }
+]
diff --git a/resources/g2/83.png b/resources/g2/track/bm/booster_1.png
similarity index 100%
rename from resources/g2/83.png
rename to resources/g2/track/bm/booster_1.png
diff --git a/resources/g2/84.png b/resources/g2/track/bm/booster_2.png
similarity index 100%
rename from resources/g2/84.png
rename to resources/g2/track/bm/booster_2.png
diff --git a/resources/g2/81.png b/resources/g2/track/intamin/booster_1.png
similarity index 100%
rename from resources/g2/81.png
rename to resources/g2/track/intamin/booster_1.png
diff --git a/resources/g2/82.png b/resources/g2/track/intamin/booster_2.png
similarity index 100%
rename from resources/g2/82.png
rename to resources/g2/track/intamin/booster_2.png
diff --git a/resources/g2/85.png b/resources/g2/track/junior/booster_1.png
similarity index 100%
rename from resources/g2/85.png
rename to resources/g2/track/junior/booster_1.png
diff --git a/resources/g2/86.png b/resources/g2/track/junior/booster_2.png
similarity index 100%
rename from resources/g2/86.png
rename to resources/g2/track/junior/booster_2.png
diff --git a/resources/g2/34.png b/resources/g2/track/junior/flat_to_steep_1.png
similarity index 100%
rename from resources/g2/34.png
rename to resources/g2/track/junior/flat_to_steep_1.png
diff --git a/resources/g2/35.png b/resources/g2/track/junior/flat_to_steep_2_1.png
similarity index 100%
rename from resources/g2/35.png
rename to resources/g2/track/junior/flat_to_steep_2_1.png
diff --git a/resources/g2/38.png b/resources/g2/track/junior/flat_to_steep_2_2.png
similarity index 100%
rename from resources/g2/38.png
rename to resources/g2/track/junior/flat_to_steep_2_2.png
diff --git a/resources/g2/36.png b/resources/g2/track/junior/flat_to_steep_3_1.png
similarity index 100%
rename from resources/g2/36.png
rename to resources/g2/track/junior/flat_to_steep_3_1.png
diff --git a/resources/g2/39.png b/resources/g2/track/junior/flat_to_steep_3_2.png
similarity index 100%
rename from resources/g2/39.png
rename to resources/g2/track/junior/flat_to_steep_3_2.png
diff --git a/resources/g2/37.png b/resources/g2/track/junior/flat_to_steep_4.png
similarity index 100%
rename from resources/g2/37.png
rename to resources/g2/track/junior/flat_to_steep_4.png
diff --git a/resources/g2/61.png b/resources/g2/track/junior/flat_to_steep_diagonal_1.png
similarity index 100%
rename from resources/g2/61.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_1.png
diff --git a/resources/g2/62.png b/resources/g2/track/junior/flat_to_steep_diagonal_2.png
similarity index 100%
rename from resources/g2/62.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_2.png
diff --git a/resources/g2/63.png b/resources/g2/track/junior/flat_to_steep_diagonal_3.png
similarity index 100%
rename from resources/g2/63.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_3.png
diff --git a/resources/g2/64.png b/resources/g2/track/junior/flat_to_steep_diagonal_4.png
similarity index 100%
rename from resources/g2/64.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_4.png
diff --git a/resources/g2/69.png b/resources/g2/track/junior/flat_to_steep_diagonal_lift_1.png
similarity index 100%
rename from resources/g2/69.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_lift_1.png
diff --git a/resources/g2/70.png b/resources/g2/track/junior/flat_to_steep_diagonal_lift_2.png
similarity index 100%
rename from resources/g2/70.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_lift_2.png
diff --git a/resources/g2/71.png b/resources/g2/track/junior/flat_to_steep_diagonal_lift_3.png
similarity index 100%
rename from resources/g2/71.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_lift_3.png
diff --git a/resources/g2/72.png b/resources/g2/track/junior/flat_to_steep_diagonal_lift_4.png
similarity index 100%
rename from resources/g2/72.png
rename to resources/g2/track/junior/flat_to_steep_diagonal_lift_4.png
diff --git a/resources/g2/46.png b/resources/g2/track/junior/flat_to_steep_lift_1.png
similarity index 100%
rename from resources/g2/46.png
rename to resources/g2/track/junior/flat_to_steep_lift_1.png
diff --git a/resources/g2/47.png b/resources/g2/track/junior/flat_to_steep_lift_2_1.png
similarity index 100%
rename from resources/g2/47.png
rename to resources/g2/track/junior/flat_to_steep_lift_2_1.png
diff --git a/resources/g2/50.png b/resources/g2/track/junior/flat_to_steep_lift_2_2.png
similarity index 100%
rename from resources/g2/50.png
rename to resources/g2/track/junior/flat_to_steep_lift_2_2.png
diff --git a/resources/g2/48.png b/resources/g2/track/junior/flat_to_steep_lift_3_1.png
similarity index 100%
rename from resources/g2/48.png
rename to resources/g2/track/junior/flat_to_steep_lift_3_1.png
diff --git a/resources/g2/51.png b/resources/g2/track/junior/flat_to_steep_lift_3_2.png
similarity index 100%
rename from resources/g2/51.png
rename to resources/g2/track/junior/flat_to_steep_lift_3_2.png
diff --git a/resources/g2/49.png b/resources/g2/track/junior/flat_to_steep_lift_4.png
similarity index 100%
rename from resources/g2/49.png
rename to resources/g2/track/junior/flat_to_steep_lift_4.png
diff --git a/resources/g2/40.png b/resources/g2/track/junior/steep_to_flat_1.png
similarity index 100%
rename from resources/g2/40.png
rename to resources/g2/track/junior/steep_to_flat_1.png
diff --git a/resources/g2/41.png b/resources/g2/track/junior/steep_to_flat_2_1.png
similarity index 100%
rename from resources/g2/41.png
rename to resources/g2/track/junior/steep_to_flat_2_1.png
diff --git a/resources/g2/44.png b/resources/g2/track/junior/steep_to_flat_2_2.png
similarity index 100%
rename from resources/g2/44.png
rename to resources/g2/track/junior/steep_to_flat_2_2.png
diff --git a/resources/g2/42.png b/resources/g2/track/junior/steep_to_flat_3_1.png
similarity index 100%
rename from resources/g2/42.png
rename to resources/g2/track/junior/steep_to_flat_3_1.png
diff --git a/resources/g2/45.png b/resources/g2/track/junior/steep_to_flat_3_2.png
similarity index 100%
rename from resources/g2/45.png
rename to resources/g2/track/junior/steep_to_flat_3_2.png
diff --git a/resources/g2/43.png b/resources/g2/track/junior/steep_to_flat_4.png
similarity index 100%
rename from resources/g2/43.png
rename to resources/g2/track/junior/steep_to_flat_4.png
diff --git a/resources/g2/65.png b/resources/g2/track/junior/steep_to_flat_diagonal_1.png
similarity index 100%
rename from resources/g2/65.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_1.png
diff --git a/resources/g2/66.png b/resources/g2/track/junior/steep_to_flat_diagonal_2.png
similarity index 100%
rename from resources/g2/66.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_2.png
diff --git a/resources/g2/67.png b/resources/g2/track/junior/steep_to_flat_diagonal_3.png
similarity index 100%
rename from resources/g2/67.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_3.png
diff --git a/resources/g2/68.png b/resources/g2/track/junior/steep_to_flat_diagonal_4.png
similarity index 100%
rename from resources/g2/68.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_4.png
diff --git a/resources/g2/73.png b/resources/g2/track/junior/steep_to_flat_diagonal_lift_1.png
similarity index 100%
rename from resources/g2/73.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_lift_1.png
diff --git a/resources/g2/74.png b/resources/g2/track/junior/steep_to_flat_diagonal_lift_2.png
similarity index 100%
rename from resources/g2/74.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_lift_2.png
diff --git a/resources/g2/75.png b/resources/g2/track/junior/steep_to_flat_diagonal_lift_3.png
similarity index 100%
rename from resources/g2/75.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_lift_3.png
diff --git a/resources/g2/76.png b/resources/g2/track/junior/steep_to_flat_diagonal_lift_4.png
similarity index 100%
rename from resources/g2/76.png
rename to resources/g2/track/junior/steep_to_flat_diagonal_lift_4.png
diff --git a/resources/g2/52.png b/resources/g2/track/junior/steep_to_flat_lift_1.png
similarity index 100%
rename from resources/g2/52.png
rename to resources/g2/track/junior/steep_to_flat_lift_1.png
diff --git a/resources/g2/53.png b/resources/g2/track/junior/steep_to_flat_lift_2_1.png
similarity index 100%
rename from resources/g2/53.png
rename to resources/g2/track/junior/steep_to_flat_lift_2_1.png
diff --git a/resources/g2/56.png b/resources/g2/track/junior/steep_to_flat_lift_2_2.png
similarity index 100%
rename from resources/g2/56.png
rename to resources/g2/track/junior/steep_to_flat_lift_2_2.png
diff --git a/resources/g2/54.png b/resources/g2/track/junior/steep_to_flat_lift_3_1.png
similarity index 100%
rename from resources/g2/54.png
rename to resources/g2/track/junior/steep_to_flat_lift_3_1.png
diff --git a/resources/g2/57.png b/resources/g2/track/junior/steep_to_flat_lift_3_2.png
similarity index 100%
rename from resources/g2/57.png
rename to resources/g2/track/junior/steep_to_flat_lift_3_2.png
diff --git a/resources/g2/55.png b/resources/g2/track/junior/steep_to_flat_lift_4.png
similarity index 100%
rename from resources/g2/55.png
rename to resources/g2/track/junior/steep_to_flat_lift_4.png
diff --git a/resources/g2/91.png b/resources/g2/track/mini/booster_1.png
similarity index 100%
rename from resources/g2/91.png
rename to resources/g2/track/mini/booster_1.png
diff --git a/resources/g2/92.png b/resources/g2/track/mini/booster_2.png
similarity index 100%
rename from resources/g2/92.png
rename to resources/g2/track/mini/booster_2.png
diff --git a/src/openrct2/OpenRCT2.cpp b/src/openrct2/OpenRCT2.cpp
index 1816f98ac7..bfa3e6721f 100644
--- a/src/openrct2/OpenRCT2.cpp
+++ b/src/openrct2/OpenRCT2.cpp
@@ -299,9 +299,6 @@ extern "C"
OpenRCT2::RunGameLoop();
}
openrct2_dispose();
-
- // HACK Some threads are still running which causes the game to not terminate. Investigation required!
- exit(gExitCode);
}
void openrct2_dispose()
diff --git a/src/openrct2/cmdline/CommandLine.cpp b/src/openrct2/cmdline/CommandLine.cpp
index 2337744927..dae2f01696 100644
--- a/src/openrct2/cmdline/CommandLine.cpp
+++ b/src/openrct2/cmdline/CommandLine.cpp
@@ -568,6 +568,12 @@ extern "C"
argEnumerator.TryPop();
const CommandLineCommand * command = CommandLine::FindCommandFor(CommandLine::RootCommands, &argEnumerator);
+
+ if (command == nullptr)
+ {
+ return EXITCODE_FAIL;
+ }
+
if (command->Options != nullptr)
{
auto argEnumeratorForOptions = CommandLineArgEnumerator(argEnumerator);
@@ -576,6 +582,7 @@ extern "C"
return EXITCODE_FAIL;
}
}
+
if (command == CommandLine::RootCommands && command->Func == nullptr)
{
return CommandLine::HandleCommandDefault();
diff --git a/src/openrct2/cmdline/SpriteCommands.cpp b/src/openrct2/cmdline/SpriteCommands.cpp
index 241e53438d..52758066c0 100644
--- a/src/openrct2/cmdline/SpriteCommands.cpp
+++ b/src/openrct2/cmdline/SpriteCommands.cpp
@@ -24,7 +24,7 @@
extern "C"
{
- sint32 gSpriteMode = 0;
+ sint32 gSpriteMode = 0;
}
static const char * _mode;
@@ -40,12 +40,12 @@ static exitcode_t HandleSprite(CommandLineArgEnumerator *argEnumerator);
const CommandLineCommand CommandLine::SpriteCommands[]
{
// Main commands
- DefineCommand("append", " ", SpriteOptions, HandleSprite),
- DefineCommand("build", " [silent]", SpriteOptions, HandleSprite),
- DefineCommand("create", "", SpriteOptions, HandleSprite),
- DefineCommand("details", " [idx]", SpriteOptions, HandleSprite),
- DefineCommand("export", "