You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw/components/lua_ui/content.cpp

26 lines
923 B
C++

#include "content.hpp"
#include "element.hpp"
namespace LuaUi
{
sol::protected_function loadContentConstructor(LuaUtil::LuaState* state)
{
sol::protected_function loader = state->loadInternalLib("content");
sol::set_environment(state->newInternalLibEnvironment(), loader);
sol::table metatable = LuaUtil::LuaState::throwIfError(loader()).get<sol::table>();
if (metatable["new"].get_type() != sol::type::function)
throw std::logic_error("Expected function");
return metatable["new"].get<sol::protected_function>();
}
bool isValidContent(const sol::object& object)
{
if (object.is<Element>())
return true;
if (object.get_type() != sol::type::table)
return false;
sol::table table = object;
return table.traverse_get<sol::optional<bool>>(sol::metatable_key, "__Content").value_or(false);
}
}