diff --git a/CHANGELOG.md b/CHANGELOG.md index e935364264..4e0d96dec1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -229,6 +229,7 @@ Feature #7914: Do not allow to move GUI windows out of screen Feature #7923: Don't show non-existent higher ranks for factions with fewer than 9 ranks Feature #7932: Support two-channel normal maps + Feature #7936: Scalable icons in Qt applications Task #5896: Do not use deprecated MyGUI properties Task #6085: Replace boost::filesystem with std::filesystem Task #6149: Dehardcode Lua API_REVISION diff --git a/CMakeLists.txt b/CMakeLists.txt index b478a799eb..47e50e769a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ message(STATUS "Configuring OpenMW...") set(OPENMW_VERSION_MAJOR 0) set(OPENMW_VERSION_MINOR 49) set(OPENMW_VERSION_RELEASE 0) -set(OPENMW_LUA_API_REVISION 59) +set(OPENMW_LUA_API_REVISION 60) set(OPENMW_POSTPROCESSING_API_REVISION 1) set(OPENMW_VERSION_COMMITHASH "") diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index f671089bff..a15770fc73 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -349,7 +349,7 @@ void Launcher::DataFilesPage::populateFileViews(const QString& contentModelName) { // Pad to correct vertical alignment QPixmap pixmap(QSize(200, 200)); // Arbitrary big number, will be scaled down to widget size - pixmap.fill(ui.directoryListWidget->palette().base().color()); + pixmap.fill(QColor(0, 0, 0, 0)); auto emptyIcon = QIcon(pixmap); item->setIcon(emptyIcon); } diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp index 5486251731..df4c6fb22d 100644 --- a/apps/launcher/maindialog.cpp +++ b/apps/launcher/maindialog.cpp @@ -65,6 +65,14 @@ Launcher::MainDialog::MainDialog(const Files::ConfigurationManager& configuratio setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); createIcons(); + + QWidget* spacer = new QWidget(); + spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + toolBar->addWidget(spacer); + + QLabel* logo = new QLabel(this); + logo->setPixmap(QIcon(":/images/openmw-header.png").pixmap(QSize(294, 64))); + toolBar->addWidget(logo); } Launcher::MainDialog::~MainDialog() @@ -76,7 +84,7 @@ Launcher::MainDialog::~MainDialog() void Launcher::MainDialog::createIcons() { if (!QIcon::hasThemeIcon("document-new")) - QIcon::setThemeName("tango"); + QIcon::setThemeName("fallback"); connect(dataAction, &QAction::triggered, this, &MainDialog::enableDataPage); connect(graphicsAction, &QAction::triggered, this, &MainDialog::enableGraphicsPage); diff --git a/apps/launcher/ui/mainwindow.ui b/apps/launcher/ui/mainwindow.ui index 9a7352654a..862ae2430e 100644 --- a/apps/launcher/ui/mainwindow.ui +++ b/apps/launcher/ui/mainwindow.ui @@ -77,10 +77,6 @@ QToolBar { - background-attachment: fixed; - background-image: url(:/images/openmw-header.png); - background-repeat: none; - background-position: right; border: 0px; } diff --git a/apps/openmw/mwbase/inputmanager.hpp b/apps/openmw/mwbase/inputmanager.hpp index f52f9ea454..5ee20476b3 100644 --- a/apps/openmw/mwbase/inputmanager.hpp +++ b/apps/openmw/mwbase/inputmanager.hpp @@ -45,6 +45,7 @@ namespace MWBase virtual void processChangedSettings(const std::set>& changed) = 0; virtual void setDragDrop(bool dragDrop) = 0; + virtual bool isGamepadGuiCursorEnabled() = 0; virtual void setGamepadGuiCursorEnabled(bool enabled) = 0; virtual void toggleControlSwitch(std::string_view sw, bool value) = 0; diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index f9ca0a3432..d0d6e7023d 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -102,6 +102,11 @@ namespace MWInput mControllerManager->setGamepadGuiCursorEnabled(enabled); } + bool InputManager::isGamepadGuiCursorEnabled() + { + return mControllerManager->gamepadGuiCursorEnabled(); + } + void InputManager::changeInputMode(bool guiMode) { mControllerManager->setGuiCursorEnabled(guiMode); diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index c5de579961..f8f1411ebf 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -68,6 +68,7 @@ namespace MWInput void setDragDrop(bool dragDrop) override; void setGamepadGuiCursorEnabled(bool enabled) override; + bool isGamepadGuiCursorEnabled() override; void toggleControlSwitch(std::string_view sw, bool value) override; bool getControlSwitch(std::string_view sw) override; diff --git a/apps/openmw/mwlua/inputbindings.cpp b/apps/openmw/mwlua/inputbindings.cpp index 09a5a0babb..dbe79ca377 100644 --- a/apps/openmw/mwlua/inputbindings.cpp +++ b/apps/openmw/mwlua/inputbindings.cpp @@ -10,6 +10,7 @@ #include "../mwbase/environment.hpp" #include "../mwbase/inputmanager.hpp" +#include "../mwbase/windowmanager.hpp" #include "../mwinput/actions.hpp" #include "luamanagerimp.hpp" @@ -208,6 +209,11 @@ namespace MWLua }; api["isMouseButtonPressed"] = [](int button) -> bool { return SDL_GetMouseState(nullptr, nullptr) & SDL_BUTTON(button); }; + api["_isGamepadCursorActive"] = [input]() -> bool { return input->isGamepadGuiCursorEnabled(); }; + api["_setGamepadCursorActive"] = [input](bool v) { + input->setGamepadGuiCursorEnabled(v); + MWBase::Environment::get().getWindowManager()->setCursorActive(v); + }; api["getMouseMoveX"] = [input]() { return input->getMouseMoveX(); }; api["getMouseMoveY"] = [input]() { return input->getMouseMoveY(); }; api["getAxisValue"] = [input](int axis) { diff --git a/components/bgsm/file.hpp b/components/bgsm/file.hpp index b409752d74..f2e9904715 100644 --- a/components/bgsm/file.hpp +++ b/components/bgsm/file.hpp @@ -53,6 +53,9 @@ namespace Bgsm MaterialFile() = default; virtual void read(BGSMStream& stream); virtual ~MaterialFile() = default; + + bool wrapT() const { return mClamp & 1; } + bool wrapS() const { return mClamp & 2; } }; struct BGSMFile : MaterialFile diff --git a/components/nif/property.hpp b/components/nif/property.hpp index fbc7e8294c..f8798003d3 100644 --- a/components/nif/property.hpp +++ b/components/nif/property.hpp @@ -338,6 +338,9 @@ namespace Nif void read(NIFStream* nif) override; void post(Reader& nif) override; + bool wrapT() const { return mClamp & 1; } + bool wrapS() const { return mClamp & 2; } + bool doubleSided() const { return mShaderFlags2 & BSLSFlag2_DoubleSided; } bool treeAnim() const { return mShaderFlags2 & BSLSFlag2_TreeAnim; } }; @@ -366,6 +369,9 @@ namespace Nif void read(NIFStream* nif) override; + bool wrapT() const { return mClamp & 1; } + bool wrapS() const { return mClamp & 2; } + bool useFalloff() const { return mShaderFlags1 & BSLSFlag1_Falloff; } bool softEffect() const { return mShaderFlags1 & BSLSFlag1_SoftEffect; } bool doubleSided() const { return mShaderFlags2 & BSLSFlag2_DoubleSided; } diff --git a/components/nifosg/fog.hpp b/components/nifosg/fog.hpp index 5c49392a24..4557092477 100644 --- a/components/nifosg/fog.hpp +++ b/components/nifosg/fog.hpp @@ -15,6 +15,15 @@ namespace NifOsg META_StateAttribute(NifOsg, Fog, FOG) + int compare(const StateAttribute& sa) const override + { + if (const int base = osg::Fog::compare(sa); base != 0) + return base; + const Fog& rhs = static_cast(sa); + COMPARE_StateAttribute_Parameter(mDepth); + return 0; + } + void setDepth(float depth) { mDepth = depth; } float getDepth() const { return mDepth; } diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index 05a8378c11..d9442229dd 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -2176,8 +2176,8 @@ namespace NifOsg Bgsm::MaterialFilePtr material, osg::StateSet* stateset, std::vector& boundTextures) { const unsigned int uvSet = 0; - const bool wrapS = (material->mClamp >> 1) & 0x1; - const bool wrapT = material->mClamp & 0x1; + const bool wrapS = material->wrapS(); + const bool wrapT = material->wrapT(); if (material->mShaderType == Bgsm::ShaderType::Lighting) { const Bgsm::BGSMFile* bgsm = static_cast(material.get()); @@ -2486,11 +2486,9 @@ namespace NifOsg node->setUserValue("shaderRequired", shaderRequired); osg::StateSet* stateset = node->getOrCreateStateSet(); clearBoundTextures(stateset, boundTextures); - const bool wrapS = (texprop->mClamp >> 1) & 0x1; - const bool wrapT = texprop->mClamp & 0x1; if (!texprop->mTextureSet.empty()) - handleTextureSet( - texprop->mTextureSet.getPtr(), wrapS, wrapT, node->getName(), stateset, boundTextures); + handleTextureSet(texprop->mTextureSet.getPtr(), texprop->wrapS(), texprop->wrapT(), + node->getName(), stateset, boundTextures); handleTextureControllers(texprop, composite, stateset, animflags); if (texprop->refraction()) SceneUtil::setupDistortion(*node, texprop->mRefraction.mStrength); @@ -2534,11 +2532,9 @@ namespace NifOsg handleShaderMaterialNodeProperties(material, stateset, boundTextures); break; } - const bool wrapS = (texprop->mClamp >> 1) & 0x1; - const bool wrapT = texprop->mClamp & 0x1; if (!texprop->mTextureSet.empty()) - handleTextureSet( - texprop->mTextureSet.getPtr(), wrapS, wrapT, node->getName(), stateset, boundTextures); + handleTextureSet(texprop->mTextureSet.getPtr(), texprop->wrapS(), texprop->wrapT(), + node->getName(), stateset, boundTextures); handleTextureControllers(texprop, composite, stateset, animflags); if (texprop->doubleSided()) stateset->setMode(GL_CULL_FACE, osg::StateAttribute::OFF); @@ -2566,11 +2562,9 @@ namespace NifOsg if (!texprop->mSourceTexture.empty()) { const unsigned int uvSet = 0; - const bool wrapS = (texprop->mClamp >> 1) & 0x1; - const bool wrapT = texprop->mClamp & 0x1; unsigned int texUnit = boundTextures.size(); - attachExternalTexture( - "diffuseMap", texprop->mSourceTexture, wrapS, wrapT, uvSet, stateset, boundTextures); + attachExternalTexture("diffuseMap", texprop->mSourceTexture, texprop->wrapS(), texprop->wrapT(), + uvSet, stateset, boundTextures); { osg::ref_ptr texMat(new osg::TexMat); // This handles 20.2.0.7 UV settings like 4.0.0.2 UV settings (see NifOsg::UVController) @@ -2609,6 +2603,7 @@ namespace NifOsg fog->setMode(osg::Fog::LINEAR); fog->setColor(osg::Vec4f(fogprop->mColour, 1.f)); fog->setDepth(fogprop->mFogDepth); + fog = shareAttribute(fog); stateset->setAttributeAndModes(fog, osg::StateAttribute::ON); // Intentionally ignoring radial fog flag // We don't really want to override the global setting @@ -2620,6 +2615,7 @@ namespace NifOsg fog->setMode(osg::Fog::LINEAR); fog->setStart(10000000); fog->setEnd(10000000); + fog = shareAttribute(fog); stateset->setAttributeAndModes(fog, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE); } break; @@ -2821,7 +2817,11 @@ namespace NifOsg // While NetImmerse and Gamebryo support specular lighting, Morrowind has its support disabled. if (mVersion <= Nif::NIFFile::VER_MW || !specEnabled) + { mat->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4f(0.f, 0.f, 0.f, 0.f)); + mat->setShininess(osg::Material::FRONT_AND_BACK, 0.f); + specStrength = 1.f; + } if (lightmode == Nif::NiVertexColorProperty::LightMode::LightMode_Emissive) { @@ -2852,32 +2852,31 @@ namespace NifOsg mat->setColorMode(osg::Material::OFF); } - if (!mPushedSorter && !hasSortAlpha && mHasStencilProperty) - setBin_Traversal(node->getOrCreateStateSet()); - - if (!mPushedSorter && !hasMatCtrl && mat->getColorMode() == osg::Material::OFF - && mat->getEmission(osg::Material::FRONT_AND_BACK) == osg::Vec4f(0, 0, 0, 1) - && mat->getDiffuse(osg::Material::FRONT_AND_BACK) == osg::Vec4f(1, 1, 1, 1) - && mat->getAmbient(osg::Material::FRONT_AND_BACK) == osg::Vec4f(1, 1, 1, 1) - && mat->getShininess(osg::Material::FRONT_AND_BACK) == 0 - && mat->getSpecular(osg::Material::FRONT_AND_BACK) == osg::Vec4f(0.f, 0.f, 0.f, 0.f)) + if (hasMatCtrl || mat->getColorMode() != osg::Material::OFF + || mat->getEmission(osg::Material::FRONT_AND_BACK) != osg::Vec4f(0, 0, 0, 1) + || mat->getDiffuse(osg::Material::FRONT_AND_BACK) != osg::Vec4f(1, 1, 1, 1) + || mat->getAmbient(osg::Material::FRONT_AND_BACK) != osg::Vec4f(1, 1, 1, 1) + || mat->getShininess(osg::Material::FRONT_AND_BACK) != 0 + || mat->getSpecular(osg::Material::FRONT_AND_BACK) != osg::Vec4f(0.f, 0.f, 0.f, 0.f)) { - // default state, skip + mat = shareAttribute(mat); + node->getOrCreateStateSet()->setAttributeAndModes(mat, osg::StateAttribute::ON); + } + + if (emissiveMult != 1.f) + node->getOrCreateStateSet()->addUniform(new osg::Uniform("emissiveMult", emissiveMult)); + + if (specStrength != 1.f) + node->getOrCreateStateSet()->addUniform(new osg::Uniform("specStrength", specStrength)); + + if (!mPushedSorter) + { + if (!hasSortAlpha && mHasStencilProperty) + setBin_Traversal(node->getOrCreateStateSet()); return; } - mat = shareAttribute(mat); - osg::StateSet* stateset = node->getOrCreateStateSet(); - stateset->setAttributeAndModes(mat, osg::StateAttribute::ON); - if (emissiveMult != 1.f) - stateset->addUniform(new osg::Uniform("emissiveMult", emissiveMult)); - if (specStrength != 1.f) - stateset->addUniform(new osg::Uniform("specStrength", specStrength)); - - if (!mPushedSorter) - return; - auto assignBin = [&](Nif::NiSortAdjustNode::SortingMode mode, int type) { if (mode == Nif::NiSortAdjustNode::SortingMode::Off) { diff --git a/docs/source/luadoc_data_paths.sh b/docs/source/luadoc_data_paths.sh index 7f32348b38..6b41723f54 100755 --- a/docs/source/luadoc_data_paths.sh +++ b/docs/source/luadoc_data_paths.sh @@ -4,6 +4,7 @@ paths=( scripts/omw/ai.lua scripts/omw/input/playercontrols.lua scripts/omw/mechanics/animationcontroller.lua + scripts/omw/input/gamepadcontrols.lua scripts/omw/camera/camera.lua scripts/omw/mwui/init.lua scripts/omw/settings/player.lua diff --git a/docs/source/reference/lua-scripting/api.rst b/docs/source/reference/lua-scripting/api.rst index fb354a10a7..d4f4c91044 100644 --- a/docs/source/reference/lua-scripting/api.rst +++ b/docs/source/reference/lua-scripting/api.rst @@ -39,6 +39,7 @@ Lua API reference interface_animation interface_camera interface_controls + interface_gamepadcontrols interface_item_usage interface_mwui interface_settings diff --git a/docs/source/reference/lua-scripting/interface_gamepadcontrols.rst b/docs/source/reference/lua-scripting/interface_gamepadcontrols.rst new file mode 100644 index 0000000000..f89738b25b --- /dev/null +++ b/docs/source/reference/lua-scripting/interface_gamepadcontrols.rst @@ -0,0 +1,8 @@ +Interface GamepadControls +========================= + +.. include:: version.rst + +.. raw:: html + :file: generated_html/scripts_omw_input_gamepadcontrols.html + diff --git a/docs/source/reference/lua-scripting/tables/interfaces.rst b/docs/source/reference/lua-scripting/tables/interfaces.rst index f2e5921b02..42a9cd70ba 100644 --- a/docs/source/reference/lua-scripting/tables/interfaces.rst +++ b/docs/source/reference/lua-scripting/tables/interfaces.rst @@ -21,6 +21,10 @@ - by player scripts - | Allows to alter behavior of the built-in script | that handles player controls. + * - :ref:`Controls ` + - by player scripts + - | Allows to alter behavior of the built-in script + | that handles player gamepad controls. * - :ref:`ItemUsage ` - by global scripts - | Allows to extend or override built-in item usage diff --git a/files/data/CMakeLists.txt b/files/data/CMakeLists.txt index 0addb6d1ae..662f00fd84 100644 --- a/files/data/CMakeLists.txt +++ b/files/data/CMakeLists.txt @@ -98,7 +98,8 @@ set(BUILTIN_DATA_FILES scripts/omw/input/playercontrols.lua scripts/omw/input/actionbindings.lua scripts/omw/input/smoothmovement.lua - + scripts/omw/input/gamepadcontrols.lua + shaders/adjustments.omwfx shaders/bloomlinear.omwfx shaders/debug.omwfx diff --git a/files/data/builtin.omwscripts b/files/data/builtin.omwscripts index 81fb76f023..c38c3d243d 100644 --- a/files/data/builtin.omwscripts +++ b/files/data/builtin.omwscripts @@ -20,6 +20,7 @@ PLAYER: scripts/omw/input/playercontrols.lua PLAYER: scripts/omw/camera/camera.lua PLAYER: scripts/omw/input/actionbindings.lua PLAYER: scripts/omw/input/smoothmovement.lua +PLAYER: scripts/omw/input/gamepadcontrols.lua NPC,CREATURE: scripts/omw/ai.lua # User interface diff --git a/files/data/scripts/omw/input/gamepadcontrols.lua b/files/data/scripts/omw/input/gamepadcontrols.lua new file mode 100644 index 0000000000..0af17efa39 --- /dev/null +++ b/files/data/scripts/omw/input/gamepadcontrols.lua @@ -0,0 +1,29 @@ +local input = require('openmw.input') + +return { + + interfaceName = 'GamepadControls', + --- + -- Gamepad control interface + -- @module GamepadControls + + interface = { + --- Interface version + -- @field [parent=#GamepadControls] #number version + version = 0, + + --- Checks if the gamepad cursor is active. If it is active, the left stick can move the cursor, and A will be interpreted as a mouse click. + -- @function [parent=#GamepadControls] isGamepadCursorActive + -- @return #boolean + isGamepadCursorActive = function() + return input._isGamepadCursorActive() + end, + + --- Set if the gamepad cursor is active. If it is active, the left stick can move the cursor, and A will be interpreted as a mouse click. + -- @function [parent=#GamepadControls] setGamepadCursorActive + -- @param #boolean value + setGamepadCursorActive = function(state) + input._setGamepadCursorActive(state) + end, + } +} diff --git a/files/lang/launcher_ru.ts b/files/lang/launcher_ru.ts index c5a036c4b2..5c6719c11c 100644 --- a/files/lang/launcher_ru.ts +++ b/files/lang/launcher_ru.ts @@ -342,7 +342,7 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov Clone Content List - Создать копию списка плагинов + Создать копию списка Delete Content List diff --git a/files/launcher/icons/fallback/16x16/document-new.svg b/files/launcher/icons/fallback/16x16/document-new.svg new file mode 100644 index 0000000000..a212e2e0c0 --- /dev/null +++ b/files/launcher/icons/fallback/16x16/document-new.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files/launcher/icons/fallback/16x16/edit-clear.svg b/files/launcher/icons/fallback/16x16/edit-clear.svg new file mode 100644 index 0000000000..e1d10b86ef --- /dev/null +++ b/files/launcher/icons/fallback/16x16/edit-clear.svg @@ -0,0 +1,45 @@ + + + + + + + + diff --git a/files/launcher/icons/fallback/16x16/edit-copy.svg b/files/launcher/icons/fallback/16x16/edit-copy.svg new file mode 100644 index 0000000000..4933e2267e --- /dev/null +++ b/files/launcher/icons/fallback/16x16/edit-copy.svg @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/files/launcher/icons/fallback/16x16/edit-delete.svg b/files/launcher/icons/fallback/16x16/edit-delete.svg new file mode 100644 index 0000000000..ff86e2020e --- /dev/null +++ b/files/launcher/icons/fallback/16x16/edit-delete.svg @@ -0,0 +1,33 @@ + + + + clear + + + + + + clear + + + + diff --git a/files/launcher/icons/fallback/16x16/view-refresh.svg b/files/launcher/icons/fallback/16x16/view-refresh.svg new file mode 100644 index 0000000000..8401259040 --- /dev/null +++ b/files/launcher/icons/fallback/16x16/view-refresh.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files/launcher/icons/tango/index.theme b/files/launcher/icons/fallback/index.theme similarity index 67% rename from files/launcher/icons/tango/index.theme rename to files/launcher/icons/fallback/index.theme index 1f54489ebb..ac524b79b5 100644 --- a/files/launcher/icons/tango/index.theme +++ b/files/launcher/icons/fallback/index.theme @@ -1,6 +1,5 @@ [Icon Theme] -Name=Tango -Comment=Tango Theme +Name=Fallback Inherits=default Directories=16x16 diff --git a/files/launcher/icons/tango/16x16/document-new.png b/files/launcher/icons/tango/16x16/document-new.png deleted file mode 100644 index 4c3efdd6fa..0000000000 Binary files a/files/launcher/icons/tango/16x16/document-new.png and /dev/null differ diff --git a/files/launcher/icons/tango/16x16/edit-clear.png b/files/launcher/icons/tango/16x16/edit-clear.png deleted file mode 100644 index 74684bfb5d..0000000000 Binary files a/files/launcher/icons/tango/16x16/edit-clear.png and /dev/null differ diff --git a/files/launcher/icons/tango/16x16/edit-copy.png b/files/launcher/icons/tango/16x16/edit-copy.png deleted file mode 100644 index 8dd48c4949..0000000000 Binary files a/files/launcher/icons/tango/16x16/edit-copy.png and /dev/null differ diff --git a/files/launcher/icons/tango/16x16/edit-delete.png b/files/launcher/icons/tango/16x16/edit-delete.png deleted file mode 100644 index d7667c36b4..0000000000 Binary files a/files/launcher/icons/tango/16x16/edit-delete.png and /dev/null differ diff --git a/files/launcher/icons/tango/16x16/view-refresh.png b/files/launcher/icons/tango/16x16/view-refresh.png deleted file mode 100644 index 3fd71d6e59..0000000000 Binary files a/files/launcher/icons/tango/16x16/view-refresh.png and /dev/null differ diff --git a/files/launcher/images/openmw-header.png b/files/launcher/images/openmw-header.png index 6c88d8f549..81961c411e 100755 Binary files a/files/launcher/images/openmw-header.png and b/files/launcher/images/openmw-header.png differ diff --git a/files/launcher/launcher.qrc b/files/launcher/launcher.qrc index 766f636468..b7a7a19c16 100644 --- a/files/launcher/launcher.qrc +++ b/files/launcher/launcher.qrc @@ -7,12 +7,12 @@ images/preferences-advanced.png images/preferences-video.png - - icons/tango/index.theme - icons/tango/16x16/document-new.png - icons/tango/16x16/edit-clear.png - icons/tango/16x16/edit-copy.png - icons/tango/16x16/edit-delete.png - icons/tango/16x16/view-refresh.png + + icons/fallback/index.theme + icons/fallback/16x16/document-new.svg + icons/fallback/16x16/edit-clear.svg + icons/fallback/16x16/edit-copy.svg + icons/fallback/16x16/edit-delete.svg + icons/fallback/16x16/view-refresh.svg diff --git a/files/lua_api/openmw/animation.lua b/files/lua_api/openmw/animation.lua index bb5a0594df..42facef717 100644 --- a/files/lua_api/openmw/animation.lua +++ b/files/lua_api/openmw/animation.lua @@ -229,7 +229,7 @@ -- * `particle` - name of the particle texture to use. (default: "") -- * `vfxId` - a string ID that can be used to remove the effect later, using #removeVfx, and to avoid duplicate effects. The default value of "" can have duplicates. To avoid interaction with the engine, use unique identifiers unrelated to magic effect IDs. The engine uses this identifier to add and remove magic effects based on what effects are active on the actor. If this is set equal to the @{openmw.core#MagicEffectId} identifier of the magic effect being added, for example core.magic.EFFECT_TYPE.FireDamage, then the engine will remove it once the fire damage effect on the actor reaches 0. (Default: ""). -- --- @usage local mgef = core.magic.effects[myEffectName] +-- @usage local mgef = core.magic.effects.records[myEffectName] -- anim.addVfx(self, 'VFX_Hands', {bonename = 'Bip01 L Hand', particle = mgef.particle, loop = mgef.continuousVfx, vfxId = mgef.id..'_myuniquenamehere'}) -- -- later: -- anim.removeVfx(self, mgef.id..'_myuniquenamehere') diff --git a/files/lua_api/openmw/core.lua b/files/lua_api/openmw/core.lua index 8852475769..36c8539eb2 100644 --- a/files/lua_api/openmw/core.lua +++ b/files/lua_api/openmw/core.lua @@ -388,7 +388,7 @@ -- local function getEnchantment(item) -- local record = getRecord(item) -- if record and record.enchant then --- return core.magic.enchantments[record.enchant] +-- return core.magic.enchantments.records[record.enchant] -- end -- return nil -- end @@ -1096,7 +1096,7 @@ -- * `scale` - A number that scales the size of the vfx (Default: 1) -- -- @usage -- Spawn a sanctuary effect near the player --- local effect = core.magic.effects[core.magic.EFFECT_TYPE.Sanctuary] +-- local effect = core.magic.effects.records[core.magic.EFFECT_TYPE.Sanctuary] -- pos = self.position + util.vector3(0, 100, 0) -- core.vfx.spawn(effect.castingStatic, pos) -- diff --git a/files/lua_api/openmw/types.lua b/files/lua_api/openmw/types.lua index 90344cbae1..a92df7aa46 100644 --- a/files/lua_api/openmw/types.lua +++ b/files/lua_api/openmw/types.lua @@ -372,7 +372,7 @@ -- for i = 1, #mySpells do print(mySpells[i].id) end -- @usage -- add ALL spells that exist in the world -- local mySpells = types.Actor.spells(self) --- for _, spell in pairs(core.magic.spells) do +-- for _, spell in pairs(core.magic.spells.records) do -- if spell.type == core.magic.SPELL_TYPE.Spell then -- mySpells:add(spell) -- end