1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 23:06:41 +00:00

Correct icon and mesh paths in Lua records

This commit is contained in:
uramer 2022-05-13 18:45:03 +02:00
parent c8fc1afb45
commit 1fb136a417
8 changed files with 32 additions and 4 deletions

View file

@ -341,6 +341,7 @@ namespace MWBase
virtual std::string correctIconPath(const std::string& path) = 0; virtual std::string correctIconPath(const std::string& path) = 0;
virtual std::string correctBookartPath(const std::string& path, int width, int height, bool* exists = nullptr) = 0; virtual std::string correctBookartPath(const std::string& path, int width, int height, bool* exists = nullptr) = 0;
virtual std::string correctTexturePath(const std::string& path) = 0; virtual std::string correctTexturePath(const std::string& path) = 0;
virtual std::string correctMeshPath(const std::string& path) = 0;
virtual bool textureExists(const std::string& path) = 0; virtual bool textureExists(const std::string& path) = 0;
virtual void addCell(MWWorld::CellStore* cell) = 0; virtual void addCell(MWWorld::CellStore* cell) = 0;

View file

@ -2140,6 +2140,11 @@ namespace MWGui
return Misc::ResourceHelpers::correctTexturePath(path, mResourceSystem->getVFS()); return Misc::ResourceHelpers::correctTexturePath(path, mResourceSystem->getVFS());
} }
std::string WindowManager::correctMeshPath(const std::string& path)
{
return Misc::ResourceHelpers::correctMeshPath(path, mResourceSystem->getVFS());
}
bool WindowManager::textureExists(const std::string &path) bool WindowManager::textureExists(const std::string &path)
{ {
std::string corrected = Misc::ResourceHelpers::correctTexturePath(path, mResourceSystem->getVFS()); std::string corrected = Misc::ResourceHelpers::correctTexturePath(path, mResourceSystem->getVFS());

View file

@ -381,6 +381,7 @@ namespace MWGui
std::string correctIconPath(const std::string& path) override; std::string correctIconPath(const std::string& path) override;
std::string correctBookartPath(const std::string& path, int width, int height, bool* exists = nullptr) override; std::string correctBookartPath(const std::string& path, int width, int height, bool* exists = nullptr) override;
std::string correctTexturePath(const std::string& path) override; std::string correctTexturePath(const std::string& path) override;
std::string correctMeshPath(const std::string& path) override;
bool textureExists(const std::string& path) override; bool textureExists(const std::string& path) override;
void addCell(MWWorld::CellStore* cell) override; void addCell(MWWorld::CellStore* cell) override;

View file

@ -3,6 +3,7 @@
#include <components/esm3/loadcrea.hpp> #include <components/esm3/loadcrea.hpp>
#include <apps/openmw/mwworld/esmstore.hpp> #include <apps/openmw/mwworld/esmstore.hpp>
#include <apps/openmw/mwbase/windowmanager.hpp>
#include "../stats.hpp" #include "../stats.hpp"
#include "../luabindings.hpp" #include "../luabindings.hpp"
@ -24,7 +25,10 @@ namespace MWLua
sol::usertype<ESM::Creature> record = context.mLua->sol().new_usertype<ESM::Creature>("ESM3_Creature"); sol::usertype<ESM::Creature> record = context.mLua->sol().new_usertype<ESM::Creature>("ESM3_Creature");
record[sol::meta_function::to_string] = [](const ESM::Creature& rec) { return "ESM3_Creature[" + rec.mId + "]"; }; record[sol::meta_function::to_string] = [](const ESM::Creature& rec) { return "ESM3_Creature[" + rec.mId + "]"; };
record["name"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mName; }); record["name"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mName; });
record["model"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mModel; }); record["model"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string
{
return MWBase::Environment::get().getWindowManager()->correctMeshPath(rec.mModel);
});
record["mwscript"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mScript; }); record["mwscript"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mScript; });
record["baseCreature"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mOriginal; }); record["baseCreature"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mOriginal; });
} }

View file

@ -3,6 +3,7 @@
#include <components/esm3/loaddoor.hpp> #include <components/esm3/loaddoor.hpp>
#include <apps/openmw/mwworld/esmstore.hpp> #include <apps/openmw/mwworld/esmstore.hpp>
#include <apps/openmw/mwbase/windowmanager.hpp>
#include "../luabindings.hpp" #include "../luabindings.hpp"
@ -48,7 +49,10 @@ namespace MWLua
record[sol::meta_function::to_string] = [](const ESM::Door& rec) -> std::string { return "ESM3_Door[" + rec.mId + "]"; }; record[sol::meta_function::to_string] = [](const ESM::Door& rec) -> std::string { return "ESM3_Door[" + rec.mId + "]"; };
record["id"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mId; }); record["id"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mId; });
record["name"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mName; }); record["name"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mName; });
record["model"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mModel; }); record["model"] = sol::readonly_property([](const ESM::Door& rec) -> std::string
{
return MWBase::Environment::get().getWindowManager()->correctMeshPath(rec.mModel);
});
record["mwscript"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mScript; }); record["mwscript"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mScript; });
record["openSound"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mOpenSound; }); record["openSound"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mOpenSound; });
record["closeSound"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mCloseSound; }); record["closeSound"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mCloseSound; });

View file

@ -3,6 +3,7 @@
#include <components/esm3/loadweap.hpp> #include <components/esm3/loadweap.hpp>
#include <apps/openmw/mwworld/esmstore.hpp> #include <apps/openmw/mwworld/esmstore.hpp>
#include <apps/openmw/mwbase/windowmanager.hpp>
#include "../luabindings.hpp" #include "../luabindings.hpp"
@ -41,8 +42,14 @@ namespace MWLua
record[sol::meta_function::to_string] = [](const ESM::Weapon& rec) -> std::string { return "ESM3_Weapon[" + rec.mId + "]"; }; record[sol::meta_function::to_string] = [](const ESM::Weapon& rec) -> std::string { return "ESM3_Weapon[" + rec.mId + "]"; };
record["id"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mId; }); record["id"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mId; });
record["name"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mName; }); record["name"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mName; });
record["model"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mModel; }); record["model"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string
record["icon"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mIcon; }); {
return MWBase::Environment::get().getWindowManager()->correctMeshPath(rec.mModel);
});
record["icon"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string
{
return MWBase::Environment::get().getWindowManager()->correctIconPath(rec.mIcon);
});
record["enchant"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mEnchant; }); record["enchant"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mEnchant; });
record["mwscript"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mScript; }); record["mwscript"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mScript; });
record["isMagical"] = sol::readonly_property( record["isMagical"] = sol::readonly_property(

View file

@ -145,6 +145,11 @@ std::string Misc::ResourceHelpers::correctActorModelPath(const std::string &resP
return mdlname; return mdlname;
} }
std::string Misc::ResourceHelpers::correctMeshPath(const std::string &resPath, const VFS::Manager* vfs)
{
return "meshes\\" + resPath;
}
std::string Misc::ResourceHelpers::correctSoundPath(const std::string& resPath, const VFS::Manager* vfs) std::string Misc::ResourceHelpers::correctSoundPath(const std::string& resPath, const VFS::Manager* vfs)
{ {
std::string sound = resPath; std::string sound = resPath;

View file

@ -24,6 +24,7 @@ namespace Misc
std::string correctBookartPath(const std::string &resPath, int width, int height, const VFS::Manager* vfs); std::string correctBookartPath(const std::string &resPath, int width, int height, const VFS::Manager* vfs);
/// Use "xfoo.nif" instead of "foo.nif" if available /// Use "xfoo.nif" instead of "foo.nif" if available
std::string correctActorModelPath(const std::string &resPath, const VFS::Manager* vfs); std::string correctActorModelPath(const std::string &resPath, const VFS::Manager* vfs);
std::string correctMeshPath(const std::string &resPath, const VFS::Manager* vfs);
std::string correctSoundPath(const std::string& resPath, const VFS::Manager* vfs); std::string correctSoundPath(const std::string& resPath, const VFS::Manager* vfs);