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

Entrance/exit construction state fixes in ride and maze construction #13098

Merged
merged 2 commits into from Oct 11, 2020

Conversation

mwnciau
Copy link
Contributor

@mwnciau mwnciau commented Oct 4, 2020

A couple of bug fixes for the RIDE_CONSTRUCTION_STATE_ENTRANCE_EXIT construction state in rides and mazes:

Ride Construction map selections

Currently, when placing an entrance or exit on a track ride that's incomplete, the map selection of the last ghost piece is visible:

image

The first commit, 8820d90, removes the existing selection when in the entrance exit construction state

Maze construction UX

Currently, when placing an entrance or exit on a maze, the arrow buttons are still usable even though the current position indicator is hidden. This PR makes a few changes to improve the UX of the maze construction window:

  • The arrow buttons are disabled in the entrance/exit state
  • When leaving the entrance/exit state, the previous state is restored
  • When in the entrance/exit state, clicking one of the maze build mode buttons will disabled the active entrance/exit buttons
  • The entrance/exit buttons now switch along with the widget switch when the first entrance/exit is placed

Copy link
Contributor

@duncanspumpkin duncanspumpkin left a comment

Choose a reason for hiding this comment

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

I don't understand why you are changing when these actions occur

src/openrct2-ui/windows/MazeConstruction.cpp Show resolved Hide resolved
@AaronVanGeffen AaronVanGeffen added the changelog This issue/PR deserves a changelog entry. label Oct 5, 2020
@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 5, 2020

I'm happy to change it back, but I felt that the previous behaviour was a bit inconsistent.

image

The Mode section actions on mouse down, and the Build and Entrance/Exit sections action on mouse up, meaning you can click on them and then move off before releasing the click to prevent the button press action.

The Mode and Build sections are visually similar so it's a little strange that they behave differently, but on the other hand they are functionally different so it can be argued that it makes sense.

The Mode and Entrance/Exit sections are functionally similar - they both act as radio button inputs (in fact, they more or less make a 5 element radio input for construction mode) - so again, it's a little strange that they behave differently, but on the other hand they are visually inconsistent so the case could be made.

Both together, however, feels a bit unpolished. The answer may be instead to change the Entrance/Exit buttons to action on mouse down instead of mouseup.

@duncanspumpkin
Copy link
Contributor

How does it compare to the ride construction window as I suspect its following the same style as that window in that the central box is a mouse down but all the outside elements are a mouse up

@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 5, 2020

For comparison:

image

Yeah, in the ride construction window, the direction/slope/bank are all mouse down, and the big build button is mouse up. They are a little different: they are greyed out when the entrance/exit build mode is enabled, and the maze mode buttons are a lot more functionally similar to the entrance/exit buttons.

Playing around with it some more, the radio button functionality does feel a lot cleaner on mouse down so I'll change it back. I do think the entrance/exit buttons should behave the same way, i.e. on mouse down.

@mwnciau mwnciau force-pushed the entrance-exit-fixes branch 2 times, most recently from 5fe2768 to 2a7d1c4 Compare October 5, 2020 19:50
@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 5, 2020

Changed it back to mouse down now.

Also added another minor fix (MazeConstruction line 393): previously, when you placed the first entrance or exit, the tool would change to placing the other, but the UI wouldn't change to reflect that (you'd be placing an exit with the entrance button depressed, and vice-versa).

@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 5, 2020

For the changelog, would something like this suffice?

- Fix: [#13098] Last track piece map selection still visible when placing ride entrance or exit
...
- Improved: [#13098] Improvements to the maze construction window user interface

Or something a little more generic:

- Fix: [#13098] Various minor issues with entrances and exits in the ride construction window

@duncanspumpkin
Copy link
Contributor

duncanspumpkin commented Oct 6, 2020

Go with the two separate items. The fix has been long overdue. I'm pretty sure there is an issue for it

@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 6, 2020

Added changelog.

Found the original issue for the fix: #1324

Copy link
Contributor

@duncanspumpkin duncanspumpkin left a comment

Choose a reason for hiding this comment

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

Can we have a few testers on this?

@tupaschoal
Copy link
Member

I've done some basic in-game testing and this looks great.

One note regarding the maze changes:

Currently, when placing an entrance or exit on a maze, the arrow buttons are still usable even though the current position indicator is hidden. This PR makes a few changes to improve the UX of the maze construction window:

  • The arrow buttons are disabled in the entrance/exit state

This kind of happens on vanilla RCT as well, though with a slight difference.

  • Vanilla: Clicking entrance/exit button does not disable the arrows. Clicking them doesn't do anything, but if you click any of the mode buttons, you can use the arrows normally, while still holding the entrance/exit object.
  • OpenRCT2: Clicking entrance/exit button does not disable the arrows. Clicking them doesn't do anything, but if you click any of the mode buttons, you can use the arrows normally, while still holding the entrance/exit object.

So there's a slight difference in behavior, one might even call it an original bug, but I'm not vouching strongly for this here. I do think it could be split into more changelog entries:

It sounds a bit verbose, but after all these are multiple fixes and some enhancements. Personally I'd do each of them in a single commit, so that would also take to a changelog each, it also becomes more informative for the players. Let's see what the other team members think before you do these.

tupaschoal added a commit to mwnciau/OpenRCT2 that referenced this pull request Oct 10, 2020
@tupaschoal
Copy link
Member

I've modified the changelog, but there's a rebase conflict. Can you please solve it so we can merge it @mwnciau ?

You can fold my changelog commit into the relevant one

Simon Jarrett added 2 commits October 11, 2020 11:52
- Arrows are disabled when entrance and exit are being placed
- Clicking a construction mode will disable the entrance and exit mode
- Previous state restored when leaving entrance/exit construction mode
- Fix entrance/exit buttons not changing when the mode switches after placing the first entrance/exit
@mwnciau
Copy link
Contributor Author

mwnciau commented Oct 11, 2020

Rebased to develop now

@duncanspumpkin duncanspumpkin merged commit d7b9a99 into OpenRCT2:develop Oct 11, 2020
@tupaschoal tupaschoal added this to the v0.3.2 milestone Oct 11, 2020
@mwnciau mwnciau deleted the entrance-exit-fixes branch October 11, 2020 11:42
AaronVanGeffen added a commit that referenced this pull request Nov 1, 2020
- Feature: [#12110] Add Hybrid Coaster (Rocky Mountain Construction I-Box) track type.
- Feature: [#12999] .sea (RCT Classic) scenarios are now listed in the “New Scenario” dialog.
- Feature: [#13000] objective_options command for console.
- Feature: [#13096] Add Esperanto translation.
- Feature: [#13164] Add 'Objective options' to Cheats menu.
- Change: [#9568] Change lift sounds of Reverser Roller Coaster and Compact Inverted Coaster to better fitting ones.
- Change: [#13160] The lay-out of the Park Cheats tab has been improved.
- Fix: [#1324] Last track piece map selection still visible when placing ride entrance or exit (original bug).
- Fix: [#3200] Close Construction window upon selecting vehicle page.
- Fix: [#4022] Fix Mac cursor offset on launch
- Fix: [#4041] Garbled park option on scenario editor with custom theme.
- Fix: [#4865] Offer an option to disable inhibiting the monitor power.
- Fix: [#5178] Lighting effects cannot be disabled in software mode
- Fix: [#5904] Empty errors on tile inspector base height change.
- Fix: [#6086] Cannot install existing track design with another name.
- Fix: [#6614, #8623] Colours are distorted when using OpenGL with Intel integrated graphics drivers.
- Fix: [#7443] Construction arrows pulse at irregular intervals.
- Fix: [#7518] Water isn't cut down by view clipping tool.
- Fix: [#7748] Tooltips would not timeout for normal UI elements.
- Fix: [#8015] RCT2 files are not found when put into the OpenRCT2 folder.
- Fix: [#8957] Error title missing when building with insufficient funds
- Fix: [#10186] Placing multiple saved rides ignores design name (original bug).
- Fix: [#12368] Desync due to ghost station pieces affecting changing ride settings.
- Fix: [#12940] Windows cause issues with snow drawing.
- Fix: [#13019] Simulated trains sometimes open construction window when they crash.
- Fix: [#13021] Mowed grass and weeds don't show up in extra zoom levels.
- Fix: [#13024] Console cursor does not correctly render at current cursor position.
- Fix: [#13029] Not all Junior Roller Coaster pieces are shown when "Show all track pieces" cheat is enabled.
- Fix: [#13044] Rides in RCT1 saves all have "0 customers per hour".
- Fix: [#13074] Entrance and exit ghosts for mazes not being removed.
- Fix: [#13083] Dialog for renaming conflicting track design crops text out.
- Fix: [#13097] Missing direction arrow for stations
- Fix: [#13098] UI buttons for entrance and exit don't toggle according to them being built.
- Fix: [#13098] Maze can still be constructed while placing entrance and exit (original bug).
- Fix: [#13118] Closing construction window resets ride viewport.
- Fix: [#13129] Missing error message when waiting for train to leave station on the ride measurements graph.
- Fix: [#13138] Fix logical sorting of list windows.
- Fix: [#13158] Cursors are drawn incorrectly in text input fields.
- Fix: [#13222] Vehicle collision causes negative number of passengers (original bug).
- Fix: [#13226, #7280] No error is shown when attempting to load a corrupted save.
- Fix: [#13266] Plugin API: Deleting key of sharedStorage not working.
- Fix: [#13278] Desync caused by ghost tiles changing the ride mode.
- Fix: [#13289] Litter and vomit sometimes not loading with RCT1 saved game or scenario
- Fix: [#13292] Impossible excitement rating requirements with finish building 5 coasters goal
- Improved: [#13023] Made add_news_item console command last argument, assoc, optional.
- Improved: [#13098] Improvements to the maze construction window user interface
- Improved: [#13125] Selecting the RCT2 files now uses localised dialogs.
pizza2004 pushed a commit to pizza2004/OpenRCT2 that referenced this pull request Nov 2, 2020
- Feature: [OpenRCT2#12110] Add Hybrid Coaster (Rocky Mountain Construction I-Box) track type.
- Feature: [OpenRCT2#12999] .sea (RCT Classic) scenarios are now listed in the “New Scenario” dialog.
- Feature: [OpenRCT2#13000] objective_options command for console.
- Feature: [OpenRCT2#13096] Add Esperanto translation.
- Feature: [OpenRCT2#13164] Add 'Objective options' to Cheats menu.
- Change: [OpenRCT2#9568] Change lift sounds of Reverser Roller Coaster and Compact Inverted Coaster to better fitting ones.
- Change: [OpenRCT2#13160] The lay-out of the Park Cheats tab has been improved.
- Fix: [OpenRCT2#1324] Last track piece map selection still visible when placing ride entrance or exit (original bug).
- Fix: [OpenRCT2#3200] Close Construction window upon selecting vehicle page.
- Fix: [OpenRCT2#4022] Fix Mac cursor offset on launch
- Fix: [OpenRCT2#4041] Garbled park option on scenario editor with custom theme.
- Fix: [OpenRCT2#4865] Offer an option to disable inhibiting the monitor power.
- Fix: [OpenRCT2#5178] Lighting effects cannot be disabled in software mode
- Fix: [OpenRCT2#5904] Empty errors on tile inspector base height change.
- Fix: [OpenRCT2#6086] Cannot install existing track design with another name.
- Fix: [OpenRCT2#6614, OpenRCT2#8623] Colours are distorted when using OpenGL with Intel integrated graphics drivers.
- Fix: [OpenRCT2#7443] Construction arrows pulse at irregular intervals.
- Fix: [OpenRCT2#7518] Water isn't cut down by view clipping tool.
- Fix: [OpenRCT2#7748] Tooltips would not timeout for normal UI elements.
- Fix: [OpenRCT2#8015] RCT2 files are not found when put into the OpenRCT2 folder.
- Fix: [OpenRCT2#8957] Error title missing when building with insufficient funds
- Fix: [OpenRCT2#10186] Placing multiple saved rides ignores design name (original bug).
- Fix: [OpenRCT2#12368] Desync due to ghost station pieces affecting changing ride settings.
- Fix: [OpenRCT2#12940] Windows cause issues with snow drawing.
- Fix: [OpenRCT2#13019] Simulated trains sometimes open construction window when they crash.
- Fix: [OpenRCT2#13021] Mowed grass and weeds don't show up in extra zoom levels.
- Fix: [OpenRCT2#13024] Console cursor does not correctly render at current cursor position.
- Fix: [OpenRCT2#13029] Not all Junior Roller Coaster pieces are shown when "Show all track pieces" cheat is enabled.
- Fix: [OpenRCT2#13044] Rides in RCT1 saves all have "0 customers per hour".
- Fix: [OpenRCT2#13074] Entrance and exit ghosts for mazes not being removed.
- Fix: [OpenRCT2#13083] Dialog for renaming conflicting track design crops text out.
- Fix: [OpenRCT2#13097] Missing direction arrow for stations
- Fix: [OpenRCT2#13098] UI buttons for entrance and exit don't toggle according to them being built.
- Fix: [OpenRCT2#13098] Maze can still be constructed while placing entrance and exit (original bug).
- Fix: [OpenRCT2#13118] Closing construction window resets ride viewport.
- Fix: [OpenRCT2#13129] Missing error message when waiting for train to leave station on the ride measurements graph.
- Fix: [OpenRCT2#13138] Fix logical sorting of list windows.
- Fix: [OpenRCT2#13158] Cursors are drawn incorrectly in text input fields.
- Fix: [OpenRCT2#13222] Vehicle collision causes negative number of passengers (original bug).
- Fix: [OpenRCT2#13226, OpenRCT2#7280] No error is shown when attempting to load a corrupted save.
- Fix: [OpenRCT2#13266] Plugin API: Deleting key of sharedStorage not working.
- Fix: [OpenRCT2#13278] Desync caused by ghost tiles changing the ride mode.
- Fix: [OpenRCT2#13289] Litter and vomit sometimes not loading with RCT1 saved game or scenario
- Fix: [OpenRCT2#13292] Impossible excitement rating requirements with finish building 5 coasters goal
- Improved: [OpenRCT2#13023] Made add_news_item console command last argument, assoc, optional.
- Improved: [OpenRCT2#13098] Improvements to the maze construction window user interface
- Improved: [OpenRCT2#13125] Selecting the RCT2 files now uses localised dialogs.
CartoonFan pushed a commit to CartoonFan/OpenRCT2 that referenced this pull request Dec 20, 2020
* When placing a block brake perform full operation mode switch

* Increase network version

* Update changelog

* Merge Localisation/master into OpenRCT2/develop

* Close OpenRCT2#12450: Refactor SPRITE_IDENTIFIER to use strong enum

* Adding missing SpriteIdentifier enumerations to switch statements

* Fix OpenRCT2#13297: Missing null check in tile_element_get_banner_index() (OpenRCT2#13313)

* Merge Localisation/master into OpenRCT2/develop

* Rename ride_is_valid_for_test/open and update return type

* Move ride_open and ride_test into Ride

* Changelog: fix typo

* Fix OpenRCT2#13292: Impossible excitement rating requirements

Incorrect argument was used when drawing the minimum excitement rating in the Objective Selection window.

* Merge Localisation/master into OpenRCT2/develop

* Merge Localisation/master into OpenRCT2/develop

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13289: Litter and vomit sometimes not loading with RCT1 saves (OpenRCT2#13322)

Issue was actually caused by loading RCT1 saves from certain rotations, and fixed by reseting sprite quadrants when loading. Wasn't an issue with RCT2 saves as litter screen coordinates are set directly from the save, rather than calculated based on rotation and sprite width/height.

* Fix OpenRCT2#13306: Restore entrance/exit for prebuilt ride design ghosts (OpenRCT2#13309)

This fixes a regression introduced in c440dac

* Update objects to v1.0.18 (OpenRCT2#13326)

* Merge Localisation/master into OpenRCT2/develop

* Replace Backtrace token for v0.3.2

* Fix OpenRCT2#13250: Crash when opening parks with new ride types (OpenRCT2#13256)

This only happens when a new ride type is added and the park is opened in the older version of the game where the ride type does not exist.

Reworked so that invalid rides are not loadable. Force reload of title if current scenario is corrupted.

* Merge Localisation/master into OpenRCT2/develop

* Release v0.3.2

- Feature: [OpenRCT2#12110] Add Hybrid Coaster (Rocky Mountain Construction I-Box) track type.
- Feature: [OpenRCT2#12999] .sea (RCT Classic) scenarios are now listed in the “New Scenario” dialog.
- Feature: [OpenRCT2#13000] objective_options command for console.
- Feature: [OpenRCT2#13096] Add Esperanto translation.
- Feature: [OpenRCT2#13164] Add 'Objective options' to Cheats menu.
- Change: [OpenRCT2#9568] Change lift sounds of Reverser Roller Coaster and Compact Inverted Coaster to better fitting ones.
- Change: [OpenRCT2#13160] The lay-out of the Park Cheats tab has been improved.
- Fix: [OpenRCT2#1324] Last track piece map selection still visible when placing ride entrance or exit (original bug).
- Fix: [OpenRCT2#3200] Close Construction window upon selecting vehicle page.
- Fix: [OpenRCT2#4022] Fix Mac cursor offset on launch
- Fix: [OpenRCT2#4041] Garbled park option on scenario editor with custom theme.
- Fix: [OpenRCT2#4865] Offer an option to disable inhibiting the monitor power.
- Fix: [OpenRCT2#5178] Lighting effects cannot be disabled in software mode
- Fix: [OpenRCT2#5904] Empty errors on tile inspector base height change.
- Fix: [OpenRCT2#6086] Cannot install existing track design with another name.
- Fix: [OpenRCT2#6614, OpenRCT2#8623] Colours are distorted when using OpenGL with Intel integrated graphics drivers.
- Fix: [OpenRCT2#7443] Construction arrows pulse at irregular intervals.
- Fix: [OpenRCT2#7518] Water isn't cut down by view clipping tool.
- Fix: [OpenRCT2#7748] Tooltips would not timeout for normal UI elements.
- Fix: [OpenRCT2#8015] RCT2 files are not found when put into the OpenRCT2 folder.
- Fix: [OpenRCT2#8957] Error title missing when building with insufficient funds
- Fix: [OpenRCT2#10186] Placing multiple saved rides ignores design name (original bug).
- Fix: [OpenRCT2#12368] Desync due to ghost station pieces affecting changing ride settings.
- Fix: [OpenRCT2#12940] Windows cause issues with snow drawing.
- Fix: [OpenRCT2#13019] Simulated trains sometimes open construction window when they crash.
- Fix: [OpenRCT2#13021] Mowed grass and weeds don't show up in extra zoom levels.
- Fix: [OpenRCT2#13024] Console cursor does not correctly render at current cursor position.
- Fix: [OpenRCT2#13029] Not all Junior Roller Coaster pieces are shown when "Show all track pieces" cheat is enabled.
- Fix: [OpenRCT2#13044] Rides in RCT1 saves all have "0 customers per hour".
- Fix: [OpenRCT2#13074] Entrance and exit ghosts for mazes not being removed.
- Fix: [OpenRCT2#13083] Dialog for renaming conflicting track design crops text out.
- Fix: [OpenRCT2#13097] Missing direction arrow for stations
- Fix: [OpenRCT2#13098] UI buttons for entrance and exit don't toggle according to them being built.
- Fix: [OpenRCT2#13098] Maze can still be constructed while placing entrance and exit (original bug).
- Fix: [OpenRCT2#13118] Closing construction window resets ride viewport.
- Fix: [OpenRCT2#13129] Missing error message when waiting for train to leave station on the ride measurements graph.
- Fix: [OpenRCT2#13138] Fix logical sorting of list windows.
- Fix: [OpenRCT2#13158] Cursors are drawn incorrectly in text input fields.
- Fix: [OpenRCT2#13222] Vehicle collision causes negative number of passengers (original bug).
- Fix: [OpenRCT2#13226, OpenRCT2#7280] No error is shown when attempting to load a corrupted save.
- Fix: [OpenRCT2#13266] Plugin API: Deleting key of sharedStorage not working.
- Fix: [OpenRCT2#13278] Desync caused by ghost tiles changing the ride mode.
- Fix: [OpenRCT2#13289] Litter and vomit sometimes not loading with RCT1 saved game or scenario
- Fix: [OpenRCT2#13292] Impossible excitement rating requirements with finish building 5 coasters goal
- Improved: [OpenRCT2#13023] Made add_news_item console command last argument, assoc, optional.
- Improved: [OpenRCT2#13098] Improvements to the maze construction window user interface
- Improved: [OpenRCT2#13125] Selecting the RCT2 files now uses localised dialogs.

* Move Aaron to 'Former development team members'

* Fix OpenRCT2#13334: Uninitialised variables in CustomTabDesc

* Fix OpenRCT2#13342: Rename tabChange to onTabChange in WindowDesc interface

* Refactor UI/Input Input to Title Case

* Refactor UI/Input KeyboardShortcuts to Title Case

* Refactor UI/Input MouseInput to Title Case

* Refactor loc_6B51C0

* Use TrackElement in vehicle_create_trains() and friends (OpenRCT2#13338)

* Refactor Dropdown to TitleCase (OpenRCT2#13352)

* Refactor Dropdown Namespace

* Refactor Dropdown to TitleCase

* Close OpenRCT2#13346: Change FootpathScenery to FootpathAddition (OpenRCT2#13350)

* Refactor Graph to TitleCase (OpenRCT2#13353)

* Refactor UI/Interface misc to TitleCase (OpenRCT2#13354)

* Refactor LandTool to Namespace

* Refactor Theme to TitleCase

* Refactor ViewportInteraction to TitleCase

* Close OpenRCT2#13057: Make GameAction flags accessible by plugins. (OpenRCT2#13359)

* Rename VEHICLE_UPDATE_MOTION_TRACK_FLAG_10 (OpenRCT2#13362)

* Rename ride_set_block_points to RideOpenBlockBrakes (OpenRCT2#13360)

* Rename VEHICLE_UPDATE_FLAG_1

* Rename vehicle_unset_update_flag_b1 and move it into Vehicle

* Refactor Widget to TitleCase (OpenRCT2#13355)

* Close OpenRCT2#12455: Refactor MOUSE_STATE to use strong enum (OpenRCT2#13361)

* Close OpenRCT2#12455: Refactor MOUSE_STATE to use strong enum

refactor: MouseState to strong enum

Co-authored-by: Tulio Leao <tupaschoal@gmail.com>

* Debunch peeps (OpenRCT2#12917)

* Stop guests from being forced to the center line of a path over time

Change the way we apply randomness to peep destinations when moving from one tile to the next, to allow peeps that are moving along a straight path to maintain their perpendicular offset relative to the path direction, instead of being (eventually) forced back to the center line.

* Update test expectations

The changes to guest movement mean that the number of steps taken for these expected paths are now slightly different to before.

* Rename sub_6B5952 to ChainQueues (OpenRCT2#13357)

Also remove unreachable call to it

* Merge Localisation/master into OpenRCT2/develop

* Refactor UI/Interface Window to Title Case (OpenRCT2#13367)

* Remove unnecessary parameter from Ride::Open (OpenRCT2#13368)

Ride::Open is only ever called with RIDE_STATUS_OPEN,
so the parameter is redundant.

* Refactor add 3d light follow on from OpenRCT2#13281 (OpenRCT2#13333)

Close OpenRCT2#12406

Co-authored-by: rpstester <32249806+rpstester@users.noreply.github.com>

Co-authored-by: rpstester <32249806+rpstester@users.noreply.github.com>

* Refactor loc_6DDF9C (OpenRCT2#13369)

* Move ride_create_vehicles into Ride

* Refactor loc_6DDF9C

* Fix address comments in TileElement.h

* Make TileElement conversion preserve the const qualifier

Additionally this commit fixes some constness issues revealed by this change

* Create calls for min/max cars per train

* Close OpenRCT2#13376: Open custom window at specified tab

* Convert a register to a variable

* Add JSON identifier to object repository

* Create functions to load objects by JSON id

* Replace calls to LoadObjectLegacy() with new IDs

* Replace old edge style names in Tables.cpp

* Close OpenRCT2#13359: Make GameAction flags optional in plugin API. (OpenRCT2#13381)

* Use plain std::string_view instead of const &

* Implement @ZehMatt's suggestions

* Change tile_element_get_ride_index() to method

* Use 16 bits for gTrackDesignSaveRideIndex throughout

* Replace loose usages of 0xFF

* Use ride_id_t for remaining peep ride fields

* Split declarations and definitions to improve compile times when editing (OpenRCT2#13332)

* Split FileStream declarations and definitions

* Split JobPool declarations and definitions

* Split StringBuilder declarations and definitions

* Split StringReader declarations and definitions

* Split ZoomLevel declarations and definitions

* Fix missing include in FileClassifier.cpp

* Remove pragma once from source files

* Fix missing include in StringBuilder.h

* Update Xcode project

* Fix compilation of tests

Co-authored-by: Michael Steenbeek <m.o.steenbeek@gmail.com>

* Autoconvert ride id between RCT2 and OpenRCT2

* Bump network version

* Update replays for change

* Use ResearchCategory Enum for ResearchItem

* Move category names and invention strings to ResearchItem class

* Add converter from RideCategory to ResearchCategory

* Refactor to add allocators to paint session

* Create helper function for calculating position hash

* Rename main paint add image functions

* Name further functions

* Simplify functions further

* Add overload for function

* Name 98196C

* Clang format the relevant files

* Adjust names further

* Fix AddAsParent overload

* Fix test paint

* Use array for selecting research category strings

* Use new identifier for default objects

* Merge Localisation/master into OpenRCT2/develop

* Check if platform has a file picker

* Improve message when asking for a game_path with no filepicker available

* STR_6399: Fix quotes

* Merge Localisation/master into OpenRCT2/develop

* Merge Localisation/master into OpenRCT2/develop

* Introduce constant for max sequences (OpenRCT2#13405)

* refactor: ObjectType to use strong enum

enum renaming complete

* refactor: changed ObjectType enum to strong enum

code does not compile yet

* bugHunt: correcting code to compile

code does not compile yet

* Close OpenRCT2#12427: Refactor OBJECT_TYPE to use strong enum

* refactor: enum class ObjectType is casted to int for test to pass

* resolve: integrated changes from comments

* Close OpenRCT2#12337: Remove goto from DecideAndBuyItem (OpenRCT2#13063)

* Remove obsolete object fixes

These fixes have since been incorporated into JSON objects.

* Fix OpenRCT2#12895: Prevent Mechanics from fixing just fixed rides (OpenRCT2#13389)

* Fix OpenRCT2#12895: only update ride mechanic status when advancing state

* add changelog message

* Change changelog wording

* Bump network version

Co-authored-by: Michael Steenbeek <m.o.steenbeek@gmail.com>

* Remove remaining direct calls to sub_6E1F34()

* Break up sub_6E1F34()

* Implement ToUpper for WinNT 5.1 (OpenRCT2#13422)

* Refactor goto loc_6D7A97 (OpenRCT2#13298)

* Refactor GoTo loc_6D7A97

* Remove built-in explode guests cheat

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13426: Typo in "repay loan"

* Merge Localisation/master into OpenRCT2/develop

* Fix writing of objects.idx (OpenRCT2#13438)

Use WriteString instead of WriteValue for std::string.

* Close OpenRCT2#12446: Refactor WEATHER to use strong enum (OpenRCT2#13434)

* Fix OpenRCT2#13409: Peeps sometimes stray too far from the path centre (OpenRCT2#13415)

* Fix OpenRCT2#13409: Clamp peep distances from path centers

The debunch-peeps improvement did not account for the fact that peeps may change direction when they are only at the very edge of a tile - it's not entirely clear to me why this happens, but it does. The previous code would push these peeps back towards the center line over time, but the new behaviour allows them to keep walking along these very edge-y lines, which means they sometimes appear to be walking on the wrong sides of benches, railings, etc.

To fix the problem, do not simply keep the target coordinate constant for the direction the peep is moving in, but clamp it, so that peeps in these outlier positions will get pulled back to a more acceptable position within one tile. Peeps who are already debunched within the reasonable center area of the path are unaffected.

* Update replays for change

* Add changelog entry

* Fix broken hashes

Co-authored-by: duncanspumpkin <duncans_pumpkin@hotmail.co.uk>

* Fix OpenRCT2#13257: Rides w/ exactly the minimum objective length not counted (OpenRCT2#13446)

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13454. Use File class so that utf8 paths understood (OpenRCT2#13455)

* Changelog: remove OpenRCT2#13409, add OpenRCT2#13454

* Fix OpenRCT2#13427: Newly created Go-Karts show "Race won by <blank>" (OpenRCT2#13457)

* Fix OpenRCT2#13427. Show # of people for newly created Go-Karts

* Add changelog entry

* Reorder changelog entry

* Close OpenRCT2#12438: Refactor RIDE_COMPONENT_TYPE to use strong enum (OpenRCT2#13456)

* Part of OpenRCT2#12438  Changed RIDE_COMPONENT_TYPE to enum class

(1/3)

Changed the enum RIDE_COMPONENT_TYPE to be enum class in RideData.h.
Shortened the enumerators.
And fixed

I split the changes I did into 3 commits because the enum is used in a total of 85 different files where I just replace the single line where they occur.

The changes in those 85 files are analogous to my change in line 328 in RideData.h in this commit.

* Part of OpenRCT2#12438  changed all RIDE_COMPONENT_TYPE enumerators appearances

(2/3)

Changed every appearance of the old RIDE_COMPONENT_TYPE enumerators to the changed enumerators from last commit.

* Part of OpenRCT2#12438

(3/3)

Used EnumValue() wherever a field or variable of the type RideComponentType was used as an index.

Havent checked if anything from these 3 commits on this branch got codestyle issues

* Part of OpenRCT2#12438

used clang-format

* Closes OpenRCT2#12438  Added Accessor function for RideComponentName

Added Accessor function GetRideComponentName to RideData.
to replace the use RideComponentNames[EnumValue(RideComponentType type)]

* Close OpenRCT2#12438 moving GetRideComponentName to RideData Headerfile

Moved GetRideComponentName to RideData Headerfile since thats where it should be.

* Add further plugin visitors for actions (OpenRCT2#13458)

* Add further plugin visitors for actions

* Update PLUGIN_API_VERSION

Co-authored-by: Tulio Leao <tupaschoal@gmail.com>

* Plugins - return result from StaffHireAction (OpenRCT2#13459)

* Added some scripting glue to StaffHireNewAction

* Update src/openrct2/scripting/ScriptEngine.cpp

Co-authored-by: Ted John <ted@brambles.org>

* Update plugin api version

Co-authored-by: Ted John <ted@brambles.org>
Co-authored-by: Tulio Leao <tupaschoal@gmail.com>

* Fix OpenRCT2#12410: Refactor WINDOW_WIDGET_TYPES to use strong enum (OpenRCT2#13453)

* Fix OpenRCT2#12410: Refactor WINDOW_WIDGET_TYPES to use strong enum

* Merge Localisation/master into OpenRCT2/develop

* Create new templated format string

* Add a dynamic format string function

* Add FmtString class

* Implement for format token types

* Refactor some formatting code

* Implement multi-level formatting for any implementation

* Implement multi-level formatting for template FormatString

* Implement legacy format string

* Use variant instead of any

* Start eradicating old format codes

* Remove more instances of format codes

* Fix scrolling text

* Implement MOVE_X and INLINE_SPRITE

* Fix map tooltips

* Fix more string functions

* Refactor format tokens

* Fix GCC compiler errors

* Fix FormatString stack memory issues

* Add test for codepoint view

* Fix TTF issues

* Apply review comments and fix build

* Add Formatting.{cpp,h} to Xcode project

* Remove includes already in header

* Apply code review comments

* Handle int64 edge cases in Format

* Improve handling of braces

* Do not format characters in text input

* Fix title screen and object manager text issues

* Improve RCT12 UTF-8 checks

* Apply a few more code review comments

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13469: Exception thrown from plugin in context.subscribe (OpenRCT2#13470)

Throw a JavaScript exception, not a C++ exception when invalid parameters are passed to subscribe.

* Fix banner text formatting, import / export

* Improve banner formatting fix

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13477: Plug-in widget tooltips do not work (OpenRCT2#13486)

* Add pause button to the Track Designer (OpenRCT2#13483)

Fixes OpenRCT2#13398

* Fix OpenRCT2#13482: STR_6308 incorrect for en-GB

* Merge Localisation/master into OpenRCT2/develop

* Close OpenRCT2#13476: Unneeded colour variables in TopToolbar.cpp

* Create ObjectEntryDescriptor to properly handle mixed DAT and JSON

* Update objects to v1.0.20

* Merge Localisation/master into OpenRCT2/develop

* Fix Docker CI, explicit copy constructor

* Close OpenRCT2#12395: Refactor PeepItem to use strong enum (OpenRCT2#13311)

* refactor: integrated PEEP_ITEM into SHOP_ITEM

* refactor: converted merged enum to flag

Only former occurrences of PEEP_ITEM

* cleanUp: code cleaned after merging

* refactor: converted ShopItem to strong enum

code reformatting

* refactor: ShopItem enum items renamed

code formatted

* refactor: new getter and setter functions for Item...Flags

* refactor: replaced all occurrences of ItemStandardFlags

with appropriate getter and setter functions.
COMPARE_FIELD macro needs to be commented out or the flag has to stay public.

* refactor: all occurrences of ItemExtraFlags replaced

with proper function calls. COMPARE_FIELD macro issue not resolved.

* refactor: introduced new variable for unified item flags

* refactor: adapted accessor functions

accessor functions were modified to accommodate both standard and extra ShopItem flags

* refactor: ItemExtraFlags accessor functions are replaced

with general functions

* refactor: reverted to original uint32_t flag variables

* refactor: implemented suggested changes

* refactor: integrate additional comments

* refactor: incorporated requested changes

* refactor: incorporated requested changes

added static_cast<PeepThoughtType> in lines 1572 and 1590

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13517: Bad formatting of chat messages (OpenRCT2#13521)

* Bump network version which was the main cause of the problem.
* Ensure each chat line starts with some format codes.

* Fix OpenRCT2#13517: Bad formatting of dates

* Allow formatting in in-game console

* Fix MacOS CI: Explicitly set macOS builds to x86_64 only (OpenRCT2#13525)

* Fix OpenRCT2#13489: Mechanics continue heading to inspect broken down rides (OpenRCT2#13490)

* Fix OpenRCT2#13489: Mechanics continue heading to inspect broken down rides

* Close OpenRCT2#12403: Refactor FILTER_PALETTE_ID to use strong enum (OpenRCT2#13273)

* Fix OpenRCT2#13495: Add properties for park value, guests and company value

* Add more park attributes to plugin API

* Fix OpenRCT2#13431: [Plugin] UI disabled widgets can still be interacted with.

* Fix OpenRCT2#13078: [Plugin] Add colour picker widget

* Fix: OpenRCT2#13509 [Plugin] Add ability to format strings

* Fix OpenRCT2#13510: [Plugin] list view scroll resets when items is set.

* Fix OpenRCT2#13512: [Plugin] Add item separators to list view

* Increment plugin API version

* Fix OpenRCT2#13527: Read access violation in format_string (OpenRCT2#13529)

* Rename incorrectly named RCT1 peep fields (OpenRCT2#13528)

Photo2/3/4 and item extra flags are not present in RCT1, only in RCT2.

* Fix ObjectEntryDescriptor (OpenRCT2#13506)

* Use dataserialiser to simplify object repo code

* Merge Localisation/master into OpenRCT2/develop

* Simplify Serialise for FileIndex

* Close OpenRCT2#12387: Refactored PeepThoughtType to use strong enum. (OpenRCT2#13541)

* Merge Localisation/master into OpenRCT2/develop

* Remove unused WINDOW_EVENTS enum (OpenRCT2#13542)

* Fix OpenRCT2#13552: Incorrect value for highscore pointer (OpenRCT2#13554)

This was causing an invalid pointer dereference

* Merge LitterType into the shop item descriptor (OpenRCT2#13513)

* Merge LitterType into the shop item descriptor

* Merge ConsumptionTime into ShopItem descriptor

* Merge in DiscardContainer into ShopItemDiscriptor

* Simplify itemOrderPreference

* Simplify guest code by using 64bit flags

* Remove operators for ShopItem

* Move PeepThoughtType TooMuch GoodValue into ShopItemDescriptor

* Reorg Get Flags and Has functions to make intention clear

* Constexpr shop item descriptors

* Constexpr shop item descriptors to compile time gen constants

* Fix formatting and spelling

* Revert operator++ removal

* Peep::ItemFlags merging (OpenRCT2#13511)

* Merge standard and extra item flags for peeps

* Update replays

* Fix spelling of 'theming'

* Fix OpenRCT2#6677: Add discord RPC to macOS builds

* Fix plugin crash when nested scope occurs (OpenRCT2#13556)

* Split actions hpp files into separate h and cpp files (OpenRCT2#13548)

* Split up SmallSceneryPlace/Remove

Added undo function for Remove Scenery

* Refactor: Balloon and Banner actions hpp=>h/cpp

* Refactor: rename all action *.hpp files to *.cpp

This is preparation for separation in later commits. Note that without
the complete set of commits in this branch, the code will not build.

* Refactor Clear, Climate, Custom, and Footpath actions hpp=>h/cpp

* VSCode: add src subdirectories to includePath

* Refactor Guest actions hpp=>h/cpp

* Refactor Land actions hpp=>h/cpp

* Refactor LargeScenery actions hpp=>h/cpp

* Refactor Load, Maze, Network actions hpp=>h/cpp

* Refactor Park actions hpp=>h/cpp

* Refactor/style: move private function declarations in actions *.h

Previous action .h files included private function declarations with
private member variables, before public function declarations. This
commit re-orders the header files to the following order:
- public member variables
- private member variables
- public functions
- private functions

* Refactor Pause action hpp=>h/cpp

* Refactor Peep, Place, Player actions hpp=>h/cpp

* Refactor Ride actions hpp=>h/cpp

* Refactor Scenario, Set*, Sign* actions hpp=>h/cpp

* Refactor SmallScenerySetColourAction hpp=>h/cpp

* Refactor Staff actions hpp=>h/cpp

* Refactor Surface, Tile, Track* actions hpp=>h/cpp

* Refactor Wall and Water actions hpp=>h/cpp

* Fix various includes and other compile errors

Update includes for tests.
Move static function declarations to .h files
Add explicit includes to various files that were previously implicit
(the required header was a nested include in an action hpp file, and the
action .h file does not include that header)
Move RideSetStatus string enum to the cpp file to avoid unused imports

* Xcode: modify project file for actions refactor

* Cleanup whitespace and end-of-file newlines

Co-authored-by: duncanspumpkin <duncans_pumpkin@hotmail.co.uk>

* Close OpenRCT2#12443: Refactor TITLE_SCRIPT to use strong enum (OpenRCT2#13540)

Close OpenRCT2#12443: Refactor TITLE_SCRIPT to use strong enum

* Move remaining game actions logic from header to source (OpenRCT2#13573)

* Moving all definitions from R...Actions to source

* Moving all definitions from S...Actions to source

* Moving all definitions from T...Actions to source

* Moving all definitions from W...Actions to source

* Get RTD from ride via a struct method, part 1

* Fix OpenRCT2#13576: Remove unrequired code and casts from sprite export

As not all objects load images in the same order the previous code could end up with sprite index's that were incorrect. There also was no reason to make the code object specific as we can just access the image table directly.

* Move some game actions logic from header to source (OpenRCT2#13571)

* Moving all definitions from B...Actions to source

* Moving all definitions from C...Actions to source

* Moving all definitions from F...Actions to source

* Moving all definitions from G...Actions to source

* Moving all definitions from L...Actions to source

* Moving all definitions from M...Actions to source

* Moving all definitions from N...Actions to source

* Moving all definitions from P...Actions to source

* Merge Localisation/master into OpenRCT2/develop

* Close OpenRCT2#12449: Refactor DUCK_STATE to use strong enum (OpenRCT2#13585)

* Refactor DUCK_STATE to use strong enum

* Merge Localisation/master into OpenRCT2/develop

* Merge Localisation/master into OpenRCT2/develop

* Cmdsprite 2 (OpenRCT2#13590)

* Merge all cmdsprite global state into single struct

* Move MakeEntries into a member function

* Use std::optional for sprite file open

* Move sprite_file_save to a member function

* Make sprite_file_close a member function and rename open

* Remove global variable

* Make Entries a vector

* Make Data a vector

* Use FileStream for Open

* Use FileStream for Save

* Renmae Image Import/Export functions and cleanup

* Extract out common item AddImage

* Simplify SpriteFile::AddImage

* Header and struct cleanup

* Make suggested changes

* Close OpenRCT2#13386: Show a GUI error message if en-GB.txt cannot be loaded

* Fix incorrect formatting of input and output of g2.dat (OpenRCT2#13599)

* Fix incorrect formatting of input and output of g2.dat

* Fix entry offsets and empty data

* Merge Localisation/master into OpenRCT2/develop

* Fix OpenRCT2#13567: Added ability for peeps to stop eating certain food constanly (OpenRCT2#13592)

* Fix OpenRCT2#13567: Cure guests of severe gluttony

Incorrect assumption that bitscanforward itertated over 64 bits meant that food that was previously within the ExtraItemFlags would never get removed from the peeps inventory. bitscanforward function has been replaced with a 64bit version

* Bump network version

* Feature: Add allowed_hosts to plugin section of config

* Update changelog

* Fix typo in changelog

* Merge Localisation/master into OpenRCT2/develop

* Fix: Docker build failure (OpenRCT2#13605)

* Merge Localisation/master into OpenRCT2/develop

* Close OpenRCT2#12451: Remove enum TILE_INSPECTOR_ELEMENT_TYPE (OpenRCT2#13604)

* Close OpenRCT2#12993: Remove hardcoded {SMALLFONT}{BLACK} from tooltips

* Restore extra cheat track pieces for some rides; intended to fix OpenRCT2#13324

Includes:
* Corkscrew Roller Coaster
* Hypercoaster
* Steel Wild Mouse
* Spinning Wild Mouse
* Water Coaster
* Car Ride
* Monster Trucks

Some pieces are incorrectly labelled (log bumps and rotation control toggle),
and need to be investigated further

* Fix incorrect label when using Log Bumps piece on Car Ride

* Enable more cheat pieces for Splash Boats and River Rafts

* Fix incorrect label when using Spinning Control piece on Wild Mouse

* Remove steep slope up access for both Splash Boats and River Rafts

* Fix formatting

* Actually make Spinning control track behave as such for Steel Wild Mouse

* Merge Localisation/master into OpenRCT2/develop

* Mark possibly unused variable as maybe_unused (OpenRCT2#13612)

Co-authored-by: Manuel Vögele <develop@manuel-voegele.de>
Co-authored-by: Michael Steenbeek <m.o.steenbeek@gmail.com>
Co-authored-by: OpenRCT2 git bot <gitbot@openrct2.org>
Co-authored-by: ju-pinheiro <66486603+ju-pinheiro@users.noreply.github.com>
Co-authored-by: evilclownattack <35745597+evilclownattack@users.noreply.github.com>
Co-authored-by: Aaron van Geffen <aaron@aaronweb.net>
Co-authored-by: Duncan <duncans_pumpkin@hotmail.co.uk>
Co-authored-by: Sadret <stephanspengler93@gmail.com>
Co-authored-by: pizza2004 <chad@neejean.org>
Co-authored-by: Łukasz Pękalski <lukasz.pekalski@outlook.com>
Co-authored-by: Tulio Leao <tupaschoal@gmail.com>
Co-authored-by: Richard Fine <richardf@unity3d.com>
Co-authored-by: rpstester <32249806+rpstester@users.noreply.github.com>
Co-authored-by: Hielke Morsink <Broxzier@users.noreply.github.com>
Co-authored-by: adam-bloom <adam-bloom@users.noreply.github.com>
Co-authored-by: maksimdrachov <39975120+maksimdrachov@users.noreply.github.com>
Co-authored-by: Ted John <ted@brambles.org>
Co-authored-by: Ghlen Nagels <ghlen.nagels@protonmail.com>
Co-authored-by: ffrogman <ffrogman@gmail.com>
Co-authored-by: Florian Probst <derbalvald@gmail.com>
Co-authored-by: Nick <eezstreet@live.com>
Co-authored-by: Margen67 <Margen67@users.noreply.github.com>
Co-authored-by: Jamie Quigley <jamie@quigley.xyz>
Co-authored-by: Kevin Singh <kevinsingh.developer@gmail.com>
Co-authored-by: xuxf <31509677+msxuxf@users.noreply.github.com>
Co-authored-by: Cory Sanin <corysanin@outlook.com>
Co-authored-by: Richard Qian <richwiki101@gmail.com>
Gymnasiast added a commit that referenced this pull request Mar 13, 2021
- Feature: [#12110] Add Hybrid Coaster (Rocky Mountain Construction I-Box) track type.
- Feature: [#12999] .sea (RCT Classic) scenarios are now listed in the “New Scenario” dialog.
- Feature: [#13000] objective_options command for console.
- Feature: [#13096] Add Esperanto translation.
- Feature: [#13164] Add 'Objective options' to Cheats menu.
- Change: [#9568] Change lift sounds of Reverser Roller Coaster and Compact Inverted Coaster to better fitting ones.
- Change: [#13160] The lay-out of the Park Cheats tab has been improved.
- Fix: [#1324] Last track piece map selection still visible when placing ride entrance or exit (original bug).
- Fix: [#3200] Close Construction window upon selecting vehicle page.
- Fix: [#4022] Fix Mac cursor offset on launch
- Fix: [#4041] Garbled park option on scenario editor with custom theme.
- Fix: [#4865] Offer an option to disable inhibiting the monitor power.
- Fix: [#5178] Lighting effects cannot be disabled in software mode
- Fix: [#5904] Empty errors on tile inspector base height change.
- Fix: [#6086] Cannot install existing track design with another name.
- Fix: [#6614, #8623] Colours are distorted when using OpenGL with Intel integrated graphics drivers.
- Fix: [#7443] Construction arrows pulse at irregular intervals.
- Fix: [#7518] Water isn't cut down by view clipping tool.
- Fix: [#7748] Tooltips would not timeout for normal UI elements.
- Fix: [#8015] RCT2 files are not found when put into the OpenRCT2 folder.
- Fix: [#8957] Error title missing when building with insufficient funds
- Fix: [#10186] Placing multiple saved rides ignores design name (original bug).
- Fix: [#12368] Desync due to ghost station pieces affecting changing ride settings.
- Fix: [#12940] Windows cause issues with snow drawing.
- Fix: [#13019] Simulated trains sometimes open construction window when they crash.
- Fix: [#13021] Mowed grass and weeds don't show up in extra zoom levels.
- Fix: [#13024] Console cursor does not correctly render at current cursor position.
- Fix: [#13029] Not all Junior Roller Coaster pieces are shown when "Show all track pieces" cheat is enabled.
- Fix: [#13044] Rides in RCT1 saves all have "0 customers per hour".
- Fix: [#13074] Entrance and exit ghosts for mazes not being removed.
- Fix: [#13083] Dialog for renaming conflicting track design crops text out.
- Fix: [#13097] Missing direction arrow for stations
- Fix: [#13098] UI buttons for entrance and exit don't toggle according to them being built.
- Fix: [#13098] Maze can still be constructed while placing entrance and exit (original bug).
- Fix: [#13118] Closing construction window resets ride viewport.
- Fix: [#13129] Missing error message when waiting for train to leave station on the ride measurements graph.
- Fix: [#13138] Fix logical sorting of list windows.
- Fix: [#13158] Cursors are drawn incorrectly in text input fields.
- Fix: [#13222] Vehicle collision causes negative number of passengers (original bug).
- Fix: [#13226, #7280] No error is shown when attempting to load a corrupted save.
- Fix: [#13266] Plugin API: Deleting key of sharedStorage not working.
- Fix: [#13278] Desync caused by ghost tiles changing the ride mode.
- Fix: [#13289] Litter and vomit sometimes not loading with RCT1 saved game or scenario
- Fix: [#13292] Impossible excitement rating requirements with finish building 5 coasters goal
- Improved: [#13023] Made add_news_item console command last argument, assoc, optional.
- Improved: [#13098] Improvements to the maze construction window user interface
- Improved: [#13125] Selecting the RCT2 files now uses localised dialogs.
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants