From 15df41f45932432c5dc897952c4dc819ee93bf70 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Fri, 10 Feb 2023 02:56:20 +0300 Subject: [PATCH] Fix Lua ingredient bindings --- apps/openmw/mwlua/types/ingredient.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwlua/types/ingredient.cpp b/apps/openmw/mwlua/types/ingredient.cpp index bbf2fc700e..f230c8cdd6 100644 --- a/apps/openmw/mwlua/types/ingredient.cpp +++ b/apps/openmw/mwlua/types/ingredient.cpp @@ -1,6 +1,8 @@ #include "types.hpp" #include +#include +#include #include @@ -16,17 +18,23 @@ namespace MWLua { void addIngredientBindings(sol::table ingredient, const Context& context) { + auto vfs = MWBase::Environment::get().getResourceSystem()->getVFS(); + const MWWorld::Store* store = &MWBase::Environment::get().getWorld()->getStore().get(); ingredient["record"] = sol::overload( [](const Object& obj)-> const ESM::Ingredient* { return obj.ptr().get()->mBase; }, [store](const std::string& recordID)-> const ESM::Ingredient* {return store->find(recordID); }); sol::usertype record = context.mLua->sol().new_usertype(("ESM3_Ingredient")); - record[sol::meta_function::to_string] = [](const ESM::Potion& rec) {return "ESM3_Ingredient[" + rec.mId + "]"; }; + record[sol::meta_function::to_string] = [](const ESM::Ingredient& rec) {return "ESM3_Ingredient[" + rec.mId + "]"; }; record["id"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {return rec.mId; }); record["name"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {return rec.mName; }); - record["model"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {return rec.mModel; }); + record["model"] = sol::readonly_property([vfs](const ESM::Ingredient& rec) -> std::string { + return Misc::ResourceHelpers::correctMeshPath(rec.mModel, vfs); + }); record["mwscript"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {return rec.mScript; }); - record["icon"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {return rec.mIcon; }); + record["icon"] = sol::readonly_property([vfs](const ESM::Ingredient& rec) -> std::string { + return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs); + }); record["weight"] = sol::readonly_property([](const ESM::Ingredient& rec) -> float {return rec.mData.mWeight; }); record["value"] = sol::readonly_property([](const ESM::Ingredient& rec) -> int{return rec.mData.mValue; }); }