12 #ifndef RANDOM_FUNC_HPP 
   13 #define RANDOM_FUNC_HPP 
   15 #if defined(__APPLE__) 
   17   #define Random OTTD_Random 
   28   uint32 
Next(uint32 limit);
 
   56   _random = storage.random;
 
   57   _interactive_random = storage.interactive_random;
 
   63     #define OTTD_Random() DoRandom(__LINE__, __FILE__) 
   65     #define Random() DoRandom(__LINE__, __FILE__) 
   67   uint32 DoRandom(
int line, 
const char *file);
 
   68   #define RandomRange(limit) DoRandomRange(limit, __LINE__, __FILE__) 
   69   uint32 DoRandomRange(uint32 limit, 
int line, 
const char *file);
 
   71   static inline uint32 Random()
 
   73     return _random.
Next();
 
   85     return _random.
Next(limit);
 
   89 static inline uint32 InteractiveRandom()
 
   91   return _interactive_random.
Next();
 
   94 static inline uint32 InteractiveRandomRange(uint32 limit)
 
   96   return _interactive_random.
Next(limit);
 
  114 static inline bool Chance16I(
const uint a, 
const uint b, 
const uint32 r)
 
  117   return (((uint16)r * b + b / 2) >> 16) < a;
 
  131   #define Chance16(a, b) Chance16I(a, b, DoRandom(__LINE__, __FILE__)) 
  133 static inline bool Chance16(
const uint a, 
const uint b)
 
  155   #define Chance16R(a, b, r) (r = DoRandom(__LINE__, __FILE__), Chance16I(a, b, r)) 
  157 static inline bool Chance16R(
const uint a, 
const uint b, uint32 &r)