Skip to content

Commit

Permalink
Allow mapgen user_config functions to mutate the [generator] config
Browse files Browse the repository at this point in the history
(Also fixed a missing undef in the sample MP cave map)
  • Loading branch information
CelticMinstrel committed Aug 26, 2017
1 parent 8867c39 commit c4d16c5
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
1 change: 1 addition & 0 deletions data/multiplayer/scenarios/Random_Scenario_Cave.cfg
Expand Up @@ -177,5 +177,6 @@ Rb,Rb,Rb,Rb,Rb,Rb,Rb,Rb^Uf,Rb^Ii,Sm,Sm,Uue,Rb^Fetd,Rb^Fdw#enddef
[/generator]
[/multiplayer]

#undef CLEAR_TERRAINS
#undef ROAD_COSTS
#undef PLAYER_CHAMBER
8 changes: 7 additions & 1 deletion src/scripting/mapgen_lua_kernel.cpp
Expand Up @@ -152,9 +152,15 @@ void mapgen_lua_kernel::run_generator(const char * prog, const config & generato
protected_call(1, 1, std::bind(&lua_kernel_base::throw_exception, this, _1, _2));
}

void mapgen_lua_kernel::user_config(const char * prog, const config & generator)
void mapgen_lua_kernel::user_config(const char * prog, config & generator)
{
run_generator(prog, generator);
if(!luaW_toconfig(mState, -1, generator)) {
std::string msg = "expected a string, found a ";
msg += lua_typename(mState, lua_type(mState, -1));
lua_pop(mState, 1);
throw game::lua_error(msg.c_str(),"bad return value");
}
}

std::string mapgen_lua_kernel::create_map(const char * prog, const config & generator, boost::optional<uint32_t> seed) // throws game::lua_error
Expand Down
2 changes: 1 addition & 1 deletion src/scripting/mapgen_lua_kernel.hpp
Expand Up @@ -29,7 +29,7 @@ class mapgen_lua_kernel : public lua_kernel_base {

virtual std::string my_name() { return "Mapgen Lua Kernel"; }

void user_config(const char * prog, const config & generator); // throws game::lua_error
void user_config(const char * prog, config & generator); // throws game::lua_error
std::string create_map(const char * prog, const config & generator, boost::optional<uint32_t> seed); // throws game::lua_error
config create_scenario(const char * prog, const config & generator, boost::optional<uint32_t> seed); // throws game::lua_error

Expand Down

0 comments on commit c4d16c5

Please sign in to comment.