Name various fields and constants related to peeps. This includes:
- Flags for flashing peeps in map window
- Animation frames for picked up peeps
- Function checking if peep should start to fall
- Special sprite handling for slide boards and lawn mowers
- Created array for peep sprite entries, renamed some variables and constants
Compiler only guarantees proper accesses to variables when using
variable's native type or `char` (i.e. single byte type) [1].
This commit fixes violations of this rule. In most cases changing code
to a simple cast was enough, some required a bit deeper modifications.
This fixes#2596.
[1] http://blog.qt.io/blog/2011/06/10/type-punning-and-strict-aliasing/
Issue was caused by not clearing the word var_34 but instead only the byte var_34. This caused track_progress (word var_34) to become a very large negative number that would be interpreted as a valid track_progress. This would eventually end up reading invalid memory.
- exit and quit commands are aliased to "hide"
- value of the command was being set to a constant value and could not be freed
- updated command value to use a freeable value
Switch to using manhattan distance to calculate distance. Also changed
starting closestDistance to UINT_MAX and removed ternary check because it is not needed.
This makes sure that shared library built with MinGW toolchain is linked
statically to *all* its dependencies, including libc, libstdc++, libsdl2
and all the others. This allows producing of working `openrct2.dll` by
cross-compiling.
I hit a bug with libcrypto, a dependency of libssl, which in turn is a
dependency of curl, which creates a `DllMain` entrypoint for static lib
too, but since we don't do anything in ours, this should be safe.
I have only had chance to try it out when cross-compiling, ideally it
should be tested under Cygwin/MSYS too, but it is too bothersome to
setup for me.