* Remove focus union and replace with typed focus
This if for the NSF to allow for CoordsXYZ
* Remove legacy structures
* Rework viewport_create to deduplicate logic
* Simplify yet further
* Apply review comments
* Remove intermediate
* Support large map sizes
* Fix top spin painting
* Fix crooked house
* Increase bb size
* Decrease limit back
* Clang format
* Remove asserts and apply review comments
* Fix rebase mistake
Co-authored-by: Ted John <ted@brambles.org>
* Remove viewport pointer from get_map_coordinates_from_pos
* Removed viewport from get_window
* Return a InteractionInfo from get_map_coord...
* Remove viewport_interaction_info struct
* Add Entity union to simplify code
* Name the enum used for viewport interaction
* Simplify functions further by returning the info struct
* Add default switches
* Reduce the use of rct_sprite
* Pass the correct types in S4 importer
* Add additional nullptr checks
* Simplify the viewport interaction
* Apply review comments
* Small cleanup of GetEntity
* Fix test paint
std::optional is supported by Xcode 10. The non-polyfill variant was already used in our code, so this is not likely to break anything that wasn't broken before.
* Use ScreenCoordsXY for windows/Footpath
- Refactor `place_park_entrance_get_map_position()` to receive `ScreenCoordsXY` and return `CoordsXYZD`
- Refactor `sub_68A15E()` to receive `ScreenCoordsXY` and return `CoordsXY`. Some of its usage are narrowing the result on purpose, as same variable is used for contexts where `int16_t` is still a hard requirement.
* Properly increment for big Z and use LOCATION_NULL
* Refactor get_map_coordinates_from_pos_window
This changes get_map_coordinates_from_pos_window to use the
ScreenCoordsXY and CoordsXY structs instead of bare ints as suggested
in #10065
* Use default constructor.
The default constructor initializes the coordinates to (0, 0) anyway so
doing that explicitly is redundant.
* Fix parentheses
* Fix formatting issues
* Manually fix clang formatting
Apparently my version of clang-format doesn't behave properly so I am
manually making the changes that CI suggests.