20 Commits

Author SHA1 Message Date
Jon Daniel
adda1c1f15 adaptive aligned std::array based vector types (#686) 2025-05-08 21:36:35 +02:00
Azamat H. Hackimov
744e974c84 Remove old inetgetfile related code 2025-02-14 16:32:13 +01:00
Azamat H. Hackimov
f9d311fd9b Reorganize netcon submodule
Cleanup unused files, isolate submodule.
2025-02-14 16:31:29 +01:00
Jan Engelhardt
61439b379d net: resolve 1 instance of -Wdelete-incomplete
Descent3/multi_dll_mgr.cpp:974:43: warning: deleting "void*" is
undefined [-Wdelete-incomplete]

(``delete`` requires that types are _complete_, so as to find the
right destructor to call; ``void`` is incomplete by definition.)
2024-11-06 18:19:08 +01:00
Jan Engelhardt
48953868df build: resolve 101 instances of -Wunused-variable 2024-11-04 22:20:18 +01:00
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
Jason Yundt
65c9065012 Turn Base_directory into an std::filesystem::path
Before this change, Base_directory was a char array. In general, it’s
better to use an std::filesystem::path to represent paths. Here’s why:

• char arrays have a limited size. If a user creates a file or directory
that has a very long path, then it might not be possible to store that
path in a given char array. You can try to make the char array long
enough to store the longest possible path, but future operating systems
may increase that limit. With std::filesystem::paths, you don’t have
to worry about path length limits.

• char arrays cannot necessarily represent all paths. We try our best to
use UTF-8 for all char arrays [1], but unfortunately, it’s possible to
create a path that cannot be represent using UTF-8 [2]. With an
std::filesystem::paths, stuff like that is less likely to happen because
std::filesystem::path::value_type is platform-specific.

• char arrays don’t have any built-in mechanisms for manipulating paths.
Before this commit, the code would work around this problem in two
different ways:

  1. It would use Descent 3–specific functions that implement path
  operations on char arrays/pointers (for example, ddio_MakePath()).
  Once all paths use std::filesystem::path, we’ll be able to simplify
  the code by removing those functions.

  2. It would temporarily convert Base_directory into an
  std::filesystem::path. This commit simplifies the code by removing
  those temporary conversions because they are no longer necessary.

[1]: 7cd79025 (Merge pull request #494 from Jayman2000/encoding-improvements, 2024-07-20)
[2]: <https://github.com/rust-lang/rust/issues/12056>
2024-09-28 14:42:46 -04:00
Azamat H. Hackimov
22829e5e43 netcon: replace DLLddio_MakePath with std::fs::path 2024-08-20 23:09:27 +03:00
Azamat H. Hackimov
58fe55605d netcon: remove Mastertracker update check
This part of code unreachable - we don't have mtav.dll anymore, and MTUpdateURL is empty. Simplify code related version check.
2024-08-20 23:09:27 +03:00
C.W. Betts
90c34c8006 Better fix for pcount. 2024-06-16 16:09:23 -06:00
C.W. Betts
2122d719e1 Remove some unused variables. 2024-06-13 14:38:17 -06:00
C.W. Betts
33b2030364 Fix compile failure. 2024-06-13 14:38:17 -06:00
C.W. Betts
f79e6cfe50 More const char* conversion. 2024-06-13 14:38:17 -06:00
C.W. Betts
7f2091db1b Quiet most const char* warnings. 2024-06-04 15:05:31 -06:00
C.W. Betts
8a678822a3 Add snprintfs to the PXO module. 2024-06-04 15:03:29 -06:00
Azamat H. Hackimov
a295b047f0 Fix compilation on Windows 2024-06-03 22:45:51 +03:00
Azamat H. Hackimov
6057694b56 Replace non-functional PXO server with new one
Replacing ut.parallaxonline.com with tracker.pxo.nottheeye.com.
2024-06-03 22:45:51 +03:00
Azamat H. Hackimov
7a9f2e2e19 Minor fixes to PXO module
Removing unused headers, code cleanup and enhancements.
2024-06-03 16:20:42 +03:00
Azamat H. Hackimov
6972b649bb Make PXO module buildable and runnable
Fix compilation and runtime errors.
2024-06-03 14:08:45 +03:00
Azamat H. Hackimov
f1a77cfe99 Reactivate mtclient for PXO online support 2024-06-02 23:43:38 +03:00