Argentum Online - Servidor
random_event_generator.h
1 #ifndef RANDOM_EVENT_GENERATOR_H
2 #define RANDOM_EVENT_GENERATOR_H
3 
4 #include <array>
5 #include <cstdlib>
6 #include <random>
7 
8 #define N_DROP_TYPES 4
9 
10 typedef enum {
11  nothing,
12  rand_gold,
13  rand_potion,
14  rand_item,
15  invalid
16 } random_drop_t;
17 
18 typedef struct range_t {
19  float min_value;
20  float max_value;
21 } range_t;
22 
24  private:
25  std::array<random_drop_t, N_DROP_TYPES> events;
26  std::array<range_t, N_DROP_TYPES> range_events;
27  std::random_device rd;
28  std::mt19937 gen;
29  std::uniform_real_distribution<> drops_dist;
30 
37 
38  public:
40  static RandomEventGenerator& get_instance();
47  static random_drop_t roll();
48 
56  static uint16_t random_in(uint16_t min, uint16_t max);
63  static unsigned int rand_idx_in_vec(unsigned int vec_size);
64 
65 };
66 
67 #endif // RANDOM_EVENT_GENERATOR_H
RandomEventGenerator::random_in
static uint16_t random_in(uint16_t min, uint16_t max)
Devuelve un numero entero entre min y max.
Definition: random_event_generator.cpp:72
RandomEventGenerator
Definition: random_event_generator.h:23
range_t
Definition: random_event_generator.h:18
RandomEventGenerator::rand_idx_in_vec
static unsigned int rand_idx_in_vec(unsigned int vec_size)
Devuelve un indice random entre 0 y tamaƱo del vector-1.
Definition: random_event_generator.cpp:79
RandomEventGenerator::roll
static random_drop_t roll()
Devuelve un evento de forma random en base a las probabilidades provistas en el contructor.
Definition: random_event_generator.cpp:61