diff --git a/src/scripting/lua_kernel_base.cpp b/src/scripting/lua_kernel_base.cpp index 2af30827476a..42dd8f3824dd 100644 --- a/src/scripting/lua_kernel_base.cpp +++ b/src/scripting/lua_kernel_base.cpp @@ -550,6 +550,7 @@ lua_kernel_base::lua_kernel_base() { "distance_between", &lua_map_location::intf_distance_between }, { "get_in_basis_N_NE", &lua_map_location::intf_get_in_basis_N_NE }, { "get_relative_dir", &lua_map_location::intf_get_relative_dir }, + { "read_direction", &lua_map_location::intf_read_direction }, { nullptr, nullptr } }; diff --git a/src/scripting/lua_map_location_ops.cpp b/src/scripting/lua_map_location_ops.cpp index 7b1af0f60e00..ddd9e90075c0 100644 --- a/src/scripting/lua_map_location_ops.cpp +++ b/src/scripting/lua_map_location_ops.cpp @@ -28,6 +28,17 @@ namespace lua_map_location { +int intf_read_direction(lua_State* L) +{ + map_location::DIRECTION dir = map_location::parse_direction(luaL_checkstring(L, 1)); + if(dir == map_location::NDIRECTIONS) { + lua_pushnil(L); + } else { + lua_push(L, map_location::write_direction(dir)); + } + return 1; +} + /** * Expose map_location::get_direction function to lua * Arg 1: a location diff --git a/src/scripting/lua_map_location_ops.hpp b/src/scripting/lua_map_location_ops.hpp index c8dd64d40e6f..46d31d897ec5 100644 --- a/src/scripting/lua_map_location_ops.hpp +++ b/src/scripting/lua_map_location_ops.hpp @@ -23,6 +23,7 @@ struct lua_State; namespace lua_map_location { +int intf_read_direction(lua_State* L); int intf_get_direction(lua_State*); int intf_vector_sum(lua_State*); int intf_vector_diff(lua_State*);