1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-16 19:29:56 +00:00
A mirror of the official openmw repository
Find a file
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.
2024-03-06 00:36:13 +00:00
.github/workflows fix up github workflow 2023-04-29 17:25:59 +02:00
apps Track source of settings 2024-03-06 00:36:13 +00:00
CI Fix build with cmake flag BUILD_SHARED_LIBS=ON 2024-02-18 19:35:32 +01:00
cmake Use SDL2 generate cmake files to find the package 2023-11-24 15:56:54 +01:00
components Track source of settings 2024-03-06 00:36:13 +00:00
docker Don't install boost-filesystem anymore 2023-04-25 23:26:29 +02:00
docs Merge branch 'wtf-even-is-force-shaders' into 'master' 2024-02-21 10:21:54 +00:00
extern Update google benchmark to 1.8.3 2024-02-18 14:25:03 +01:00
files Make builtin.omwscripts actually mandatory 2024-02-27 01:09:46 +00:00
manual/opencs Renormalise line endings 2022-09-16 00:53:24 +01:00
scripts Merge branch 'osg_stats_timeseries_delta' into 'master' 2023-12-27 20:25:38 +00:00
.clang-format Fix .clang-format and .clang-tidy 2023-04-29 14:36:35 +02:00
.clang-tidy Added a missing comma 2023-05-16 21:06:18 +02:00
.editorconfig Add CMake to .editorconfig 2023-04-22 22:16:43 +01:00
.git-blame-ignore-revs Ignore 88ec8a9523 for git blame 2022-09-25 18:24:23 +02:00
.gitignore Add Clangd cache to .gitignore 2023-11-02 13:07:22 +04:00
.gitlab-ci.yml Fix build with cmake flag BUILD_SHARED_LIBS=ON 2024-02-18 19:35:32 +01:00
.readthedocs.yaml Add Newline 2023-10-24 08:46:27 -05:00
.resubmitted_merge_requests.txt added !1471 2021-12-14 09:21:41 +00:00
AUTHORS.md Improve in-game text 2024-02-23 12:37:20 +00:00
CHANGELOG.md Merge branch 'bookart-is-textures-too' into 'master' 2024-02-24 10:31:13 +00:00
CMakeLists.txt Merge branch 'lua_death_finished' into 'master' 2024-02-24 10:31:15 +00:00
CONTRIBUTING.md CONTRIBUTE.md: fix typo and consistency 2022-03-20 10:57:18 +01:00
LICENSE http to https for supported urls (#1625) 2018-03-08 21:23:24 +01:00
README.md Drop support for --fs-strict 2023-06-08 21:10:09 +02:00

OpenMW

OpenMW is an open-source open-world RPG game engine that supports playing Morrowind by Bethesda Softworks. You need to own the game for OpenMW to play Morrowind.

OpenMW also comes with OpenMW-CS, a replacement for Bethesda's Construction Set.

Font Licenses:

Current Status

The main quests in Morrowind, Tribunal and Bloodmoon are all completable. Some issues with side quests are to be expected (but rare). Check the bug tracker for a list of issues we need to resolve before the "1.0" release. Even before the "1.0" release however, OpenMW boasts some new features, such as improved graphics and user interfaces.

Pre-existing modifications created for the original Morrowind engine can be hit-and-miss. The OpenMW script compiler performs more thorough error-checking than Morrowind does, meaning that a mod created for Morrowind may not necessarily run in OpenMW. Some mods also rely on quirky behaviour or engine bugs in order to work. We are considering such compatibility issues on a case-by-case basis - in some cases adding a workaround to OpenMW may be feasible, in other cases fixing the mod will be the only option. If you know of any mods that work or don't work, feel free to add them to the Mod status wiki page.

Getting Started

The data path

The data path tells OpenMW where to find your Morrowind files. If you run the launcher, OpenMW should be able to pick up the location of these files on its own, if both Morrowind and OpenMW are installed properly (installing Morrowind under WINE is considered a proper install).

Command line options

Syntax: openmw <options>
Allowed options:
  --help                                print help message
  --version                             print version information and quit
  --data arg (=data)                    set data directories (later directories
                                        have higher priority)
  --data-local arg                      set local data directory (highest
                                        priority)
  --fallback-archive arg (=fallback-archive)
                                        set fallback BSA archives (later
                                        archives have higher priority)
  --resources arg (=resources)          set resources directory
  --start arg                           set initial cell
  --content arg                         content file(s): esm/esp, or
                                        omwgame/omwaddon
  --no-sound [=arg(=1)] (=0)            disable all sounds
  --script-verbose [=arg(=1)] (=0)      verbose script output
  --script-all [=arg(=1)] (=0)          compile all scripts (excluding dialogue
                                        scripts) at startup
  --script-all-dialogue [=arg(=1)] (=0) compile all dialogue scripts at startup
  --script-console [=arg(=1)] (=0)      enable console-only script
                                        functionality
  --script-run arg                      select a file containing a list of
                                        console commands that is executed on
                                        startup
  --script-warn [=arg(=1)] (=1)         handling of warnings when compiling
                                        scripts
                                        0 - ignore warning
                                        1 - show warning but consider script as
                                        correctly compiled anyway
                                        2 - treat warnings as errors
  --script-blacklist arg                ignore the specified script (if the use
                                        of the blacklist is enabled)
  --script-blacklist-use [=arg(=1)] (=1)
                                        enable script blacklisting
  --load-savegame arg                   load a save game file on game startup
                                        (specify an absolute filename or a
                                        filename relative to the current
                                        working directory)
  --skip-menu [=arg(=1)] (=0)           skip main menu on game startup
  --new-game [=arg(=1)] (=0)            run new game sequence (ignored if
                                        skip-menu=0)
  --encoding arg (=win1252)             Character encoding used in OpenMW game
                                        messages:

                                        win1250 - Central and Eastern European
                                        such as Polish, Czech, Slovak,
                                        Hungarian, Slovene, Bosnian, Croatian,
                                        Serbian (Latin script), Romanian and
                                        Albanian languages

                                        win1251 - Cyrillic alphabet such as
                                        Russian, Bulgarian, Serbian Cyrillic
                                        and other languages

                                        win1252 - Western European (Latin)
                                        alphabet, used by default
  --fallback arg                        fallback values
  --no-grab                             Don't grab mouse cursor
  --export-fonts [=arg(=1)] (=0)        Export Morrowind .fnt fonts to PNG
                                        image and XML file in current directory
  --activate-dist arg (=-1)             activation distance override
  --random-seed arg (=<impl defined>)   seed value for random number generator