* Eliminate unnecessary abstraction for path finding
* Pass the goal to ChooseDirection instead of using globals
* Remove gPeepPathFindGoalPosition and pass it by parameter instead
* Remove _peepPathFindIsStaff and make ignoring banners explicit
* Code style and naming fixups
* Apply clang-format
* Add comment specifying to why it does not ignore banners
* Apply review comments
* Add `STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE`
* Add `STR_ERR_TRACK_ON_THIS_TILE_NEEDS_WATER`
* Return existing `GameAction::Result`
* Add `STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE`
I am open to suggestions for a different message!
Originally this was going to be STR_ERR_WRONG_STAFF_TYPE
but I thought that was confusing because the game
action arguments do not specify a staff type. We
want it to mean "the staff ID you specified is the
wrong StaffType for this game action".
* Refactor `StaffSetColour()` to return `Result`
* Remove unnecessary arguments when `Status` is `Ok`
* Refactor `SwapTileElements()` to return `Result`
Also add STR_ERR_CANT_SWAP_TILE_ELEMENT_WITH_ITSELF
* Format code
* Use `STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE` in title
* Format code using Github web editor
* Format indentation
Should fix [#21039 ](https://github.com/OpenRCT2/OpenRCT2/issues/21039).
As it is explained in the issue, the outline and inset code would not respect the DPI bounds in the drawing process by accessing e.g. `*(dst + 1)` to draw an outline, in this case to the right.
#### Approach
I approached this issue by creating a function `GetPixel()` in `TTFSurface` that would return a value if the given x and y coordinates is a part of a TTF text, else 0.
In the for loop, iterating through the TTF text, the if condition
```
if (surface->GetPixel(xx + srcX_start + 1, yy + srcY_start)
|| surface->GetPixel(xx + srcX_start - 1, yy + srcY_start)
|| surface->GetPixel(xx + srcX_start, yy + srcY_start + 1)
|| surface->GetPixel(xx + srcX_start, yy + srcY_start - 1))
```
checks if the coordinates **(xx, yy)** is an outline of a text. the writing bounds. Adding `srcX_start`, which is 0 or `-skipX` if `skipX < 0`, when calling `GetPixel()`, would shift the pixel access to the correct position, where the text begins on the surface. The same is done for the Y axis. (Not having this would lead to the outlines/insets not moving with the text when the window with the TTF text moves)
* Added API for getAllPlugins
Added functionality to the Scripting API to allow Contexts to return a list of all registered plugins.
* Fixed naming conventions, returning list of authors
Changed function names to follow get/set convention. Removed unnecessary copies of shared pointers, now using auto instead. Changed the functionality to return an array of authors instead of a string.
* Added changelog entry
Also added myself to list of contributors
* Moved all functionality to ScPlugin
Created a ScPlugin class and moved the current getPlugins functionality there.
* Changed from method to property
Function names now match the get/set convention for properties. Also did some code cleanup.
* Update copyright
* Bump plugin version
---------
Co-authored-by: Tulio Leao <tupaschoal@gmail.com>