From def76edd55d3d320cc3df43fb2b991fe06c71e51 Mon Sep 17 00:00:00 2001 From: ZehM4tt Date: Sun, 18 Jun 2017 11:10:49 +0200 Subject: [PATCH] Ignore UI-only flag in sprite checksum Ignore peep.window_invalidate_flags in sprite checksum to prevent false positivie desync alerts, flag does not affect game state. --- src/openrct2/network/network.h | 2 +- src/openrct2/world/sprite.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/openrct2/network/network.h b/src/openrct2/network/network.h index bdaa0b6bef..3db1fdf910 100644 --- a/src/openrct2/network/network.h +++ b/src/openrct2/network/network.h @@ -56,7 +56,7 @@ extern "C" { // This define specifies which version of network stream current build uses. // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -#define NETWORK_STREAM_VERSION "17" +#define NETWORK_STREAM_VERSION "18" #define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION #ifdef __cplusplus diff --git a/src/openrct2/world/sprite.c b/src/openrct2/world/sprite.c index 8dd82c0d34..efc30d5075 100644 --- a/src/openrct2/world/sprite.c +++ b/src/openrct2/world/sprite.c @@ -212,6 +212,12 @@ const char * sprite_checksum() rct_sprite copy = *sprite; copy.unknown.sprite_left = copy.unknown.sprite_right = copy.unknown.sprite_top = copy.unknown.sprite_bottom = 0; + if (copy.unknown.sprite_identifier == SPRITE_IDENTIFIER_PEEP) { + // We set this to 0 because as soon the client selects a guest the window will remove the + // invalidation flags causing the sprite checksum to be different than on server, the flag does not affect game state. + copy.peep.window_invalidate_flags = 0; + } + if (EVP_DigestUpdate(gHashCTX, ©, sizeof(rct_sprite)) <= 0) { openrct2_assert(false, "Failed to update digest");