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 { 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; 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() diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 8cae6b6efa..211c84b7d5 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -85,6 +85,19 @@ 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 }; + + 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 for (int32_t i = 0; i < RCT2_MAX_VEHICLES_PER_RIDE_ENTRY; i++) { @@ -550,6 +563,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 +638,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/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index a742b783bc..7da7a67c56 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -707,6 +707,20 @@ 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); + 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; 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]; }