diff --git a/apps/openmw/mwlua/types/container.cpp b/apps/openmw/mwlua/types/container.cpp index b603b6d3f4..ccbbc74625 100644 --- a/apps/openmw/mwlua/types/container.cpp +++ b/apps/openmw/mwlua/types/container.cpp @@ -1,5 +1,9 @@ #include "types.hpp" +#include + +#include + #include "../luabindings.hpp" namespace MWLua @@ -13,6 +17,21 @@ namespace MWLua [](const LObject& o) { containerPtr(o); return Inventory{o}; }, [](const GObject& o) { containerPtr(o); return Inventory{o}; } ); - } + //container["capacity"] = [](const Object& o) { + //const MWWorld::Class& cls = o.ptr().getClass(); + //return cls.getCapacity(o); + //}; + const MWWorld::Store* store = &MWBase::Environment::get().getWorld()->getStore().get(); + container["record"] = sol::overload( + [](const Object& obj) -> const ESM::Container* { return obj.ptr().get()->mBase; }, + [store](const std::string& recordId) -> const ESM::Container* { return store->find(recordId); }); + sol::usertype record = context.mLua->sol().new_usertype("ESM3_Container"); + record[sol::meta_function::to_string] = [](const ESM::Container& rec) -> std::string { return "ESM3_Container[" + rec.mId + "]"; }; + record["id"] = sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mId; }); + record["name"] = sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mName; }); + record["model"] = sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mModel; }); + record["mwscript"] = sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mScript; }); + record["weight"] = sol::readonly_property([](const ESM::Container& rec) -> float { return rec.mWeight; }); + } }