1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-16 16:29:55 +00:00
openmw/components
AnyOldName3 c2b383ea92 Store original representation of paths in content lists
Also compare against existing content lists in a more forgiving way.

The first improvement makes it possible to use relative paths in openmw.cfg without the launcher canonicalising them.
This was really annoying if you used a relative path on purpose.
It also stops the launcher converting all paths to Qt's convention, where forward slashes are used on Windows even though they're not native.
The engine doesn't care, so you could always put either in the config file, but the launcher wouldn't stand for that, and would make them match.

To make this work, we need to store a path's originalRepresentation in the content list, compare paths loaded from openmw.cfg based on their originalRepresentation, and convert paths from originalRepresentation to absolute value when loading them from a content list.

The second improvement means that paths that are equivalent, but expressed differently (e.g. mismatched case on Windows, mismatched separators on Windows, or mild differences like unnecessary `./`es and doubled separators) don't trigger the creation of a new effectively-identical content list.

To make this work, we had to switch the comparison to lexicaly normalise the path first.
It could only be lexical normalisation as originalRepresentation might be absolute, relative, or absolute-but-based-on-a-path-slug, and we didn't want slugs to break things or relative paths to count as equivalent to absolute ones that refer to the same file.
The comparison is case-insensitive on Windows, and case-sensitive elsewhere.
This isn't strictly right, as you can have case-sensitive things mounted on Windows or tell a Linux directory to be case-insensitive, but we can't tell when that might happen based on a lexical path as it depends on real directory properties (and might differ for different parts of the path, which is too much hassle to support).
2024-10-25 00:49:59 +01:00
..
bgsm Merge branch 'nifmisc' into 'master' 2024-04-25 08:45:36 +00:00
bsa Clarify Fallout 4 next gen update BA2 version naming 2024-04-28 05:09:40 +03:00
bullethelpers Remove unused includes 2022-10-09 16:44:18 +02:00
compiler CI match script names and remove dead code 2024-07-01 16:57:40 +02:00
config Store original representation of paths in content lists 2024-10-25 00:49:59 +01:00
contentselector c a p i t u l a t e 2024-07-31 00:08:29 +01:00
crashcatcher Use proper order for printf arguments 2024-07-28 20:08:02 +02:00
debug Fix OpenGL debug groups 2024-09-25 16:10:18 +01:00
detournavigator Limit RecastMeshManager range by active cell grid 2024-05-19 20:07:47 +02:00
esm Use normalized path in ESM LuaScripts 2024-09-18 23:52:44 +02:00
esm3 Add a test and address feedback 2024-10-06 11:32:24 +02:00
esm4 Use normalized path in ESM4 reader 2024-09-18 23:52:20 +02:00
esmloader Gets rid of most ESM::CellId 2023-04-03 14:16:05 +02:00
esmterrain CLEANUP(CS): Do heightData check in actual implementation, revert 2024-06-10 02:02:31 -05:00
fallback Cleaner implementation 2024-06-07 18:38:32 -07:00
files Merge branch 'portable-launcher' into 'master' 2024-04-10 09:53:07 +00:00
fontloader Optimize bitmap fonts loading 2024-03-27 12:44:35 +04:00
fx Use normalized path in ImageManager 2024-09-17 00:49:57 +02:00
interpreter Exit with fatal error on duplicated instruction code 2024-06-28 22:24:24 +02:00
l10n Use normalized path in l10m manager 2024-08-18 21:07:46 +02:00
loadinglistener Drop 360-degree screenshot support (#7720) 2024-06-06 14:46:01 +03:00
lua Fix Lua memory usage 2024-10-15 21:18:13 +00:00
lua_ui Prevent stale pointers in UI widgets 2024-09-29 22:36:31 +02:00
misc Use normalized path in PhysicsSystem 2024-10-18 13:45:29 +02:00
myguiplatform Replace toNormalized by Normalized 2024-09-18 23:53:20 +02:00
navmeshtool Stop updating navmeshtool progress on first bad message 2023-01-27 19:10:53 +01:00
nif Parse bhkPoseArray 2024-09-18 23:53:33 +03:00
nifbullet Use normalized path in BulletShapeManager 2024-09-27 23:33:58 +02:00
nifosg Use normalized path in ImageManager 2024-09-17 00:49:57 +02:00
platform Remove vestigial Boost libraries 2024-08-23 14:06:13 +01:00
process Do not include formatting spaces to localizable strings 2023-11-30 13:06:50 +04:00
resource Use normalized path in BulletShapeManager 2024-09-27 23:33:58 +02:00
sceneutil Merge branch 'vfs_normalized_path_16' into 'master' 2024-10-07 20:02:54 +00:00
sdlutil Fixes for a whole bunch of warnings 2024-03-14 23:39:33 +00:00
serialization Add missing array include 2023-07-29 00:29:03 +02:00
settings Merge branch 'topicHighlighting' into 'master' 2024-09-27 06:36:17 +00:00
shader Use normalized path in ImageManager 2024-09-17 00:49:57 +02:00
sqlite3 Minor header cleanup 2023-04-30 16:26:03 +02:00
std140 Add missing array include 2023-07-29 00:29:03 +02:00
stereo Do not copy due to auto misuse 2024-01-07 18:52:10 +04:00
terrain Merge branch 'vfs_normalized_path_14' into 'master' 2024-09-22 16:38:55 +00:00
testing Store Lua script path as VFS normalized 2024-09-15 13:53:20 +02:00
to_utf8 Address feedback 2024-01-17 18:10:42 +01:00
translation Use string_view in more UI code 2023-05-21 18:14:12 +02:00
version Open matching version of documentation for Launcher Help 2024-02-25 18:20:40 +01:00
vfs Make the launcher ignore case in bsa names 2024-10-21 18:07:13 +01:00
widgets Address my own review concerns 2024-09-19 04:05:54 +03:00
CMakeLists.txt Make the launcher ignore case in bsa names 2024-10-21 18:07:13 +01:00
doc.hpp