Files
2026-10-19 20:59:15 +02:00

73 lines
1.2 KiB
C++

#pragma once
#include <stdint.h>
typedef unsigned int uint;
typedef uint8_t byte;
typedef int8_t int8;
typedef int16_t int16;
typedef int32_t int32;
typedef int64_t int64;
typedef uint8_t uint8;
typedef uint16_t uint16;
typedef uint32_t uint32;
typedef uint64_t uint64;
typedef uint8 bool8;
uint world_seed = 0;
class NollaPrng
{
public:
double Seed;
void SetRandomFromWorldSeed(uint s)
{
Seed = s;
if (2147483647.0 <= Seed)
{
Seed = s * 0.5;
}
}
uint NextU()
{
Next();
return Seed * 4.656612875e-10 * 2147483645.0;
}
double Next()
{
int v4 = 0x41a7 * (int)Seed - 0x7FFFFFFF * ((int)Seed / 0x1f31d);
if (v4 <= 0)
{
v4 += 0x7fffffff;
}
Seed = (double)v4;
return Seed / 0x7fffffff;
}
int Random(int a, int b)
{
return a + (int)((double)(b + 1 - a) * Next());
}
};
NollaPrng NewNollaPrng(double seed)
{
NollaPrng rng;
rng.Seed = seed;
rng.Next();
return rng;
}
void SetWorldSeed(uint worldseed)
{
world_seed = worldseed;
}
uint GetWorldSeed()
{
return world_seed;
}