This commit revamps the usage instructions in order to accomplish two
goals:
1. Make the instructions easier to follow by turning them into a
numbered list.
2. Make sure that macOS and Linux users install all of the built
libraries for their platforms.
Before this change, users would have to jump through hoops in order to
make sure that they’re using the .d3m files from this repo (as opposed
to the .d3m files that came with their version of Descent 3).
Specifically, users would have to remove or backup Descent 3’s original
netgames/ directory, create a new one, hunt down TCP_IP.d3c and copy it
to the new netgames/ directory.
This change makes it easier for users to use the latest version of
working by creating a netgames/ directory for them. All they have to do
is replace the old one with the new one.
Fixes#369.
Specifically, this commit only adds copies of licenses if we are
required to do so. For example, this commit adds a copy of libacm’s
license because libacm’s license requires that we include copies of
libacm’s license with binary copies of libacm. This commit does not add
a copy of zlib’s license because zlib’s license doesn’t require us to do
so.
Fixes#295.
Before this change, the CI script had a special step that would ensure
that CI artifacts contained a copy of Descent 3’s license. This change
replaces that special CI step with a CMake target.
The main motivation behind this change is to make it easier for people
to create packages for Descent 3. Before this change, if you wanted to
create a package for Descent 3, then you would have to manually ensure
that your package contained a copy of the GPL.
All functions, that uses cf_ReadBytes(), checks return size, but don't handle potential exceptions. That leads to segfaults on reading of damaged files (i.e. broken savegames).
The last library opened with cf_OpenLibrary() will be the first to be searched for DLLs. This way we make sure to load our x64 DLLs before the x86 versions from the original game data.
Functions declared in idmfc.h were prefixed by both macros `EXTERN` and `DLLEXPORT`. `EXTERN` expands to `extern "C"` for C++ code, and `DLLEXPORT` expands to `extern "C"` for C++ or `extern` for C code, making up two `extern` qualifiers for C++ code. We now only use DLLEXPORT macro.