Descent3/manage
Jason Yundt f5d2a43863 Add -aditionaldir option
Before this change, Descent 3 would look for all of its game data files
in a single directory. This change allows users to spread out Descent
3’s game data over multiple directories.

Building Descent 3 produces multiple files that can be freely
redistributed (Descent3, d3-linux.hog, online/Direct TCP~IP.d3c, etc.).
Running Descent 3 requires those files and several additional files that
cannot be freely redistributed. Before this change, the files that were
redistributable had to be in the same directory as the files that were
not redistributable. This change makes it so that they can be in
separate directories.

The main motivation behind this change is to allow people to package
Descent 3 for Linux in a reasonable manner. For the most part, binary
packages for Descent 3 will contain all of the freely redistributable
components. Package managers will copy those components into system
directories that are owned by root and that users probably shouldn’t
edit manually. Users will then create a new directory and copy the game
data from their copy of Descent 3 into that new directory. Users will
then be able to run:

  Descent3 -setdir <path-to-proprietary-files> -additionaldir <path-to-open-source-files>

The -additionaldir option can also be used to support more complicated
scenarios. For example, if the user is using Debian’s
game-data-packager [1], then they would do something like this:

  Descent3 -setdir <path-to-writable-directory> -additionaldir <path-to-gdp-directory> -additionaldir <path-to-open-source-files>

The -additionaldir option can also be used to load a mod that replaces
.hog files:

  Descent3 -setdir <path-to-base-game-data> -additionaldir <path-to-mod-files>

[1]: <https://github.com/DescentDevelopers/Descent3/issues/373#issuecomment-2120330650>
2024-09-29 14:07:53 -04:00
..
CMakeLists.txt Add logger module 2024-09-18 22:50:08 +03:00
doorpage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
doorpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
gamefilepage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
gamefilepage.h [Cleanup] Removed function declarations that are not implemented. 2024-08-20 20:03:02 +02:00
generic.cpp mem_malloc type triviality checks (7/8) 2024-09-16 22:12:14 +02:00
genericpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
manage.cpp Add -aditionaldir option 2024-09-29 14:07:53 -04:00
megapage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
megapage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
pagelock.cpp mem_malloc type triviality checks (2/8) 2024-09-16 22:12:12 +02:00
powerpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
robotpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
shippage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
shippage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
soundpage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
soundpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00
texpage.cpp mem_malloc type triviality checks (8/8) 2024-09-16 22:12:14 +02:00
texpage.h [Cleanup] Fixed mismatch between function declarations and implementations. 2024-08-20 20:03:02 +02:00
weaponpage.cpp Convert manage to use new logging facility 2024-09-10 03:00:25 +03:00
weaponpage.h Modernize struct/enum/unions type declarations 2024-05-30 03:35:17 -04:00