summaryrefslogtreecommitdiff
path: root/src/core/random_func.hpp
diff options
context:
space:
mode:
authorskidd13 <skidd13@openttd.org>2007-11-21 19:13:38 +0000
committerskidd13 <skidd13@openttd.org>2007-11-21 19:13:38 +0000
commit83601671c7b6aca820b3d55ced8ba30d0c82b4b5 (patch)
treee5365f6350e2ea95f1048090f341a3d4c533c9e8 /src/core/random_func.hpp
parentd53bfd8f2fea259e136286515b1801aeea0547dc (diff)
downloadopenttd-83601671c7b6aca820b3d55ced8ba30d0c82b4b5.tar.xz
(svn r11488) -Codechange: Spilt the random functions out to seperate file
-Codechange: Make the mersenne twister more readable -Codechange: Unify the seeding process of random
Diffstat (limited to 'src/core/random_func.hpp')
-rw-r--r--src/core/random_func.hpp234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/core/random_func.hpp b/src/core/random_func.hpp
new file mode 100644
index 000000000..2169c11fb
--- /dev/null
+++ b/src/core/random_func.hpp
@@ -0,0 +1,234 @@
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */
+/* $Id$ */
+
+/** @file random_func.h */
+
+#ifndef RANDOM_FUNC_HPP
+#define RANDOM_FUNC_HPP
+
+/**************
+ * Warning: DO NOT enable this unless you understand what it does
+ *
+ * If enabled, in a network game all randoms will be dumped to the
+ * stdout if the first client joins (or if you are a client). This
+ * is to help finding desync problems.
+ *
+ * Warning: DO NOT enable this unless you understand what it does
+ **************/
+
+//#define RANDOM_DEBUG
+
+
+// Enable this to produce higher quality random numbers.
+// Doesn't work with network yet.
+// #define MERSENNE_TWISTER
+
+void SetRandomSeed(uint32 seed);
+#ifdef RANDOM_DEBUG
+ #define Random() DoRandom(__LINE__, __FILE__)
+ uint32 DoRandom(int line, const char *file);
+ #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
+ uint DoRandomRange(uint max, int line, const char *file);
+#else
+ uint32 Random();
+ uint RandomRange(uint max);
+#endif
+
+uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
+uint InteractiveRandomRange(uint max);
+
+#endif /* RANDOM_FUNC_HPP */