From 4f8548dfea089de84d3d4c85243a10dede0f53ab Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 17 Mar 2019 12:49:55 +0100 Subject: [PATCH 1/8] Allow different default colours per stall --- src/openrct2/object/RideObject.cpp | 3 ++- src/openrct2/ride/Ride.cpp | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 8cae6b6efa..01873360ee 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -550,6 +550,8 @@ void RideObject::ReadJson(IReadObjectContext* context, const json_t* root) _legacyType.shop_item = SHOP_ITEM_NONE; _legacyType.shop_item_secondary = SHOP_ITEM_NONE; + _presetColours = ReadJsonCarColours(json_object_get(properties, "carColours")); + if (IsRideTypeShopOrFacility(_legacyType.ride_type[0])) { // Standard car info for a shop @@ -623,7 +625,6 @@ void RideObject::ReadJson(IReadObjectContext* context, const json_t* root) } auto availableTrackPieces = ObjectJsonHelpers::GetJsonStringArray(json_object_get(properties, "availableTrackPieces")); - _presetColours = ReadJsonCarColours(json_object_get(properties, "carColours")); } _legacyType.flags |= ObjectJsonHelpers::GetFlags( diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 9cca7acd08..695ca31e38 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -216,6 +216,7 @@ static void ride_shop_connected(Ride* ride); static void ride_spiral_slide_update(Ride* ride); static void ride_update(Ride* ride); void loc_6DDF9C(Ride* ride, TileElement* tileElement); +static bool ride_is_ride(Ride* ride); Ride* get_ride(int32_t index) { @@ -5898,7 +5899,17 @@ void ride_set_colour_preset(Ride* ride, uint8_t index) { const track_colour_preset_list* colourPresets = &RideColourPresets[ride->type]; TrackColour colours = { COLOUR_BLACK, COLOUR_BLACK, COLOUR_BLACK }; - if (index < colourPresets->count) + // Stalls save their default colour in the vehicle settings (since they share a common ride type) + if (!ride_is_ride(ride)) + { + auto rideEntry = get_ride_entry(ride->subtype); + if (rideEntry != nullptr && rideEntry->vehicle_preset_list->count > 0) + { + auto list = rideEntry->vehicle_preset_list->list[0]; + colours = { list.main, list.additional_1, list.additional_2 }; + } + } + else if (index < colourPresets->count) { colours = colourPresets->list[index]; } From 59c74ead94c2e969a19b90bf0d3a607dfa9c1aea Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 19 Mar 2019 21:19:50 +0100 Subject: [PATCH 2/8] Add fallback for legacy objects --- src/openrct2/object/RideObject.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 01873360ee..3c18484d57 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -85,6 +85,13 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream) _presetColours.list[i] = stream->ReadValue(); } + if (IsRideTypeShopOrFacility(_legacyType.ride_type[0])) + { + // This used to be hard-coded. JSON objects set this themselves. + _presetColours.count = 1; + _presetColours.list[0] = { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED }; + } + // Read peep loading positions for (int32_t i = 0; i < RCT2_MAX_VEHICLES_PER_RIDE_ENTRY; i++) { From 14c2925ae515bb9d0b283adaae12fa4c28aeb9b6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 19 Mar 2019 22:11:18 +0100 Subject: [PATCH 3/8] Add import code to make Ice Cream Stalls light blue --- src/openrct2/rct2/S6Importer.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index a742b783bc..5e7e8d377d 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -707,6 +707,19 @@ public: dst->track_colour[i].additional = src->track_colour_additional[i]; dst->track_colour[i].supports = src->track_colour_supports[i]; } + if (dst->type == RIDE_TYPE_FOOD_STALL) + { + auto entry = object_entry_get_entry(OBJECT_TYPE_RIDE, dst->subtype); + if (entry != nullptr) + { + char name[DAT_NAME_LENGTH + 1]; + object_entry_get_name_fixed(name, sizeof(name), entry); + if (strncmp(name, "ICECR1 ", DAT_NAME_LENGTH) == 0) + { + dst->track_colour[0].main = COLOUR_LIGHT_BLUE; + } + } + } dst->music = src->music; dst->entrance_style = src->entrance_style; From 8b1330ec57ffd304063ed7bf69b7442c1251a41f Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 19 Mar 2019 22:13:02 +0100 Subject: [PATCH 4/8] Add comment [ci skip] --- src/openrct2/rct2/S6Importer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 5e7e8d377d..7da7a67c56 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -707,6 +707,7 @@ public: dst->track_colour[i].additional = src->track_colour_additional[i]; dst->track_colour[i].supports = src->track_colour_supports[i]; } + // This stall was not colourable in RCT2. if (dst->type == RIDE_TYPE_FOOD_STALL) { auto entry = object_entry_get_entry(OBJECT_TYPE_RIDE, dst->subtype); From 79318997bc44b4213f4f08bd20d760df3c4e78d6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 19 Mar 2019 22:21:06 +0100 Subject: [PATCH 5/8] Remove old code for MEDIENTR --- src/openrct2/object/EntranceObject.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index 11bbfb5fd4..592caac883 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -23,14 +23,6 @@ void EntranceObject::ReadLegacy(IReadObjectContext* context, IStream* stream) GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); GetImageTable().Read(context, stream); - - // Fix issue #1705: The Medieval entrance from Time Twister has a straight banner, - // but scrolls its text as if it a curved one. - if (String::Equals(GetIdentifier(), "MEDIENTR")) - { - _legacyType.scrolling_mode = 32; - _legacyType.text_height += 1; - } } void EntranceObject::Load() From aa21f0fb1d2b0d7d78edcc39194a30be8583d878 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 19 Mar 2019 22:55:28 +0100 Subject: [PATCH 6/8] Prepare for food/drink stall recolouration --- src/openrct2/object/RideObject.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 3c18484d57..211c84b7d5 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -90,6 +90,12 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream) // This used to be hard-coded. JSON objects set this themselves. _presetColours.count = 1; _presetColours.list[0] = { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED }; + + if (_legacyType.ride_type[0] == RIDE_TYPE_FOOD_STALL || _legacyType.ride_type[0] == RIDE_TYPE_DRINK_STALL) + { + // In RCT2, no food or drink stall could be recoloured. + _legacyType.flags |= RIDE_ENTRY_FLAG_DISABLE_COLOUR_TAB; + } } // Read peep loading positions From 80c57f3804f78fefc6630a6db398575ca64be04f Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 20 Mar 2019 13:02:32 +0100 Subject: [PATCH 7/8] Bump objects version to 1.0.10 --- CMakeLists.txt | 4 ++-- OpenRCT2.xcodeproj/project.pbxproj | 2 +- openrct2.proj | 4 ++-- shell.nix | 4 ++-- src/openrct2-android/app/build.gradle | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ad80fb1b4..1da9947a08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,8 +23,8 @@ set(CMAKE_MACOSX_RPATH 1) set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.2/title-sequence-v0.1.2.zip") set(TITLE_SEQUENCE_SHA1 "1136ef92bfb05cd1cba9831ba6dc4a653d87a246") -set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v1.0.9/objects.zip") -set(OBJECTS_SHA1 "be0bcb454505e4f7c56d21d6804f81faf8a0a652") +set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v1.0.10/objects.zip") +set(OBJECTS_SHA1 "0e88a1a6d845eb3a56ad68ecf60a9d6a4194250f") option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.") option(WITH_TESTS "Build tests") diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 71dc46d782..855c5b8de9 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -3555,7 +3555,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "version=\"1.0.9\"\nzipname=\"objects.zip\"\nliburl=\"https://github.com/OpenRCT2/objects/releases/download/v$version/$zipname\"\n\n[[ ! -d \"${SRCROOT}/data/object\" || ! -e \"${SRCROOT}/objectsversion\" || $(head -n 1 \"${SRCROOT}/objectsversion\") != $version ]]\noutdated=$?\n\nif [[ $outdated -eq 0 ]]; then\nif [[ -d \"${SRCROOT}/data/object\" ]]; then rm -r \"${SRCROOT}/data/object\"; fi\nmkdir -p \"${SRCROOT}/data/object\"\n\ncurl -L -o \"${SRCROOT}/data/object/$zipname\" \"$liburl\"\nunzip -uaq -d \"${SRCROOT}/data/object\" \"${SRCROOT}/data/object/$zipname\"\nrm \"${SRCROOT}/data/object/$zipname\"\n\necho $version > \"${SRCROOT}/objectsversion\"\nfi"; + shellScript = "version=\"1.0.10\"\nzipname=\"objects.zip\"\nliburl=\"https://github.com/OpenRCT2/objects/releases/download/v$version/$zipname\"\n\n[[ ! -d \"${SRCROOT}/data/object\" || ! -e \"${SRCROOT}/objectsversion\" || $(head -n 1 \"${SRCROOT}/objectsversion\") != $version ]]\noutdated=$?\n\nif [[ $outdated -eq 0 ]]; then\nif [[ -d \"${SRCROOT}/data/object\" ]]; then rm -r \"${SRCROOT}/data/object\"; fi\nmkdir -p \"${SRCROOT}/data/object\"\n\ncurl -L -o \"${SRCROOT}/data/object/$zipname\" \"$liburl\"\nunzip -uaq -d \"${SRCROOT}/data/object\" \"${SRCROOT}/data/object/$zipname\"\nrm \"${SRCROOT}/data/object/$zipname\"\n\necho $version > \"${SRCROOT}/objectsversion\"\nfi"; }; C68B2D471EC790710020651C /* Download Libraries */ = { isa = PBXShellScriptBuildPhase; diff --git a/openrct2.proj b/openrct2.proj index af9d95b558..ed32fda0fd 100644 --- a/openrct2.proj +++ b/openrct2.proj @@ -70,8 +70,8 @@ 058b9df80244c03f1633cb06e9f70471a29ebb8e https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.2/title-sequence-v0.1.2.zip 1136ef92bfb05cd1cba9831ba6dc4a653d87a246 - https://github.com/OpenRCT2/objects/releases/download/v1.0.9/objects.zip - be0bcb454505e4f7c56d21d6804f81faf8a0a652 + https://github.com/OpenRCT2/objects/releases/download/v1.0.10/objects.zip + 0e88a1a6d845eb3a56ad68ecf60a9d6a4194250f diff --git a/shell.nix b/shell.nix index 8350bae7c9..28bd1b8844 100644 --- a/shell.nix +++ b/shell.nix @@ -15,8 +15,8 @@ let objects-src = pkgs.fetchFromGitHub { owner = "OpenRCT2"; repo = "objects"; - rev = "v1.0.9"; - sha256 = "442b7da11b2b884559148ab9e7fdf781f50dd50feb69bfa569a78e52205a5709"; + rev = "v1.0.10"; + sha256 = "4f261964f1c01a04b7600d3d082fb4d3d9ec0d543c4eb66a819eb2ad01417aa0"; }; title-sequences-src = pkgs.fetchFromGitHub { diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle index 30dc262a4d..8085ee78ff 100644 --- a/src/openrct2-android/app/build.gradle +++ b/src/openrct2-android/app/build.gradle @@ -98,7 +98,7 @@ android.applicationVariants.all { variant -> into "$variant.mergeAssets.outputDir/data/title" } download { - src 'https://github.com/OpenRCT2/objects/releases/download/v1.0.9/objects.zip' + src 'https://github.com/OpenRCT2/objects/releases/download/v1.0.10/objects.zip' dest new File(buildDir, 'objects.zip') } copy { From 511dd44f6b099008a968ff0940bbd4667ca8b377 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 20 Mar 2019 16:57:22 +0100 Subject: [PATCH 8/8] Bump network version --- src/openrct2/network/Network.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/network/Network.cpp b/src/openrct2/network/Network.cpp index 9d5e4b85d4..7253472937 100644 --- a/src/openrct2/network/Network.cpp +++ b/src/openrct2/network/Network.cpp @@ -31,7 +31,7 @@ // This string specifies which version of network stream current build uses. // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -#define NETWORK_STREAM_VERSION "6" +#define NETWORK_STREAM_VERSION "7" #define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION static Peep* _pickup_peep = nullptr;