diff --git a/docs/api/changelog.rst b/docs/api/changelog.rst index e248cd55..875b3bee 100644 --- a/docs/api/changelog.rst +++ b/docs/api/changelog.rst @@ -2,6 +2,45 @@ Version History *************** +0.21.0 - 2023-08-30 +=================== + +Added +----- + +- :cpp:any:`loot::GameInterface::GetType()` +- A ``const`` overload of :cpp:any:`loot::GameInterface::GetDatabase()` +- :cpp:any:`loot::GameInterface::GetAdditionalDataPaths()` +- :cpp:any:`loot::GameInterface::SetAdditionalDataPaths()` + +Changed +------- + +- libloot now supports v0.21 of the metadata syntax. +- :cpp:any:`loot::GameInterface::IsValidPlugin()`, + :cpp:any:`loot::GameInterface::LoadPlugins()` and + :cpp:any:`loot::GameInterface::SortPlugins()` now take plugin paths as + ``std::filesystem::path`` instead of ``std::string``. +- It is now possible to create a game handle with a ``game_local_path`` that + does not exist. +- It is now possible to create a game handle with an empty ``game_local_path`` + on Linux if the ``game`` is Morrowind. +- Updated ICU (used by Linux builds) to v71.1. +- Updated libloadorder to v14.2.1. +- Updated loot-condition-interpreter to v3.0.0. + +Fixed +----- + +- Condition evaluation would only recognise plugin files as plugins if they had + lowercase file extensions. +- When reading the list of active plugins for Oblivion, libloot would look for a + file named ``plugins.txt``, which caused inaccurate results on case-sensitive + filesystems, as Oblivion writes the file as ``Plugins.txt``. +- The doc comment for :cpp:any:`loot::GameInterface::SortPlugins()` used the + wrong parameter name. +- Cross-compiling from Linux to Windows using MinGW-w64. + 0.19.4 - 2023-05-06 =================== @@ -34,7 +73,7 @@ Changed plugin filenames. Relative paths are interpreted as relative to the game's data path, so this change is backwards-compatible. Absolute paths are used as given. The functions take plugin paths as strings to avoid breaking libloot's - binary interface, but they will be changed to take ``std::filesystem::path``s + binary interface, but they will be changed to take ``std::filesystem::path`` in a future release. - :cpp:any:`loot::GameInterface::LoadPlugins()` and :cpp:any:`loot::GameInterface::SortPlugins()` now check that all filenames in diff --git a/docs/metadata/changelog.rst b/docs/metadata/changelog.rst index f713c967..b6ca466b 100644 --- a/docs/metadata/changelog.rst +++ b/docs/metadata/changelog.rst @@ -4,6 +4,22 @@ Version History The version history of the metadata syntax is given below. +0.21 - 2023-08-30 +================= + +Changed +------- + +- The syntax for substitution placeholders is now zero-indexed and uses curly + braces instead of percentage signs. For example, ``%1% %2%`` is now + ``{0} {1}``. + +Removed +------- + +- Support for the ``LOOT`` file path alias. It will now be interpreted as a + normal path, i.e. a file or folder named ``LOOT`` in the game's data path. + 0.18 - 2022-02-27 ================= diff --git a/docs/metadata/data_structures/message.rst b/docs/metadata/data_structures/message.rst index 1d74ee3a..7ca9324f 100644 --- a/docs/metadata/data_structures/message.rst +++ b/docs/metadata/data_structures/message.rst @@ -48,16 +48,21 @@ If a message's ``content`` value is a string, the message will use the string as its content if displayed. Otherwise, the first localised content structure with a language or locale code that matches LOOT's current language will be used as the message's content if displayed. If there are no exact matches, LOOT will try -to find a close match. If LOOT's current language uses a locale code, it will +to find a close match. + +If LOOT's current language uses a locale code, it will display the first structure with the same language code, but not another locale code with the same language code. For example, if LOOT's current language has locale code ``pt_BR``, it will display the first structure with language code ``pt`` (but not locale code ``pt_PT``) if none exist with locale code ``pt_BR``. + If LOOT's current language has a language code, it will display the first structure with a locale code that contains that language code. For example, if LOOT's current language has language code ``pt``, it will display the first structure with locale code ``pt_PT`` or ``pt_BR`` if none exist with language -code ``pt``. If there are no exact or close matches, then the first structure in +code ``pt``. + +If there are no exact or close matches, then the first structure in English will be used. Equality diff --git a/include/loot/loot_version.h b/include/loot/loot_version.h index 0d69f2e7..4c8ce7c3 100644 --- a/include/loot/loot_version.h +++ b/include/loot/loot_version.h @@ -34,10 +34,10 @@ namespace loot { inline constexpr unsigned int LIBLOOT_VERSION_MAJOR = 0; /** @brief libloot's minor version number. */ -inline constexpr unsigned int LIBLOOT_VERSION_MINOR = 19; +inline constexpr unsigned int LIBLOOT_VERSION_MINOR = 21; /** @brief libloot's patch version number. */ -inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 4; +inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 0; /** * @brief Get the library version. diff --git a/src/api/resource.rc b/src/api/resource.rc index dfe40642..e08cd314 100644 --- a/src/api/resource.rc +++ b/src/api/resource.rc @@ -2,8 +2,8 @@ #include 1 VERSIONINFO -FILEVERSION 0, 19, 4, 0 -PRODUCTVERSION 0, 19, 4, 0 +FILEVERSION 0, 21, 0, 0 +PRODUCTVERSION 0, 21, 0, 0 FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL BEGIN @@ -13,12 +13,12 @@ BLOCK "040904b0" BEGIN VALUE "CompanyName", "LOOT" VALUE "FileDescription", "Library providing LOOT's core functionality" -VALUE "FileVersion", "0.19.4" +VALUE "FileVersion", "0.21.0" VALUE "InternalName", "loot" VALUE "LegalCopyright", "Copyright (C) 2013-2022 Oliver Hamlet" VALUE "OriginalFilename", "loot.dll" VALUE "ProductName", "LOOT" -VALUE "ProductVersion", "0.19.4" +VALUE "ProductVersion", "0.21.0" END END BLOCK "VarFileInfo"