Implements control over lua random numbers
This commit is contained in:
parent
1205856d00
commit
cc375bba4e
|
@ -23,6 +23,7 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::mt19937 generator;
|
static std::mt19937 generator;
|
||||||
|
static std::mt19937 map_generator;
|
||||||
static std::uniform_int_distribution<int> distribution(0, INT_MAX);
|
static std::uniform_int_distribution<int> distribution(0, INT_MAX);
|
||||||
|
|
||||||
extern "C" void
|
extern "C" void
|
||||||
|
@ -37,3 +38,16 @@ bh_rand(void)
|
||||||
{
|
{
|
||||||
return distribution(generator);
|
return distribution(generator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void
|
||||||
|
bh_map_srand(unsigned int seed)
|
||||||
|
{
|
||||||
|
map_generator.seed(seed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" unsigned int
|
||||||
|
bh_map_rand(void)
|
||||||
|
{
|
||||||
|
return distribution(map_generator);
|
||||||
|
}
|
||||||
|
|
|
@ -23,3 +23,9 @@ bh_srand(unsigned int);
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
bh_rand(void);
|
bh_rand(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
bh_map_srand(unsigned int);
|
||||||
|
|
||||||
|
unsigned int
|
||||||
|
bh_map_rand(void);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local room_builder = require "maproombuilder"
|
local room_builder = require "maproombuilder"
|
||||||
local module = {}
|
local module = {}
|
||||||
local random = math.random
|
local random = map_random
|
||||||
|
|
||||||
local textures = {
|
local textures = {
|
||||||
"Items/Chest0.png",
|
"Items/Chest0.png",
|
||||||
|
|
|
@ -5,8 +5,8 @@ local chest_gen = require "chestgen"
|
||||||
|
|
||||||
-- Setting up some functions
|
-- Setting up some functions
|
||||||
local time = os.time
|
local time = os.time
|
||||||
local random = math.random
|
local random = map_random
|
||||||
local randomseed = math.randomseed
|
local randomseed = map_randomseed
|
||||||
|
|
||||||
-- CONSTANTS
|
-- CONSTANTS
|
||||||
local UP = 1
|
local UP = 1
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
-- FUNCTIONS
|
-- FUNCTIONS
|
||||||
local random = math.random
|
local random = map_random
|
||||||
|
|
||||||
-- CONSTANTS
|
-- CONSTANTS
|
||||||
local UP = 1
|
local UP = 1
|
||||||
|
@ -536,7 +536,7 @@ function module.load_textures(map)
|
||||||
|
|
||||||
local seed = get_random_seed(CURRENT_LEVEL);
|
local seed = get_random_seed(CURRENT_LEVEL);
|
||||||
info("Map room random seed: " .. seed)
|
info("Map room random seed: " .. seed)
|
||||||
math.randomseed(seed)
|
map_randomseed(seed)
|
||||||
local xo = (random(3) - 1) * 112
|
local xo = (random(3) - 1) * 112
|
||||||
local yo = (random(8)) * 48
|
local yo = (random(8)) * 48
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local room_builder = require "maproombuilder"
|
local room_builder = require "maproombuilder"
|
||||||
local module = {}
|
local module = {}
|
||||||
local random = math.random
|
local random = map_random
|
||||||
|
|
||||||
local texturePaths = {
|
local texturePaths = {
|
||||||
aquatic0 = "Characters/Aquatic0.png",
|
aquatic0 = "Characters/Aquatic0.png",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local room_builder = require "maproombuilder"
|
local room_builder = require "maproombuilder"
|
||||||
local module = {}
|
local module = {}
|
||||||
local random = math.random
|
local random = map_random
|
||||||
|
|
||||||
local textures = {
|
local textures = {
|
||||||
"Objects/Trap1.png",
|
"Objects/Trap1.png",
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "item_builder.h"
|
#include "item_builder.h"
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
|
#include "bh_random.h"
|
||||||
|
|
||||||
static
|
static
|
||||||
lua_State* load_lua_state(void)
|
lua_State* load_lua_state(void)
|
||||||
|
@ -475,6 +476,22 @@ l_get_random_seed(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
l_set_random_seed(lua_State *L)
|
||||||
|
{
|
||||||
|
unsigned int seed = (unsigned int) luaL_checkinteger(L, 1);
|
||||||
|
bh_map_srand(seed);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
l_get_random(lua_State *L)
|
||||||
|
{
|
||||||
|
unsigned int max = (unsigned int) luaL_checkinteger(L, 1);
|
||||||
|
lua_pushnumber(L, (bh_map_rand() % max) + 1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static Map*
|
static Map*
|
||||||
generate_map(unsigned int level, const char *file, GameMode gameMode, SDL_Renderer *renderer)
|
generate_map(unsigned int level, const char *file, GameMode gameMode, SDL_Renderer *renderer)
|
||||||
{
|
{
|
||||||
|
@ -534,6 +551,12 @@ generate_map(unsigned int level, const char *file, GameMode gameMode, SDL_Render
|
||||||
lua_pushcfunction(L, l_get_random_seed);
|
lua_pushcfunction(L, l_get_random_seed);
|
||||||
lua_setglobal(L, "get_random_seed");
|
lua_setglobal(L, "get_random_seed");
|
||||||
|
|
||||||
|
lua_pushcfunction(L, l_set_random_seed);
|
||||||
|
lua_setglobal(L, "map_randomseed");
|
||||||
|
|
||||||
|
lua_pushcfunction(L, l_get_random);
|
||||||
|
lua_setglobal(L, "map_random");
|
||||||
|
|
||||||
lua_pushinteger(L, level);
|
lua_pushinteger(L, level);
|
||||||
lua_setglobal(L, "CURRENT_LEVEL");
|
lua_setglobal(L, "CURRENT_LEVEL");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue