Ghost elements are notoriously a reason of network desyncs, because they
don't get transferred over network. They are meant to be local only and
disregarded by any logic, but it is not yet the case in many places.
Upon saving, we *remove* all the ghost elements (by calling
`scenario_fix_ghosts`), based on assumption they can only be caused by
local interaction. Testing has shown there are `sv6`s in the wild that
have elements marked as ghosts and this could lead to a situation where
we strip away parts of the park. This also causes network desyncs for
reason stated above.
As we strip elements with ghost flag from saves anyway, it should be
safe to assume none of our saves introduce ghosts and this issue is
limited to hacked parks only. One example of such park is [Cocopa
Bay](http://www.nedesigns.com/park/3473/cocopa-bay/).
This change removes the flag on all map elements while importing. This
is much less invasive than removing all ghost elements on importing, as
they may contain some actual data. This ~~fixes~~ hides the desync that
could be seen in the Cocopa Bay park.
As this doesn't change any in-game logic, no network version update is
necessary.
#5094
The consideration of tall rides was probably not working properly as it was doing a straight comparrison of a flags variable.
This instead removes it as it already checks if the ride has ratings anyway. I've also added a status check so that guests do not attempt to walk to a ride far away that isn't open.
Because of a comment on a diff in #4878 asking for clearer and more consistent type usage. What this PR changes:
No unsigned long long found
(signed) long long -> sint64
unsigned int -> uint32
(signed) int -> sint32
(signed) long -> sint32
unsigned short -> uint16
(signed) short -> sint16
unsigned char -> uint8
No signed chars found
plain char is implementation-defined, so I left those in.
This adds 3 rules that clang-format uses when ordering include files:
- common.h is assigned priority -1
- Incudes using <> is given priority 1
- Includes using "" is given priority 2
It also disables putting the "main" file first (the .h/.hpp with the
same name as the .c/.cpp"
#5074
[ci skip]
This way the last remaining uses of int could be replaced with sint32 as
well. Before this change there was a circular dependancy which made the
types unknown in diagnostic.h.