From 99bd04578e19ace7bfe75e78a4d38457c5f3d275 Mon Sep 17 00:00:00 2001 From: grilledham Date: Tue, 12 Jun 2018 17:24:59 +0100 Subject: [PATCH] added extra functions --- map_gen/shared/random.lua | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/map_gen/shared/random.lua b/map_gen/shared/random.lua index 4e0ad18f..12e9b9ad 100644 --- a/map_gen/shared/random.lua +++ b/map_gen/shared/random.lua @@ -15,19 +15,18 @@ function Random.new(seed1, seed2) return random end -local function get_uint(self) - self.z = 36969 * bit32.band(self.z, 65535) + bit32.rshift(self.z, 16) - self.w = 18000 * bit32.band(self.w, 65535) + bit32.rshift(self.w, 16) - local ret = bit32.lshift(self.z, 16) + self.w - return bit32.band(ret, 4294967295) -end - local e = 1 / (2 ^ 32 + 2) -- return float (0, 1) exclusive function Random.next(self) - local u = get_uint(self) - return (u + 1.0) * e + local z, w = self.z, self.w + z = 36969 * bit32.band(z, 65535) + bit32.rshift(z, 16) + w = 18000 * bit32.band(w, 65535) + bit32.rshift(w, 16) + self.z, self.w = z, w + + local ret = bit32.lshift(z, 16) + w + ret = bit32.band(ret, 4294967295) + return (ret + 1.0) * e end -- returns int [min, max] inclusive @@ -38,4 +37,20 @@ function Random.next_int(self, min, max) return math.floor(u) end +function Random.next_from_point(x, y) + x = 36969 * bit32.band(x, 65535) + bit32.rshift(x, 16) + y = 18000 * bit32.band(y, 65535) + bit32.rshift(y, 16) + + local ret = bit32.lshift(x, 16) + y + ret = bit32.band(ret, 4294967295) + return (ret + 1.0) * e +end + +function Random.next_int_from_point(x, y, min, max) + local u = Random.next_from_point(x, y) + + u = u * (max - min + 1) + min + return math.floor(u) +end + return Random