This commit fixes the game command set_land_ownership missing a land
rights recount call. This would cause problems when the user changes
land ownership with the sandbox mode tools.
This creates a checksum (SHA1) every so often on server and sends this
value together with PRNG seed for client to check it has still not
desynced.
It's useful to detect a desync early on, as PRNG seeds may remain
unchanged for some more time, while damage may have already been caused.
* Fix conflict with disable plant aging cheat
* Allow chain lift on any piece
* Keep chain toggled while building
* Ignore current chain lift state when cheat enabled
* Update string ids to one not already used
* Implement command for toggling cheat
* Allow chain on steep tracks when cheat is enabled
* Add checkbox for chain cheat
* Fix spacing
* Send cheat over network
* Change label for checkbox
* Replaced tabs with spaces
Abstracts all socket code into a new class TcpSocket which is only exposed by a light interface, ITcpSocket. This now means that platform specific headers like winsock2.h and sys/socket.h do not have to be included in OpenRCT2 header files reducing include load and other issues.
Do this by cheating a little: create a map with count of clients using
given username and increment it each time such a username is
encountered. This yields very similar results to actually counting users
holding given name, but saves all the error-prone string parsing.
This change also fixes passworded servers not working properly, as
strlen() was getting called on something that was not guaranteed to be
null-terminated string when signing the token.
`send()` can only write to connected sockets [1]. In case where client
drops out, a socket may become closed by OS but we can still enqueue
packets for its connection and eventually call `send()`, which will
generate a SIGPIPE and shut the server down, because there was no
`MSG_NOSIGNAL` set.
This commit makes sure `MSG_NOSIGNAL` is used on Linux.
[1] http://linux.die.net/man/2/send
Mostly style fixes, includes minor change to make sure spinner's down
button gets shown, update to string IDs, network version and making sure
correct string gets selected based on car count.