diff --git a/data/lua/wml-tags.lua b/data/lua/wml-tags.lua index 36b8dd8fd082..902c3ab9e334 100644 --- a/data/lua/wml-tags.lua +++ b/data/lua/wml-tags.lua @@ -1322,6 +1322,10 @@ function wml_actions.disallow_end_turn(cfg) wesnoth.allow_end_turn(false) end +function wml_actions.clear_menu_item(cfg) + wesnoth.clear_menu_item(cfg.id) +end + function wml_actions.set_menu_item(cfg) wesnoth.set_menu_item(cfg.id, cfg) end diff --git a/src/game_events/action_wml.cpp b/src/game_events/action_wml.cpp index 993fa36646b9..5e524cd96ab1 100644 --- a/src/game_events/action_wml.cpp +++ b/src/game_events/action_wml.cpp @@ -555,19 +555,6 @@ WML_HANDLER_FUNCTION(clear_global_variable,/**/,pcfg) verify_and_clear_global_variable(pcfg); } -WML_HANDLER_FUNCTION(clear_menu_item, /*event_info*/, cfg) -{ - const std::string ids = cfg["id"].str(); - BOOST_FOREACH(const std::string& id, utils::split(ids, ',', utils::STRIP_SPACES)) { - if(id.empty()) { - WRN_NG << "[clear_menu_item] has been given an empty id=, ignoring" << std::endl; - continue; - } - - resources::gamedata->get_wml_menu_items().erase(id); - } -} - WML_HANDLER_FUNCTION(color_adjust, /*event_info*/, cfg) { game_display &screen = *resources::screen; diff --git a/src/scripting/game_lua_kernel.cpp b/src/scripting/game_lua_kernel.cpp index 2c412aed448e..8538a4c30c20 100644 --- a/src/scripting/game_lua_kernel.cpp +++ b/src/scripting/game_lua_kernel.cpp @@ -783,6 +783,20 @@ int game_lua_kernel::intf_set_menu_item(lua_State *L) return 0; } +int game_lua_kernel::intf_clear_menu_item(lua_State *L) +{ + std::string ids(luaL_checkstring(L, 1)); + BOOST_FOREACH(const std::string& id, utils::split(ids, ',', utils::STRIP_SPACES)) { + if(id.empty()) { + WRN_LUA << "[clear_menu_item] has been given an empty id=, ignoring" << std::endl; + continue; + } + + gamedata().get_wml_menu_items().erase(id); + } + return 0; +} + int game_lua_kernel::intf_shroud_op(lua_State *L, bool place_shroud) { vconfig cfg = luaW_checkvconfig(L, 1); @@ -3069,6 +3083,7 @@ game_lua_kernel::game_lua_kernel(const config &cfg, CVideo * video, game_state & { "add_tile_overlay", boost::bind(&game_lua_kernel::intf_add_tile_overlay, this, _1) }, { "allow_end_turn", boost::bind(&game_lua_kernel::intf_allow_end_turn, this, _1) }, { "allow_undo", boost::bind(&game_lua_kernel::intf_allow_undo, this, _1) }, + { "clear_menu_item", boost::bind(&game_lua_kernel::intf_clear_menu_item, this, _1) }, { "clear_messages", boost::bind(&game_lua_kernel::intf_clear_messages, this, _1) }, { "delay", boost::bind(&game_lua_kernel::intf_delay, this, _1) }, { "extract_unit", boost::bind(&game_lua_kernel::intf_extract_unit, this, _1) }, diff --git a/src/scripting/game_lua_kernel.hpp b/src/scripting/game_lua_kernel.hpp index f3b41b72c444..aae447567b7d 100644 --- a/src/scripting/game_lua_kernel.hpp +++ b/src/scripting/game_lua_kernel.hpp @@ -107,6 +107,7 @@ class game_lua_kernel : public lua_kernel_base int intf_extract_unit(lua_State *L); int intf_find_vacant_tile(lua_State *L); int intf_float_label(lua_State *L); + int intf_clear_menu_item(lua_State *L); int intf_set_menu_item(lua_State *L); int intf_shroud_op(lua_State *L, bool place_shroud); int intf_simulate_combat(lua_State *L);