World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура Random

#include <Random.h>

Открытые члены

 Random ()
 
void SetRange (int min, int max)
 
double GetRandom ()
 
int GetInRange ()
 
void Initialize (int seed)
 

Открытые атрибуты

double field_0 [5]
 
int min
 
int range
 

Подробное описание

См. определение в файле Random.h строка 5

Конструктор(ы)

◆ Random()

Random::Random ( )
inline

См. определение в файле Random.h строка 7

7  {
8  Initialize(0x5CCE1E47u);
9  min = 0;
10  range = 99;
11  }

Перекрестные ссылки Initialize() и min.

+ Граф вызовов:

Методы

◆ SetRange()

void Random::SetRange ( int  min,
int  max 
)

См. определение в файле Random.cpp строка 8

8  {
9  this->min = min;
10  this->range = max - min;
11 }

Перекрестные ссылки min.

Используется в _46BFFA_update_spell_fx() и SpellFxRenderer::RenderAsSprite().

+ Граф вызова функции:

◆ GetRandom()

double Random::GetRandom ( )

См. определение в файле Random.cpp строка 14

14  {
15  this->field_0[3] = this->field_0[2];
16  this->field_0[2] = this->field_0[1];
17  this->field_0[1] = this->field_0[0];
18  double v3 = this->field_0[3] * 1492.0 +
19  this->field_0[2] * 1776.0 +
20  this->field_0[3] * 2111111111.0 +
21  this->field_0[0] * 5115.0 +
22  this->field_0[4];
23  this->field_0[0] = v3 - floor(v3);
24  this->field_0[4] = floor(v3) * 2.328306436538696e-10;
25  return this->field_0[0];
26 }

Перекрестные ссылки field_0.

Используется в SpellFxRenderer::_4A7F74(), GetInRange() и Initialize().

+ Граф вызова функции:

◆ GetInRange()

int Random::GetInRange ( )

См. определение в файле Random.cpp строка 28

28  {
29  float v2 = GetRandom() * (double)this->range;
30  int floored_random = bankersRounding(v2);
31  if (floored_random >= this->range) floored_random = this->range;
32  return floored_random + this->min;
33 }

Перекрестные ссылки bankersRounding(), GetRandom(), min и range.

Используется в _46BFFA_update_spell_fx() и SpellFxRenderer::RenderAsSprite().

+ Граф вызовов:
+ Граф вызова функции:

◆ Initialize()

void Random::Initialize ( int  seed)

См. определение в файле Random.cpp строка 36

36  {
37  int v6; // edi@5
38 
39  unsigned int v2 = seed;
40  if (!seed) v2 = -1;
41  for (int i = 0; i < 5; i++) {
42  unsigned int v5 = (((v2 << 13) ^ v2) >> 17) ^ (v2 << 13) ^ v2;
43  v2 = 32 * v5 ^ v5;
44  this->field_0[i] = (double)v2 * 2.328306436538696e-10;
45  }
46 
47  v6 = 19;
48  do {
49  GetRandom();
50  --v6;
51  } while (v6);
52 }

Перекрестные ссылки field_0 и GetRandom().

Используется в Random().

+ Граф вызовов:
+ Граф вызова функции:

Данные класса

◆ field_0

double Random::field_0[5]

См. определение в файле Random.h строка 18

Используется в GetRandom() и Initialize().

◆ min

int Random::min

См. определение в файле Random.h строка 19

Используется в GetInRange(), Random() и SetRange().

◆ range

int Random::range

См. определение в файле Random.h строка 20

Используется в GetInRange().


Объявления и описания членов структур находятся в файлах:
Random::field_0
double field_0[5]
Definition: Random.h:18
Random::min
int min
Definition: Random.h:19
Random::range
int range
Definition: Random.h:20
Random::GetRandom
double GetRandom()
Definition: Random.cpp:14
bankersRounding
int bankersRounding(const FloatType &value)
Definition: OurMath.h:98
Random::Initialize
void Initialize(int seed)
Definition: Random.cpp:36
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
range
GLenum GLint * range
Definition: SDL_opengl_glext.h:1872