From 043c3c8b0690d2954979d0a35010611038540796 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 14 May 2009 12:08:24 +0000 Subject: [PATCH] (svn r16305) -Codechange: force-enable extra sync checking when random debugging is enable and give the calling location of Chance16(R) instead of the Random call within those functions. --- src/core/random_func.hpp | 8 ++++++++ src/network/network_internal.h | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/random_func.hpp b/src/core/random_func.hpp index 811c53b559..9d1d585ae5 100644 --- a/src/core/random_func.hpp +++ b/src/core/random_func.hpp @@ -135,10 +135,14 @@ static FORCEINLINE bool Chance16I(const uint a, const uint b, const uint32 r) * @param b The denominator of the fraction * @return True with (a/b) probability */ +#ifdef RANDOM_DEBUG + #define Chance16(a, b) Chance16I(a, b, DoRandom(__LINE__, __FILE__)) +#else static FORCEINLINE bool Chance16(const uint a, const uint b) { return Chance16I(a, b, Random()); } +#endif /* RANDOM_DEBUG */ /** * Flips a coin with a given probability and saves the randomize-number in a variable. @@ -155,10 +159,14 @@ static FORCEINLINE bool Chance16(const uint a, const uint b) * @param r The variable to save the randomize-number from Random() * @return True in (a/b) percent */ +#ifdef RANDOM_DEBUG + #define Chance16R(a, b, r) (r = DoRandom(__LINE__, __FILE__), Chance16I(a, b, r)) +#else static FORCEINLINE bool Chance16R(const uint a, const uint b, uint32 &r) { r = Random(); return Chance16I(a, b, r); } +#endif /* RANDOM_DEBUG */ #endif /* RANDOM_FUNC_HPP */ diff --git a/src/network/network_internal.h b/src/network/network_internal.h index 48aaa05306..2f743775de 100644 --- a/src/network/network_internal.h +++ b/src/network/network_internal.h @@ -18,6 +18,7 @@ #include "../command_type.h" +#ifdef RANDOM_DEBUG /** * If this line is enable, every frame will have a sync test * this is not needed in normal games. Normal is like 1 sync in 100 @@ -27,13 +28,14 @@ * option enabled to make it to work. If one of the two has it disabled * nothing will happen. */ -//#define ENABLE_NETWORK_SYNC_EVERY_FRAME +#define ENABLE_NETWORK_SYNC_EVERY_FRAME /** * In theory sending 1 of the 2 seeds is enough to check for desyncs * so in theory, this next define can be left off. */ -//#define NETWORK_SEND_DOUBLE_SEED +#define NETWORK_SEND_DOUBLE_SEED +#endif /* RANDOM_DEBUG */ enum MapPacket { MAP_PACKET_START,