Commit Graph

7922 Commits (1ae2cc82a1866d5178be218397bccefc0cc25793)

Author SHA1 Message Date
AnyOldName3 1ae2cc82a1 I do not know how this escaped formatting locally. 10 months ago
AnyOldName3 a130ca57a4 Track source of settings
This one's a biggie.

The basic idea's that GameSettings should know:
* what the interpreted value of a setting is, so it can actually be used.
* what the original value the user put in their config was, so it can be put back when the config's saved.
* which path it's processing the openmw.cfg from so relative paths can be resolved correctly.
* whether a setting's a user setting that can be modified, or from one of the other openmw.cfg files that can't necessarily be modified.

This had fairly wide-reaching implications.

The first is that paths are resolved properly in cases where they previously wouldn't have been.
Without this commit, if the launcher saw a relative path in an openmw.cfg, it'd be resolved relative to the process' working directory (which we always set to the binary directory for reasons I won't get into).
That's not what the engine does, so is bad.
It's also not something a user's likely to suspect.
This mess is no longer a problem as paths are resolved correctly when they're loaded instead of on demand when they're used by whatever uses them.

Another problem was that if paths used slugs like ?userconfig? would be written back to openmw.cfg with the slugs replaced, which defeats the object of using the slugs.
This is also fixed.

Tracking which settings are user settings and which are in a non-editable openmw.cfg allows the launcher to grey out rows so they can't be edited (which is sensible as they can't be edited on-disk) while still being aware of content files that are provided by non-user data directories etc.
This is done in a pretty straightforward way for the data directories and fallback-archives, as those bits of UI are basic, but it's more complicated for content files as that uses a nmodel/view approach and has a lot more moving parts.
Thankfully, I'd already implemented that when dealing with builtin.omwscripts, so it just needed wiring up.

One more thing of note is that I made the SettingValue struct storable as a QVariant so it could be attached to the UI widgets as userdata, and then I could just grab the original representation and use it instead of needing any complicated mapping from display value to on-disk value.
10 months ago
AnyOldName3 b8cb757ca4 Oopsie 10 months ago
AnyOldName3 9e1334cc09 Resync composing and path openmw.cfg settings with options.cpp 10 months ago
AnyOldName3 d111b4bbd9 Handle built-in content files in content model
There's also handling for files declared as originating from a lower-priority openmw.cfg, e.g. anything in the local config or any intermediate ones, as they can't be disabled or reordered.
There's no way to mark such files yet, but the logic's the same as built-in files, so everything will be fine once that's set up.
10 months ago
AnyOldName3 f476301670 There's no such thing as the global data directory
That's what resources/vfs is for.
10 months ago
AnyOldName3 7d28788aee data-local is already unquoted when it's read 10 months ago
AnyOldName3 dbdecfe94b Use approved safety comment for path escaping explanation
I thought I'd got this one already
10 months ago
AnyOldName3 90966ecc47 Handle replace= lines properly in the launcher 10 months ago
AnyOldName3 626f438dcc Make builtin.omwscripts actually mandatory
Previously it was quasi-mandatory - lots of things would add it, e.g. when running openmw through the CS, but it could technically be disabled.

Now it's treated like the resources/vfs directory and implicitly added by the engine etc.
10 months ago
AnyOldName3 357bf3db61 Load all config files 10 months ago
Evil Eye 82c92a9a6c Merge branch 'bookart-is-textures-too' into 'master'
Consider bookart a valid prefix for regular textures and vice versa

Closes #7535

See merge request OpenMW/openmw!3342
10 months ago
AnyOldName3 3fbd97ffc8 Remove unused <vector> header 11 months ago
Alexei Kotov 6d35b626cf Merge branch 'fix_components_property' into 'master'
Set components property after it is defined

See merge request OpenMW/openmw!3899
11 months ago
Alexei Kotov 89d856d03e Merge branch 'use_is_directory_member' into 'master'
Use is_directory member function

See merge request OpenMW/openmw!3897
11 months ago
AnyOldName3 6406095bfb s p a n 11 months ago
AnyOldName3 1717e696b1 Format before clang notices and sends me an angry email 11 months ago
AnyOldName3 db5a43db30 Allow top-level prefix to be found in the middle of a path 11 months ago
psi29a e4a9e83609 Merge branch 'disable-shadows-properly-properly' into 'master'
Affect correct texture units when disabling shadows for stateset

Closes #7838

See merge request OpenMW/openmw!3891
11 months ago
elsid 38990b1fd2
Set components property after it is defined 11 months ago
psi29a 35f547ad7c Merge branch 'fatstacks' into 'master'
Allow the NAM9 field to be used if COUN is omitted

Closes #7836

See merge request OpenMW/openmw!3889
11 months ago
psi29a 518f34c869 Merge branch 'bsa_archive' into 'master'
Cleanup and optimize BSA archives code

See merge request OpenMW/openmw!3876
11 months ago
elsid c2ac1ce046
Use is_directory member function
To reduce the number of syscalls.
11 months ago
AnyOldName3 3335ccbc32 Capitulate 11 months ago
AnyOldName3 8c92f6ee87 Make uniform a signed int again 11 months ago
AnyOldName3 d282fdb77a Eliminate unused uniform 11 months ago
AnyOldName3 132c43affa Fix warning
Also attempt to make an equivalent warning fire with MSVC, then have to fix other stuff because /WX wasn't working, then back out of enabling the warning because none of the ones I could find disliked the old code.
11 months ago
AnyOldName3 7391bf2814 Fix OpenGL errors
There's no reason to use the AndModes variant as we never (intentionally) attempt to sample from a shadow map via the FFP.
11 months ago
AnyOldName3 535c5e328a Affect correct texture units when disabling shadows for stateset
Knowing which are right required making the function non-static, so the shadow manager had to become a singleton as the results of passing it around to where it's needed were hellish.

I'm seeing a bunch of OpenGL errors when actually using this, so I'll investigate whether they're happening on master.
I'm hesitant to look into it too much, though, as I'm affected by https://gitlab.com/OpenMW/openmw/-/issues/7811, and also have the Windows setting enabled that turns driver timeouts into a BSOD so a kernel dump is collected that I can send to AMD.
11 months ago
Evil Eye 254b533512 Allow the NAM9 field to be used if COUN is omitted 11 months ago
psi29a 8c8fffc2c6 Merge branch 'fix_shared_library_build' into 'master'
Build fixes related to shared libraries and position independent code

See merge request OpenMW/openmw!3878
11 months ago
psi29a e88e92d3aa Merge branch 'recursive_directory_iteration_errors' into 'master'
Add context to the errors on recursive iteration over directory

See merge request OpenMW/openmw!3872
11 months ago
psi29a 3369184c19 Merge branch 'lesspragmaticpackages' into 'master'
Use decompose to handle AI packages and data

See merge request OpenMW/openmw!3856
11 months ago
elsid efbc37d22f
Build components with position independent code only for Android
openmw is build as shared library with position independent code enabled there
so linked static libraries need to have this too.
11 months ago
elsid e2e1d913af
Remove redundant destructor 11 months ago
elsid 8c6e0866e0
Avoid seek for detecting BSA type
Seek is pretty expensive operation. Try to read first 12 bytes instead.
11 months ago
elsid cc9f9b53ba
Convert BsaVersion to enum class 11 months ago
elsid df077a2524
Simplify and reduce code duplication for BSA archive creation 11 months ago
elsid 1b1ed55762
Add context to the errors on recursive iteration over directory
To avoid showing users errors like:
recursive_directory_iterator::operator++: Access is denied.

And show something like this:
Failed to recursively iterate over "/home/elsid/.local/share/openmw/test_data"
when incrementing to the next item from
"/home/elsid/.local/share/openmw/test_data/permission_denied": Permission denied
11 months ago
elsid a2345194c8
Optimize lookup for a file in the BSA archive
Use binary search in sorted vector or normalized paths instead of linear search
in the original file struct. With number of files from 1k to 10k in vanilla
archives this gives some benefits.
11 months ago
psi29a a297a0e742 Merge branch 'init_filesystem_archive' into 'master'
Initialize FileSystemArchive index in constructor

See merge request OpenMW/openmw!3870
11 months ago
psi29a f9820e2061 Merge branch 'debugdrawdebugged' into 'master'
Try to uncursify debug primitive drawer (#7767)

Closes #7767

See merge request OpenMW/openmw!3852
11 months ago
elsid d147d1d250
Initialize FileSystemArchive index in constructor
It should be initialize for each created archive anyway. There is no good reason
to have additional complexity for lazy initialization. And it helps to catch
problems with specific directory when it's added to the VFS not when all are
added and index is built.
11 months ago
Alexei Kotov d9ee54ae98 DebugCustomDraw: Correct PerContextProgram use, clean up drawImplementation 11 months ago
psi29a 1280345296 Merge branch 'copy_qtbase' into 'master'
Copy qtbase translations

See merge request OpenMW/openmw!3840
11 months ago
Andrei Kortunov 9a7b9572fd Deploy base Qt translations when needed 11 months ago
uramer 08b7ee8a44 Test LuaUtil::safeGet preventing crash 11 months ago
uramer 550659c2d9 Fix loadVFS error handling 11 months ago
uramer aa4303fc38 Fix crash when throwing in index meta methods 11 months ago
psi29a 29c2042432 Merge branch 'lua_callback_crash' into 'master'
Lua Fix crash when passing a non-callback table to a callback argument

Closes #7827

See merge request OpenMW/openmw!3861
11 months ago