Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only add RCT1 land objects to imported SV6 if they are used #16077

Merged
merged 7 commits into from Dec 5, 2021

Conversation

duncanspumpkin
Copy link
Contributor

We were mistakenly loading rct1 surfaces and sides when loading rct2 parks leading to a confusing ui.

Copy link
Member

@Gymnasiast Gymnasiast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is NOT a mistake. We added the RCT1 sides to SV6 files years ago (#7010), and the surfaces one year ago. So they have to be loaded. Otherwise this is going to break thousands of SV6 files created with OpenRCT2 in the past years.

Also, there is code to hide the surfaces and edges if they are not loaded. (Might be broken.)

@Gymnasiast
Copy link
Member

Gymnasiast commented Nov 30, 2021

Shooting the messenger now, are we? Try loading this park on develop and on this PR: Pickle Park-savetest.sv6.zip

How it looks on develop:

How it looks with this PR:
afbeelding

So, this PR does break SV6 files, like I mentioned. Whether you like it or not, we have supported extra land types for three years in SV6 and we can’t just retroactively remove that support, because it would break thousands of SV6 files that people created with OpenRCT2.

@pizza2004
Copy link
Contributor

We added the RCT1 sides to SV6 files years ago (#7010), and the surfaces one year ago. So they have to be loaded.

Couldn't you just add a check to see if they're saved in the SV6 file and if not just not load them as defaults?

@Gymnasiast
Copy link
Member

We added the RCT1 sides to SV6 files years ago (#7010), and the surfaces one year ago. So they have to be loaded.

Couldn't you just add a check to see if they're saved in the SV6 file and if not just not load them as defaults?

That would work, but it’s not what this PR currently does.

Copy link
Member

@Gymnasiast Gymnasiast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The modified version does not work correctly:

afbeelding

Oddly, it seems to add the red roof tiles (a terrain surface) as an edge style. Perhaps it’s going past the end of an array?

@duncanspumpkin
Copy link
Contributor Author

Okay think thats it fixed
image
obviously doesn't look correct on mine since i don't have RCT1 linked but its showing as the brick edge.

@duncanspumpkin duncanspumpkin marked this pull request as draft December 1, 2021 08:04
@duncanspumpkin
Copy link
Contributor Author

Hmm looks like there are still a few places with hardcoded offsets:

static uint32_t get_surface_image(
    const paint_session* session, ObjectEntryIndex index, int32_t offset, uint8_t rotation, int32_t grassLength, bool grid,
    bool underground)
{
    // Provide fallback for RCT1 surfaces if the user does have RCT1 linked.
    if (!is_csg_loaded() && index >= TERRAIN_RCT2_COUNT)
    {
        if (index == TERRAIN_ROOF_GREY)
            index = TERRAIN_ROCK;
        else
            index = TERRAIN_DIRT;
    }

@Gymnasiast
Copy link
Member

Hmm looks like there are still a few places with hardcoded offsets:

We should be able to get of those once I implement the "no csg" fallback.

@Gymnasiast
Copy link
Member

Ok, I just tested with a few more SV4 files and hybrid SV6 files.

It looks a bit messy that the selection of land types varies for every hybrid save. The order can also be odd:

afbeelding

What I would propose as a solution is this: check if the file uses any RCT1 land texture. If it does, load all of them, and in the same order as we do currently. If none of used, only load the RCT2 textures.

@duncanspumpkin
Copy link
Contributor Author

Ok, I just tested with a few more SV4 files and hybrid SV6 files.

It looks a bit messy that the selection of land types varies for every hybrid save. The order can also be odd:

afbeelding

What I would propose as a solution is this: check if the file uses any RCT1 land texture. If it does, load all of them, and in the same order as we do currently. If none of used, only load the RCT2 textures.

Can you try the latest version it now looks at all the tiles if there are any rct1 land or edges it will load all rct1 land and edges into the file. Saves having to recompute the index as well.

@Gymnasiast Gymnasiast changed the title Don't load non rct2 assets Only add RCT1 land objects to imported SV6 if they are used Dec 5, 2021
@Gymnasiast Gymnasiast added the changelog This issue/PR deserves a changelog entry. label Dec 5, 2021
Co-authored-by: pizza2004 <chad@neejean.org>
@Gymnasiast Gymnasiast added the squash merge A PR that should be squashed on merge. label Dec 5, 2021
@duncanspumpkin duncanspumpkin marked this pull request as ready for review December 5, 2021 16:02
@Gymnasiast Gymnasiast merged commit c01049a into OpenRCT2:develop Dec 5, 2021
@Gymnasiast Gymnasiast added this to the v0.4.0 milestone Dec 5, 2021
@duncanspumpkin duncanspumpkin deleted the fixrct2 branch December 5, 2021 16:45
@astraylife1
Copy link

After this fix, how are we to obtain the RCT1 sides? The castle and urban sides as well as others don't show up in object selection now. I can't figure out how to add those textures to my park

@Gymnasiast
Copy link
Member

After this fix, how are we to obtain the RCT1 sides? The castle and urban sides as well as others don't show up in object selection now. I can't figure out how to add those textures to my park

If they don’t show up in your Object Selection window, then you should probably check if your filters are set correctly. There is a button for those in the top right of the Object Selection window.

@astraylife1
Copy link

After this fix, how are we to obtain the RCT1 sides? The castle and urban sides as well as others don't show up in object selection now. I can't figure out how to add those textures to my park

If they don’t show up in your Object Selection window, then you should probably check if your filters are set correctly. There is a button for those in the top right of the Object Selection window.

Silly mistake! You are correct. Apparently I had LL and CF checked off. Thanks!

Gymnasiast added a commit that referenced this pull request Apr 25, 2022
- Headline feature: [#10664] New save format with increased limits.
- Feature: [#714] Allow up to 255 trains per ride.
- Feature: [#2253] Path surfaces and railings can be mixed and matched, like in RCT1.
- Feature: [#2766] The Fruity Ices Stall can now be recoloured, like in RCT1.
- Feature: [#4933] Allow map sizes of 999 × 999 (up from 254 × 254).
- Feature: [#7660] Custom music objects that are distributed with the save.
- Feature: [#8407] Ride platforms can be made invisible.
- Feature: [#12793] Add Excitement/Intensity/Nausea ratings to Ride List view with sorting.
- Feature: [#13858] Flatride bases can be made invisible.
- Feature: [#14676] [Plugin] Allow plugins to store data in .park files.
- Feature: [#15367] Individual track elements can now be drawn as another ride type.
- Feature: [#15901] [Plugin] Add ‘map.getAllEntitiesOnTile’ to API.
- Feature: [#16029] [Plugin] Add ‘TrackElement.rideType’ to API.
- Feature: [#16097] The Looping Roller Coaster can now draw all elements from the LIM Launched Roller Coaster.
- Feature: [#16132, #16389] The Corkscrew, Twister and Vertical Drop Roller Coasters can now draw inline twists.
- Feature: [#16144] [Plugin] Add ‘ImageManager’ to API.
- Feature: [#16707] [Plugin] Implement intransient plugins.
- Feature: [#16707] [Plugin] New API for current mode, ‘map.change’ hook and toolbox menu items on title screen.
- Feature: [#16731] [Plugin] New API for fetching and manipulating a staff member’s patrol area.
- Feature: [#16800] [Plugin] Add lift hill speed properties to API.
- Feature: [#16806] Parkobj can load sprites from RCT image archives.
- Feature: [#16831] Allow tertiary colours for small and large scenery objects.
- Feature: [#16872] [Plugin] Add support for custom images.
- Improved: [#3517] Cheats are now saved with the park.
- Improved: [#10150] Ride stations are now properly checked if they’re sheltered.
- Improved: [#10664, #16072] Visibility status can be modified directly in the Tile Inspector’s list.
- Improved: [#16251] Plugin API handles null values better.
- Improved: [#16251] openrct2.d.ts: mark ‘callback’ argument of queryAction and executeAction as optional.
- Improved: [#16251] openrct2.d.ts: change ‘network.status’ to ‘network.mode’ in network API docs.
- Improved: [#16251] openrct2.d.ts: added previously undocumented ‘GroupBoxWidget.text’ property.
- Improved: [#16251] openrct2.d.ts: removed unused ‘LabelWidget.onChange’ property.
- Improved: [#16258] Increased image limit in the engine.
- Improved: [#16408] Improve ‘--version’ cli option to report more compatibility information.
- Improved: [#16740] Allow staff patrol areas to be defined with individual tiles rather than groups of 4x4.
- Improved: [#16764] [Plugin] Add hook ‘map.save’, called before the map is saved.
- Improved: [#16925] The queue length of 1000 guests is lifted, and a warning for too long queues is added instead.
- Change: [#14484] Make the Heartline Twister coaster ratings a little bit less hateful.
- Change: [#16077] When importing SV6 files, the RCT1 land types are only added when they were actually used.
- Change: [#16424] Following an entity in the title sequence no longer toggles underground view when it’s underground.
- Change: [#16493] Boat Hire and Submarine Ride support costs now match their visual appearance.
- Change: [#16710] Changed default view of Guest List to ‘Thoughts’ and selected tab will default to ‘Summarised’ (when opened from the menu).
- Change: [#16859] Guests with umbrellas no longer always avoid going into a Maze.
- Change: [#16912] Tired or nauseated guests will no longer jump in a Maze.
- Fix: [#6767] Black screen after Alt-Tabbing back into the game.
- Fix: [#11752] Track pieces with fractional cost are too cheap to build.
- Fix: [#12556] Allow game to run without audio devices.
- Fix: [#12774] [Plugin] Scripts will not be re-initialised when a new scenario is loaded from within a running scenario.
- Fix: [#13336] Can no longer place Bumble Bee track design (reverts #12707).
- Fix: [#14155] Map Generator sometimes places non-tree objects as trees.
- Fix: [#14674] Recent Messages only shows first few notifications.
- Fix: [#14920] Ghosts for rides and shops do not auto-elevate when obscured.
- Fix: [#15413] Modifying park rating with plugins desyncs park rating history from actual park rating.
- Fix: [#15571] Non-ASCII characters in scenario description get distorted while saving.
- Fix: [#15830] Objects with RCT1 images are very glitchy if OpenRCT2 is not linked to an RCT1 install.
- Fix: [#15909] Text can overflow in ‘Select ride design’ windows.
- Fix: [#15947, #15960] Removing a flat ride results in an error message and duplicate structures.
- Fix: [#15998] Cannot set map size to the actual maximum.
- Fix: [#16007] Scenario Editor “Entry Price” appears to the right of the value field.
- Fix: [#16008] Tile Inspector can select elements from last tile without reselecting it.
- Fix: [#16024] Go-Karts with more than 32 vehicles do not colour themselves correctly.
- Fix: [#16026] Newly created rides with “Disable vehicle limits” cheat always get 32 trains with 12 cars each.
- Fix: [#16063] Object Selection preview for objects with glass is broken.
- Fix: [#16075] Exporting track designs saves scenery in incorrect locations.
- Fix: [#16087] The Looping Roller Coaster booster is now always drawn correctly.
- Fix: [#16140] The ‘Follow this’ option is now disabled when the ride view is set to ‘overall’ or a station.
- Fix: [#16162] Go Karts speeds are not correctly randomised, they only go very fast or very slow.
- Fix: [#16188] Medium-size banked turns on the Twister and Vertical Roller Coaster have incorrect support placement (partly original bug).
- Fix: [#16264, #16572] Placing saved track design crashes game.
- Fix  [#16308] Crash when trying to place down a ride on Android.
- Fix: [#16327] Crash on malformed network packet.
- Fix: [#16449] [Plugin] Viewport doesn't hide when switching tabs.
- Fix: [#16450] Banner style not copied when using tile inspector.
- Fix: [#16535] Entering construction mode unblocks all paths.
- Fix: [#16542] “Same price throughout park” status not correctly imported for RCT1 saves.
- Fix: [#16572] Crash when trying to place track designs.
- Fix: [#16591] [Plugin] ‘setInterval’ and ‘setTimeout’ is not disposed when map unloads.
- Fix: [#16711] [Plugin] ‘Car.rideObject’ overflowing with more than 256 ride types.
- Fix: [#16779] Fix case where title music doesn't unmute properly.
- Fix: [#16808] Incorrect track design serialisation causing vehicle object replacement.
- Fix: [#16869] Soft Toy Stall cannot be recoloured, but shows a recolouring option anyway (original bug).
- Fix: [#16995] Native Linux dialog windows do not open if the path contains single quotes.
- Fix: [objects#165] Glitch when Bengal Tiger Cars go through a corner.
rik-smeets pushed a commit to rik-smeets/OpenRCT2 that referenced this pull request Jun 11, 2022
- Headline feature: [OpenRCT2#10664] New save format with increased limits.
- Feature: [OpenRCT2#714] Allow up to 255 trains per ride.
- Feature: [OpenRCT2#2253] Path surfaces and railings can be mixed and matched, like in RCT1.
- Feature: [OpenRCT2#2766] The Fruity Ices Stall can now be recoloured, like in RCT1.
- Feature: [OpenRCT2#4933] Allow map sizes of 999 × 999 (up from 254 × 254).
- Feature: [OpenRCT2#7660] Custom music objects that are distributed with the save.
- Feature: [OpenRCT2#8407] Ride platforms can be made invisible.
- Feature: [OpenRCT2#12793] Add Excitement/Intensity/Nausea ratings to Ride List view with sorting.
- Feature: [OpenRCT2#13858] Flatride bases can be made invisible.
- Feature: [OpenRCT2#14676] [Plugin] Allow plugins to store data in .park files.
- Feature: [OpenRCT2#15367] Individual track elements can now be drawn as another ride type.
- Feature: [OpenRCT2#15901] [Plugin] Add ‘map.getAllEntitiesOnTile’ to API.
- Feature: [OpenRCT2#16029] [Plugin] Add ‘TrackElement.rideType’ to API.
- Feature: [OpenRCT2#16097] The Looping Roller Coaster can now draw all elements from the LIM Launched Roller Coaster.
- Feature: [OpenRCT2#16132, OpenRCT2#16389] The Corkscrew, Twister and Vertical Drop Roller Coasters can now draw inline twists.
- Feature: [OpenRCT2#16144] [Plugin] Add ‘ImageManager’ to API.
- Feature: [OpenRCT2#16707] [Plugin] Implement intransient plugins.
- Feature: [OpenRCT2#16707] [Plugin] New API for current mode, ‘map.change’ hook and toolbox menu items on title screen.
- Feature: [OpenRCT2#16731] [Plugin] New API for fetching and manipulating a staff member’s patrol area.
- Feature: [OpenRCT2#16800] [Plugin] Add lift hill speed properties to API.
- Feature: [OpenRCT2#16806] Parkobj can load sprites from RCT image archives.
- Feature: [OpenRCT2#16831] Allow tertiary colours for small and large scenery objects.
- Feature: [OpenRCT2#16872] [Plugin] Add support for custom images.
- Improved: [OpenRCT2#3517] Cheats are now saved with the park.
- Improved: [OpenRCT2#10150] Ride stations are now properly checked if they’re sheltered.
- Improved: [OpenRCT2#10664, OpenRCT2#16072] Visibility status can be modified directly in the Tile Inspector’s list.
- Improved: [OpenRCT2#16251] Plugin API handles null values better.
- Improved: [OpenRCT2#16251] openrct2.d.ts: mark ‘callback’ argument of queryAction and executeAction as optional.
- Improved: [OpenRCT2#16251] openrct2.d.ts: change ‘network.status’ to ‘network.mode’ in network API docs.
- Improved: [OpenRCT2#16251] openrct2.d.ts: added previously undocumented ‘GroupBoxWidget.text’ property.
- Improved: [OpenRCT2#16251] openrct2.d.ts: removed unused ‘LabelWidget.onChange’ property.
- Improved: [OpenRCT2#16258] Increased image limit in the engine.
- Improved: [OpenRCT2#16408] Improve ‘--version’ cli option to report more compatibility information.
- Improved: [OpenRCT2#16740] Allow staff patrol areas to be defined with individual tiles rather than groups of 4x4.
- Improved: [OpenRCT2#16764] [Plugin] Add hook ‘map.save’, called before the map is saved.
- Improved: [OpenRCT2#16925] The queue length of 1000 guests is lifted, and a warning for too long queues is added instead.
- Change: [OpenRCT2#14484] Make the Heartline Twister coaster ratings a little bit less hateful.
- Change: [OpenRCT2#16077] When importing SV6 files, the RCT1 land types are only added when they were actually used.
- Change: [OpenRCT2#16424] Following an entity in the title sequence no longer toggles underground view when it’s underground.
- Change: [OpenRCT2#16493] Boat Hire and Submarine Ride support costs now match their visual appearance.
- Change: [OpenRCT2#16710] Changed default view of Guest List to ‘Thoughts’ and selected tab will default to ‘Summarised’ (when opened from the menu).
- Change: [OpenRCT2#16859] Guests with umbrellas no longer always avoid going into a Maze.
- Change: [OpenRCT2#16912] Tired or nauseated guests will no longer jump in a Maze.
- Fix: [OpenRCT2#6767] Black screen after Alt-Tabbing back into the game.
- Fix: [OpenRCT2#11752] Track pieces with fractional cost are too cheap to build.
- Fix: [OpenRCT2#12556] Allow game to run without audio devices.
- Fix: [OpenRCT2#12774] [Plugin] Scripts will not be re-initialised when a new scenario is loaded from within a running scenario.
- Fix: [OpenRCT2#13336] Can no longer place Bumble Bee track design (reverts OpenRCT2#12707).
- Fix: [OpenRCT2#14155] Map Generator sometimes places non-tree objects as trees.
- Fix: [OpenRCT2#14674] Recent Messages only shows first few notifications.
- Fix: [OpenRCT2#14920] Ghosts for rides and shops do not auto-elevate when obscured.
- Fix: [OpenRCT2#15413] Modifying park rating with plugins desyncs park rating history from actual park rating.
- Fix: [OpenRCT2#15571] Non-ASCII characters in scenario description get distorted while saving.
- Fix: [OpenRCT2#15830] Objects with RCT1 images are very glitchy if OpenRCT2 is not linked to an RCT1 install.
- Fix: [OpenRCT2#15909] Text can overflow in ‘Select ride design’ windows.
- Fix: [OpenRCT2#15947, OpenRCT2#15960] Removing a flat ride results in an error message and duplicate structures.
- Fix: [OpenRCT2#15998] Cannot set map size to the actual maximum.
- Fix: [OpenRCT2#16007] Scenario Editor “Entry Price” appears to the right of the value field.
- Fix: [OpenRCT2#16008] Tile Inspector can select elements from last tile without reselecting it.
- Fix: [OpenRCT2#16024] Go-Karts with more than 32 vehicles do not colour themselves correctly.
- Fix: [OpenRCT2#16026] Newly created rides with “Disable vehicle limits” cheat always get 32 trains with 12 cars each.
- Fix: [OpenRCT2#16063] Object Selection preview for objects with glass is broken.
- Fix: [OpenRCT2#16075] Exporting track designs saves scenery in incorrect locations.
- Fix: [OpenRCT2#16087] The Looping Roller Coaster booster is now always drawn correctly.
- Fix: [OpenRCT2#16140] The ‘Follow this’ option is now disabled when the ride view is set to ‘overall’ or a station.
- Fix: [OpenRCT2#16162] Go Karts speeds are not correctly randomised, they only go very fast or very slow.
- Fix: [OpenRCT2#16188] Medium-size banked turns on the Twister and Vertical Roller Coaster have incorrect support placement (partly original bug).
- Fix: [OpenRCT2#16264, OpenRCT2#16572] Placing saved track design crashes game.
- Fix  [OpenRCT2#16308] Crash when trying to place down a ride on Android.
- Fix: [OpenRCT2#16327] Crash on malformed network packet.
- Fix: [OpenRCT2#16449] [Plugin] Viewport doesn't hide when switching tabs.
- Fix: [OpenRCT2#16450] Banner style not copied when using tile inspector.
- Fix: [OpenRCT2#16535] Entering construction mode unblocks all paths.
- Fix: [OpenRCT2#16542] “Same price throughout park” status not correctly imported for RCT1 saves.
- Fix: [OpenRCT2#16572] Crash when trying to place track designs.
- Fix: [OpenRCT2#16591] [Plugin] ‘setInterval’ and ‘setTimeout’ is not disposed when map unloads.
- Fix: [OpenRCT2#16711] [Plugin] ‘Car.rideObject’ overflowing with more than 256 ride types.
- Fix: [OpenRCT2#16779] Fix case where title music doesn't unmute properly.
- Fix: [OpenRCT2#16808] Incorrect track design serialisation causing vehicle object replacement.
- Fix: [OpenRCT2#16869] Soft Toy Stall cannot be recoloured, but shows a recolouring option anyway (original bug).
- Fix: [OpenRCT2#16995] Native Linux dialog windows do not open if the path contains single quotes.
- Fix: [objects#165] Glitch when Bengal Tiger Cars go through a corner.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog This issue/PR deserves a changelog entry. squash merge A PR that should be squashed on merge.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants