diff options
Diffstat (limited to 'functions.h')
-rw-r--r-- | functions.h | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/functions.h b/functions.h index 4960eb338..1ea2c9a8e 100644 --- a/functions.h +++ b/functions.h @@ -93,6 +93,21 @@ void NORETURN CDECL error(const char *str, ...); //#define RANDOM_DEBUG + +// Enable this to produce higher quality random numbers. +// Doesn't work with network yet. +//#define MERSENNE_TWISTER + +// Mersenne twister functions +void SeedMT(uint32 seed); +uint32 RandomMT(void); + + +#ifdef MERSENNE_TWISTER + static inline uint32 Random(void) { return RandomMT(); } + uint RandomRange(uint max); +#else + #ifdef RANDOM_DEBUG #define Random() DoRandom(__LINE__, __FILE__) uint32 DoRandom(int line, const char *file); @@ -101,12 +116,18 @@ void NORETURN CDECL error(const char *str, ...); #else uint32 Random(void); uint RandomRange(uint max); - - static inline TileIndex RandomTileSeed(uint32 r) { return TILE_MASK(r); } - static inline TileIndex RandomTile(void) { return TILE_MASK(Random()); } #endif +#endif // MERSENNE_TWISTER + +static inline TileIndex RandomTileSeed(uint32 r) { return TILE_MASK(r); } +static inline TileIndex RandomTile(void) { return TILE_MASK(Random()); } + +#ifdef PLAYER_SEED_RANDOM void InitPlayerRandoms(void); +#endif + + uint32 InteractiveRandom(void); /* Used for random sequences that are not the same on the other end of the multiplayer link */ uint InteractiveRandomRange(uint max); |