mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-06 03:21:49 +00:00
add biome 'parameters' field
This commit is contained in:
parent
efa27496ab
commit
c3831afd19
4 changed files with 48 additions and 5 deletions
|
|
@ -566,7 +566,7 @@ namespace lua {
|
|||
) {
|
||||
requirefield(L, name, idx);
|
||||
auto value = require_string(L, -1);
|
||||
lua::pop(L);
|
||||
pop(L);
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
@ -575,7 +575,16 @@ namespace lua {
|
|||
) {
|
||||
requirefield(L, name, idx);
|
||||
auto value = tointeger(L, -1);
|
||||
lua::pop(L);
|
||||
pop(L);
|
||||
return value;
|
||||
}
|
||||
|
||||
inline Number require_number_field(
|
||||
lua::State* L, const std::string& name, int idx=-1
|
||||
) {
|
||||
requirefield(L, name, idx);
|
||||
auto value = tonumber(L, -1);
|
||||
pop(L);
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,9 +112,25 @@ static inline BlocksLayers load_layers(
|
|||
}
|
||||
|
||||
static inline Biome load_biome(
|
||||
lua::State* L, const std::string& name, int idx
|
||||
lua::State* L, const std::string& name, uint parametersCount, int idx
|
||||
) {
|
||||
lua::pushvalue(L, idx);
|
||||
|
||||
std::vector<BiomeParameter> parameters(parametersCount);
|
||||
lua::requirefield(L, "parameters");
|
||||
if (lua::objlen(L, -1) < parametersCount) {
|
||||
throw std::runtime_error(
|
||||
std::to_string(parametersCount)+" parameters expected");
|
||||
}
|
||||
for (uint i = 1; i <= parametersCount; i++) {
|
||||
lua::rawgeti(L, i);
|
||||
float value = lua::require_number_field(L, "value");
|
||||
float weight = lua::require_number_field(L, "weight");
|
||||
parameters.push_back(BiomeParameter {value, weight});
|
||||
lua::pop(L);
|
||||
}
|
||||
lua::pop(L);
|
||||
|
||||
BlocksLayers groundLayers;
|
||||
BlocksLayers seaLayers;
|
||||
try {
|
||||
|
|
@ -124,7 +140,11 @@ static inline Biome load_biome(
|
|||
throw std::runtime_error("biome "+name+": "+err.what());
|
||||
}
|
||||
lua::pop(L);
|
||||
return Biome {name, std::move(groundLayers), std::move(seaLayers)};
|
||||
return Biome {
|
||||
name,
|
||||
std::move(parameters),
|
||||
std::move(groundLayers),
|
||||
std::move(seaLayers)};
|
||||
}
|
||||
|
||||
std::unique_ptr<GeneratorScript> scripting::load_generator(
|
||||
|
|
@ -141,7 +161,7 @@ std::unique_ptr<GeneratorScript> scripting::load_generator(
|
|||
uint biomeParameters = lua::get_integer_field(L, "biome_parameters", 0, 0, 16);
|
||||
uint seaLevel = lua::get_integer_field(L, "sea_level", 0, 0, CHUNK_H);
|
||||
lua::requirefield(L, "biome");
|
||||
Biome biome = load_biome(L, "default", -1);
|
||||
Biome biome = load_biome(L, "default", biomeParameters, -1);
|
||||
lua::pop(L);
|
||||
|
||||
lua::pop(L);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue