Update to Factory version #1
BIN
c68f6b029a006f3fd927ef4905ebe3e099c60322.tar.gz
LFS
Normal file
BIN
c68f6b029a006f3fd927ef4905ebe3e099c60322.tar.gz
LFS
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,27 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Aug 23 11:06:06 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Add httplib0_23.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 5 08:22:43 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Update to snapshot 1.6.0~git632.c68f6b0
|
||||
* Add higher resolutions, fullscreen toggle and FOV settings
|
||||
* XDG specification is heeded; configuration now lives in
|
||||
~/.local/share/Outrage Entertainment/Descent3 (instead of
|
||||
~/.config/descent3). Data files are read from either the XDG
|
||||
dir or from /usr/share/descent3 (can be used for global
|
||||
installs).
|
||||
- Add static-order.patch
|
||||
- Delete fstream.patch (merged)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 4 21:56:02 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
|
||||
|
||||
- switch cpp-httplib requirement to cmake(httplib) as preferred and
|
||||
supported by upstream
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 28 22:57:52 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package descent3
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
# Copyright (c) 2025 SUSE LLC and contributors
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
|
||||
Name: descent3
|
||||
%define commit c99e57cfabb16b2b428d4827eedb26b8cc20a1ee
|
||||
Version: 1.6.0~git533.c99e57c
|
||||
%define commit c68f6b029a006f3fd927ef4905ebe3e099c60322
|
||||
Version: 1.6.0~git632.c68f6b0
|
||||
Release: 0
|
||||
Summary: Tunnel–terrain-hybrid ship-based shooter fighting robots
|
||||
License: GPL-3.0-or-later
|
||||
@@ -27,7 +27,8 @@ URL: https://github.com/DescentDevelopers/Descent3
|
||||
Source: https://github.com/jengelh/descent3/archive/%commit.tar.gz
|
||||
Source2: https://github.com/SergiusTheBest/plog/archive/e21baecd4753f14da64ede979c5a19302618b752.tar.gz
|
||||
Patch1: system-libacm.patch
|
||||
Patch2: fstream.patch
|
||||
Patch2: static-order.patch
|
||||
Patch3: httplib0_23.patch
|
||||
%if 0%{?suse_version} && 0%{?suse_version} < 1600
|
||||
BuildRequires: gcc13-c++
|
||||
Provides: bundled(plog)
|
||||
@@ -37,7 +38,7 @@ BuildRequires: plog-devel
|
||||
%endif
|
||||
BuildRequires: cmake
|
||||
BuildRequires: libacm-devel
|
||||
BuildRequires: pkgconfig(cpp-httplib)
|
||||
BuildRequires: cmake(httplib)
|
||||
BuildRequires: pkgconfig(glm)
|
||||
BuildRequires: pkgconfig(sdl3)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
@@ -60,6 +61,9 @@ different game types.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n descent3-%commit -a2
|
||||
%if %{pkg_vcmp cmake(httplib) < 0.23}
|
||||
%patch -P 3 -R -p1
|
||||
%endif
|
||||
rm -Rf third_party/plog
|
||||
mv plog-* third_party/plog
|
||||
|
||||
@@ -67,8 +71,7 @@ mv plog-* third_party/plog
|
||||
%if 0%{?suse_version} && 0%{?suse_version} < 1600
|
||||
export CXX=g++-13
|
||||
%endif
|
||||
%cmake -DCMAKE_INSTALL_BINDIR="%_libexecdir/%name" \
|
||||
-DCMAKE_INSTALL_DATADIR="%_datadir/%name" \
|
||||
%cmake \
|
||||
-DCMAKE_INSTALL_DOCDIR:PATH="share/doc/packages/%name" \
|
||||
-DFORCE_PORTABLE_INSTALL=OFF \
|
||||
%if 0%{?suse_version} >= 1600
|
||||
@@ -81,30 +84,38 @@ export CXX=g++-13
|
||||
%install
|
||||
%cmake_install
|
||||
b="%buildroot"
|
||||
|
||||
mv -v "$b/%_datadir/Descent3" "$b/%_datadir/descent3"
|
||||
ln -sv descent3 "$b/%_datadir/Descent3"
|
||||
|
||||
# packaged separately
|
||||
rm -fv "$b/%_defaultdocdir/%name/LICENSE"
|
||||
mkdir -p "$b/%_bindir"
|
||||
|
||||
# add config wrapper
|
||||
mkdir -p "$b/%_libexecdir/%name"
|
||||
mv -v "$b/%_bindir/Descent3" "$b/%_libexecdir/%name/"
|
||||
|
||||
cat >"$b/%_bindir/descent3" <<-EOF
|
||||
#!/bin/sh -e
|
||||
progdir="%_libexecdir/descent3"
|
||||
datadir="%_datadir/descent3"
|
||||
progdir="%_libexecdir/%name"
|
||||
datadir="%_datadir/%name"
|
||||
|
||||
userdir="\$HOME/.config/descent3"
|
||||
olduserdir="\$HOME/.config/descent3"
|
||||
userdir="\$HOME/.local/share/Outrage Entertainment/Descent 3"
|
||||
if [ -d "\$olduserdir" ] && [ ! -L "\$olduserdir" ] && [ ! -e "\$userdir" ]; then
|
||||
echo "INFO: Trying to mv \$olduserdir to \$userdir"
|
||||
mkdir -p "\${userdir%/*}"
|
||||
mv -v "\$olduserdir" "\$userdir"
|
||||
fi
|
||||
mkdir -p "\$userdir/missions"
|
||||
cd "\$userdir"
|
||||
if [ ! -e d3-linux.hog ]; then
|
||||
ln -s "\$datadir/d3-linux.hog" .
|
||||
fi
|
||||
if [ ! -e online ]; then
|
||||
ln -s "\$datadir/online" .
|
||||
fi
|
||||
if [ ! -e d3.hog ]; then
|
||||
echo "ERROR: Copy d3.hog to \$userdir, then relaunch."
|
||||
echo "INFO: You may find this file on the D3 Linux ISO."
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -e extra.hog ] || [ ! -e extra13.hog ]; then
|
||||
echo "NOTE: Copy extra.hog and extra13.hog to \$userdir, then relaunch."
|
||||
echo "NOTE: Copy extra.hog and extra13.hog to \$userdir or /usr/share/descent3, then relaunch."
|
||||
echo "INFO: You may find these files on the D3 Linux ISO in data.tar.gz."
|
||||
echo "INFO: tar -C \$userdir -xf /path/to/data.tar.gz extra.hog extra13.hog"
|
||||
exit 1
|
||||
@@ -127,9 +138,9 @@ chmod a+x "%buildroot/%_bindir/descent3"
|
||||
%license LICENSE
|
||||
%_bindir/descent3
|
||||
%_datadir/descent3/
|
||||
%_defaultdocdir/%name/
|
||||
%_datadir/Descent3
|
||||
%_libexecdir/%name/
|
||||
# these are .so-like files
|
||||
%_libdir/netgames/
|
||||
%_defaultdocdir/%name/
|
||||
|
||||
%changelog
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
From e1a907bd64d700308e3a1625f0e0a5ddb1c22ef0 Mon Sep 17 00:00:00 2001
|
||||
From: Jon Daniel <joneqdaniel@gmail.com>
|
||||
Date: Thu, 8 May 2025 12:36:35 -0700
|
||||
Subject: [PATCH] build: add missing #include to cure compile error
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
References: https://github.com/DescentDevelopers/Descent3/pull/715
|
||||
|
||||
[g++-14 complains:
|
||||
|
||||
mission_download.cpp:402:19: error: variable ‘std::fstream in’ has initializer but incomplete type
|
||||
402 | std::fstream in(qualfile, std::ios::binary | std::ios::trunc | std::ios::out);
|
||||
|
||||
–jengelh]
|
||||
---
|
||||
Descent3/mission_download.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Descent3/mission_download.cpp b/Descent3/mission_download.cpp
|
||||
index 52e408e4..7343ee8d 100644
|
||||
--- a/Descent3/mission_download.cpp
|
||||
+++ b/Descent3/mission_download.cpp
|
||||
@@ -120,6 +120,7 @@
|
||||
|
||||
#include <cstdio>
|
||||
#include <future>
|
||||
+#include <fstream>
|
||||
|
||||
#include "mem.h"
|
||||
#include "args.h"
|
||||
--
|
||||
2.49.0
|
||||
|
||||
113
httplib0_23.patch
Normal file
113
httplib0_23.patch
Normal file
@@ -0,0 +1,113 @@
|
||||
From 951bf416f403bff550102b4f16dc17c4432d391c Mon Sep 17 00:00:00 2001
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sat, 23 Aug 2025 13:02:08 +0200
|
||||
Subject: [PATCH] build: fix build failure with cpp-httplib >= 0.23
|
||||
References: https://github.com/DescentDevelopers/Descent3/pull/721
|
||||
|
||||
---
|
||||
BUILD.md | 2 +-
|
||||
Descent3/mission_download.cpp | 2 +-
|
||||
netcon/inetfile/httpclient.cpp | 4 ++--
|
||||
netcon/inetfile/httpclient.h | 10 ++++++++--
|
||||
vcpkg.json | 5 ++++-
|
||||
5 files changed, 16 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/BUILD.md b/BUILD.md
|
||||
index 0ed8b771..7782e0fe 100644
|
||||
--- a/BUILD.md
|
||||
+++ b/BUILD.md
|
||||
@@ -4,7 +4,7 @@
|
||||
## Dependencies
|
||||
The build process uses [**CMake**](https://cmake.org/) and, by default, [**Ninja**](https://ninja-build.org/). You must install these; the project cannot locate them for you. The source code also depends on third-party libraries that are not provided as part of the repository:
|
||||
- [**SDL3**](https://wiki.libsdl.org/SDL3/FrontPage) which is used as the base to handle video, audio and input.
|
||||
-- [**cpp-httplib**](https://github.com/yhirose/cpp-httplib) as a HTTP client to download levels.
|
||||
+- [**cpp-httplib**](https://github.com/yhirose/cpp-httplib) >= 0.23 as a HTTP client to download levels.
|
||||
- [**glm**](https://github.com/g-truc/glm) providing useful additions to OpenGL.
|
||||
- [**plog**](https://github.com/SergiusTheBest/plog) for logging
|
||||
- [**zlib**](https://www.zlib.net/) as a compression utility
|
||||
diff --git a/Descent3/mission_download.cpp b/Descent3/mission_download.cpp
|
||||
index f494abe9..00263779 100644
|
||||
--- a/Descent3/mission_download.cpp
|
||||
+++ b/Descent3/mission_download.cpp
|
||||
@@ -399,7 +399,7 @@ bool msn_DownloadWithStatus(const char *url, const std::filesystem::path &filena
|
||||
}
|
||||
|
||||
httplib::Result (D3::HttpClient::*hcg)(const std::string &, const httplib::ContentReceiver &,
|
||||
- const httplib::Progress &) = &D3::HttpClient::Get;
|
||||
+ const D3::HttpClient::Progress &) = &D3::HttpClient::Get;
|
||||
std::fstream in(qualfile, std::ios::binary | std::ios::trunc | std::ios::out);
|
||||
auto async_task = std::async(
|
||||
std::launch::async, hcg, &http_client, download_uri,
|
||||
diff --git a/netcon/inetfile/httpclient.cpp b/netcon/inetfile/httpclient.cpp
|
||||
index d15bc906..33c1e314 100644
|
||||
--- a/netcon/inetfile/httpclient.cpp
|
||||
+++ b/netcon/inetfile/httpclient.cpp
|
||||
@@ -30,7 +30,7 @@ httplib::Result HttpClient::Get(const std::string &URIPath) {
|
||||
return m_client->Get(URIPath);
|
||||
}
|
||||
|
||||
-httplib::Result HttpClient::Get(const std::string &URIPath, const httplib::Progress &progress) {
|
||||
+httplib::Result HttpClient::Get(const std::string &URIPath, const D3::HttpClient::Progress &progress) {
|
||||
return m_client->Get(URIPath, progress);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ httplib::Result HttpClient::Get(const std::string &URIPath, const httplib::Conte
|
||||
}
|
||||
|
||||
httplib::Result HttpClient::Get(const std::string &URIPath, const httplib::ContentReceiver &content_receiver,
|
||||
- const httplib::Progress &progress) {
|
||||
+ const D3::HttpClient::Progress &progress) {
|
||||
return m_client->Get(URIPath, content_receiver, progress);
|
||||
}
|
||||
|
||||
diff --git a/netcon/inetfile/httpclient.h b/netcon/inetfile/httpclient.h
|
||||
index d3e2499c..a373405e 100644
|
||||
--- a/netcon/inetfile/httpclient.h
|
||||
+++ b/netcon/inetfile/httpclient.h
|
||||
@@ -32,6 +32,12 @@ namespace D3 {
|
||||
|
||||
class HttpClient {
|
||||
public:
|
||||
+ using Progress = httplib::DownloadProgress;
|
||||
+ // no way to test with macro; would have to do a cmake-level compile check
|
||||
+ //#if httplib < 0.23
|
||||
+ //using Progress = httplib::Progress;
|
||||
+ //#endif
|
||||
+
|
||||
/**
|
||||
* Constructor for HttpClient
|
||||
* @param URL request URL, should be in form of http://example.com. Don't add "/" on the end as it's part of URIPath.
|
||||
@@ -46,12 +52,12 @@ public:
|
||||
* @param URIPath requested path (for example, "/some_dir/my_file.txt")
|
||||
* @return standard HTTP code. 200 means is OK.
|
||||
*/
|
||||
- httplib::Result Get(const std::string &URIPath, const httplib::Progress &progress);
|
||||
+ httplib::Result Get(const std::string &URIPath, const Progress &progress);
|
||||
|
||||
httplib::Result Get(const std::string &URIPath, const httplib::ContentReceiver &content_receiver);
|
||||
|
||||
httplib::Result Get(const std::string &URIPath, const httplib::ContentReceiver &content_receiver,
|
||||
- const httplib::Progress &progress);
|
||||
+ const Progress &progress);
|
||||
|
||||
void SetProxy(const std::string &proxy_host, uint16_t port);
|
||||
|
||||
diff --git a/vcpkg.json b/vcpkg.json
|
||||
index c383313e..b5e7f64c 100644
|
||||
--- a/vcpkg.json
|
||||
+++ b/vcpkg.json
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"builtin-baseline": "8f90c294883ccf67d2f4953383718aeae981575f",
|
||||
"dependencies": [
|
||||
- "cpp-httplib",
|
||||
+ {
|
||||
+ "name": "cpp-httplib",
|
||||
+ "version>=": "0.23"
|
||||
+ },
|
||||
"glm",
|
||||
"gtest",
|
||||
"plog",
|
||||
--
|
||||
2.51.0
|
||||
|
||||
373
static-order.patch
Normal file
373
static-order.patch
Normal file
@@ -0,0 +1,373 @@
|
||||
References: https://github.com/DescentDevelopers/Descent3/pull/719
|
||||
|
||||
diff --git a/Descent3/config.cpp a/Descent3/config.cpp
|
||||
index 900f03aa..fe854719 100644
|
||||
--- a/Descent3/config.cpp
|
||||
+++ a/Descent3/config.cpp
|
||||
@@ -353,7 +353,7 @@ void ConfigureDisplayResolutions() {
|
||||
return;
|
||||
}
|
||||
|
||||
- std::set<tVideoResolution, tVideoResolution::tVideoResolutionCompare> resolutions;
|
||||
+ std::set<tVideoResolution> resolutions;
|
||||
for (int d = 0; d < display_count; d++) {
|
||||
SDL_DisplayID display_id = displays[d];
|
||||
|
||||
@@ -417,7 +417,7 @@ void ConfigureDisplayResolutions() {
|
||||
if (resolutions_vec.empty()) {
|
||||
return;
|
||||
}
|
||||
- std::swap(resolutions_vec, Video_res_list);
|
||||
+ Video_res_list = std::move(resolutions_vec);
|
||||
SDL_free(displays);
|
||||
|
||||
// Find the index of the current screen resolution in the list
|
||||
diff --git a/Descent3/config.h a/Descent3/config.h
|
||||
index 3ffe50de..5a35ab8c 100644
|
||||
--- a/Descent3/config.h
|
||||
+++ a/Descent3/config.h
|
||||
@@ -145,21 +145,14 @@ struct tVideoResolution
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
- bool operator==(const tVideoResolution& other) {
|
||||
+ bool operator==(const tVideoResolution& other) const {
|
||||
return other.width == this->width && other.height == this->height;
|
||||
}
|
||||
|
||||
- struct tVideoResolutionCompare
|
||||
+ bool operator<(const tVideoResolution& other) const
|
||||
{
|
||||
- bool operator()(const tVideoResolution &lres, const tVideoResolution &rres) const
|
||||
- {
|
||||
- if (lres.width != rres.width)
|
||||
- {
|
||||
- return lres.width < rres.width;
|
||||
- }
|
||||
- return lres.height < rres.height;
|
||||
- }
|
||||
- };
|
||||
+ return width != other.width ? width < other.width : height < other.height;
|
||||
+ }
|
||||
};
|
||||
|
||||
extern std::vector<tVideoResolution> Video_res_list;
|
||||
diff --git a/Descent3/init.cpp a/Descent3/init.cpp
|
||||
index 65573807..23f912da 100644
|
||||
--- a/Descent3/init.cpp
|
||||
+++ a/Descent3/init.cpp
|
||||
@@ -2061,12 +2061,9 @@ void DeleteTempFiles() {
|
||||
*
|
||||
*/
|
||||
|
||||
-static int Init_old_screen_mode;
|
||||
static void (*Init_old_ui_callback)() = NULL;
|
||||
static bool Init_old_control_mode;
|
||||
-static bool Init_ui_cursor_visible;
|
||||
static bool Init_was_game_paused = false;
|
||||
-static pilot Init_old_pilot;
|
||||
|
||||
// TODO: MTS: Unused in project
|
||||
void ShutdownD3() {
|
||||
@@ -2096,81 +2093,14 @@ void ShutdownD3() {
|
||||
Sound_system.PauseSounds();
|
||||
}
|
||||
|
||||
- SaveControlConfig(&Init_old_pilot);
|
||||
CloseControls();
|
||||
|
||||
// shutdown cinematics.
|
||||
|
||||
// shutdown screen.
|
||||
- Init_ui_cursor_visible = ui_IsCursorVisible();
|
||||
- Init_old_screen_mode = GetScreenMode();
|
||||
Init_old_ui_callback = GetUICallback();
|
||||
SetScreenMode(SM_NULL);
|
||||
|
||||
// shutdown IO
|
||||
ddio_Close();
|
||||
}
|
||||
-
|
||||
-// TODO: MTS: unused in project
|
||||
-// This function restarts all game systems
|
||||
-void RestartD3() {
|
||||
- ddio_init_info io_info;
|
||||
-
|
||||
- if (!Init_systems_init)
|
||||
- return;
|
||||
-
|
||||
- LOG_INFO << "Restarting D3...";
|
||||
-
|
||||
- if (!FindArg("-windowed")) {
|
||||
- if (Dedicated_server) {
|
||||
- ddio_MouseMode(MOUSE_STANDARD_MODE);
|
||||
- } else {
|
||||
- ddio_MouseMode(MOUSE_EXCLUSIVE_MODE);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- // startup io
|
||||
- io_info.obj = Descent;
|
||||
- if (!ddio_Init(&io_info)) {
|
||||
- Error("I/O initialization failed.");
|
||||
- }
|
||||
-
|
||||
- // startup screen.
|
||||
- ddio_KeyFlush();
|
||||
- SetScreenMode(Init_old_screen_mode);
|
||||
- SetUICallback(Init_old_ui_callback);
|
||||
- if (Init_ui_cursor_visible)
|
||||
- ui_ShowCursor();
|
||||
-
|
||||
- // startup game systems
|
||||
- InitControls();
|
||||
- LoadControlConfig(&Init_old_pilot);
|
||||
-
|
||||
- // resume game sounds and time as needed
|
||||
- if (GetFunctionMode() == GAME_MODE) {
|
||||
- if (!(Game_mode & GM_MULTI)) {
|
||||
- if (!Init_was_game_paused) {
|
||||
- ResumeGame();
|
||||
- } else {
|
||||
- D3MusicResume();
|
||||
- }
|
||||
- }
|
||||
- } else {
|
||||
- Sound_system.ResumeSounds();
|
||||
- D3MusicResume();
|
||||
- }
|
||||
-
|
||||
- // resume controller if it was active before alt-tabbing out.
|
||||
- if (Init_old_control_mode) {
|
||||
- ResumeControls();
|
||||
- }
|
||||
-
|
||||
- // Restart Force Feedback
|
||||
- ForceRestart();
|
||||
-
|
||||
- // startup cinematics.
|
||||
-
|
||||
- // startup sound.
|
||||
- // Sound_system.ResumeSounds();
|
||||
- // Sound_system.InitSoundLib(Descent, Sound_mixer, Sound_quality, false);
|
||||
-}
|
||||
diff --git a/Descent3/pilot.cpp a/Descent3/pilot.cpp
|
||||
index 2a0448b5..201cb703 100644
|
||||
--- a/Descent3/pilot.cpp
|
||||
+++ a/Descent3/pilot.cpp
|
||||
@@ -682,7 +682,6 @@ void ShipSelectDeleteLogo(newuiListBox *lb);
|
||||
void ShowPilotPicDialog(pilot *Pilot);
|
||||
|
||||
UITextItem *pilot_items = nullptr; // array of UITextItems for use in Pilot listbox
|
||||
-pilot temp; // pilot in use by the listbox
|
||||
static std::vector<std::string> filelist; // list of pilot filenames
|
||||
static int filecount; // number of pilot filenames found
|
||||
void PilotListSelectChangeCallback(int index);
|
||||
@@ -825,7 +824,7 @@ struct {
|
||||
bool initial_call;
|
||||
bool all_setup;
|
||||
} PilotChooseDialogInfo;
|
||||
-pilot working_pilot;
|
||||
+static pilot working_pilot;
|
||||
|
||||
void PilotListSelectChangeCallback(int index) {
|
||||
if (!filecount || !PilotChooseDialogInfo.all_setup)
|
||||
diff --git a/Descent3/pilot_class.cpp a/Descent3/pilot_class.cpp
|
||||
index 59f101a3..dee8a99b 100644
|
||||
--- a/Descent3/pilot_class.cpp
|
||||
+++ a/Descent3/pilot_class.cpp
|
||||
@@ -172,48 +172,22 @@ extern float Key_ramp_speed;
|
||||
|
||||
pilot::~pilot() { clean(false); }
|
||||
|
||||
-pilot::pilot() {
|
||||
- write_pending = false;
|
||||
- initialize();
|
||||
+pilot::pilot() :
|
||||
+ difficulty{DIFFICULTY_ROOKIE},
|
||||
+ hud_mode{HUD_COCKPIT},
|
||||
+ hud_graphical_stat{STAT_STANDARD}
|
||||
+{
|
||||
}
|
||||
|
||||
-pilot::pilot(pilot *copy) {
|
||||
- write_pending = true;
|
||||
- initialize();
|
||||
-}
|
||||
-
|
||||
-pilot::pilot(char *fname) {
|
||||
- write_pending = true;
|
||||
- initialize();
|
||||
-}
|
||||
-
|
||||
-// initializes all the data (for constructors)
|
||||
+// Two-stage construction (because it references global vars)
|
||||
void pilot::initialize(void) {
|
||||
int i;
|
||||
|
||||
filename.clear();
|
||||
- name = NULL;
|
||||
ship_model = mem_strdup("Pyro-GL");
|
||||
- ship_logo = NULL;
|
||||
- audio1_file = NULL;
|
||||
- audio2_file = NULL;
|
||||
- audio3_file = NULL;
|
||||
- audio4_file = NULL;
|
||||
guidebot_name = mem_strdup("GB");
|
||||
- picture_id = PPIC_INVALID_ID;
|
||||
- difficulty = DIFFICULTY_ROOKIE;
|
||||
- hud_mode = (uint8_t)HUD_COCKPIT;
|
||||
- hud_stat = 0;
|
||||
- hud_graphical_stat = STAT_STANDARD;
|
||||
game_window_w = Video_res_list[Current_video_resolution_id].width;
|
||||
game_window_h = Video_res_list[Current_video_resolution_id].height;
|
||||
- num_missions_flown = 0;
|
||||
- mission_data = NULL;
|
||||
- mouselook_control = false;
|
||||
- key_ramping = 0.35f;
|
||||
- lrearview_enabled = false;
|
||||
- rrearview_enabled = false;
|
||||
-
|
||||
bool kiddie_settings = true;
|
||||
|
||||
if (Database) {
|
||||
@@ -237,8 +211,6 @@ void pilot::initialize(void) {
|
||||
strcpy(taunts[i], TXT(TXT_TAUNT_TEXT + i));
|
||||
}
|
||||
|
||||
- read_controller = READF_MOUSE + READF_JOY;
|
||||
-
|
||||
if (Controller) {
|
||||
for (i = 0; i < NUM_CONTROLLER_FUNCTIONS; i++) {
|
||||
Controller->get_controller_function(Controller_needs[i].id, controls[i].type, &controls[i].value,
|
||||
diff --git a/Descent3/pilot_class.h a/Descent3/pilot_class.h
|
||||
index a9c180cc..11c094ed 100644
|
||||
--- a/Descent3/pilot_class.h
|
||||
+++ a/Descent3/pilot_class.h
|
||||
@@ -170,8 +170,6 @@ class pilot {
|
||||
public:
|
||||
~pilot();
|
||||
pilot();
|
||||
- pilot(pilot *copy);
|
||||
- pilot(char *fname);
|
||||
|
||||
// This function guts the data so it's virgin (fresh for reading)
|
||||
// frees any memory that needs to be freed, etc.
|
||||
@@ -235,9 +233,9 @@ public:
|
||||
void get_mission_data(int index, tMissionData *data);
|
||||
int find_mission_data(const char *mission_name);
|
||||
|
||||
-private:
|
||||
void initialize(void); // initializes all the data (for constructors)
|
||||
- bool write_pending; // data has changed and pilot data is out of sync with file
|
||||
+private:
|
||||
+ bool write_pending = false; // data has changed and pilot data is out of sync with file
|
||||
private:
|
||||
// internal file access functions
|
||||
void write_name(CFILE *file);
|
||||
@@ -256,7 +254,7 @@ private:
|
||||
|
||||
// for the read functions, skip is true if the data should actually
|
||||
// just be skipped and not processed
|
||||
- int file_version;
|
||||
+ int file_version = 0;
|
||||
void read_name(CFILE *file, bool skip);
|
||||
void read_ship_info(CFILE *file, bool skip);
|
||||
void read_custom_multiplayer_data(CFILE *file, bool skip);
|
||||
@@ -275,46 +273,46 @@ private:
|
||||
//--- Pilot data ---//
|
||||
//--- Try to preserve alignment ---//
|
||||
std::string filename;// filename location of this pilot
|
||||
- char *name; // name of the pilot (used in the game)
|
||||
- char *ship_logo; // ship logo for multiplayer play (filename)
|
||||
- char *ship_model; // what ship does this pilot fly
|
||||
- char *audio1_file; // audio taunt #1 (filename)
|
||||
- char *audio2_file; // audio taunt #2 (filename)
|
||||
- char *audio3_file; // audio taunt #1 (filename)
|
||||
- char *audio4_file; // audio taunt #2 (filename)
|
||||
- char *guidebot_name; // guidebot name
|
||||
-
|
||||
- uint16_t picture_id; // pilot picture image id
|
||||
+ char *name = nullptr; // name of the pilot (used in the game)
|
||||
+ char *ship_logo = nullptr; // ship logo for multiplayer play (filename)
|
||||
+ char *ship_model = nullptr; // what ship does this pilot fly
|
||||
+ char *audio1_file = nullptr; // audio taunt #1 (filename)
|
||||
+ char *audio2_file = nullptr; // audio taunt #2 (filename)
|
||||
+ char *audio3_file = nullptr; // audio taunt #1 (filename)
|
||||
+ char *audio4_file = nullptr; // audio taunt #2 (filename)
|
||||
+ char *guidebot_name = nullptr; // guidebot name
|
||||
+
|
||||
+ uint16_t picture_id = PPIC_INVALID_ID; // pilot picture image id
|
||||
uint8_t difficulty; // difficulty setting for this pilot (DIFFICULTY_*)
|
||||
uint8_t hud_mode; // hud display mode
|
||||
- bool profanity_filter_on, audiotaunts;
|
||||
+ bool profanity_filter_on = false, audiotaunts = true;
|
||||
|
||||
- uint16_t hud_stat; // hud layout using the STAT mask
|
||||
+ uint16_t hud_stat = 0; // hud layout using the STAT mask
|
||||
uint16_t hud_graphical_stat;
|
||||
|
||||
- int game_window_w, game_window_h; // game window size
|
||||
+ int game_window_w = 0, game_window_h = 0; // game window size
|
||||
|
||||
- int num_missions_flown; // number of mission's flown
|
||||
- tMissionData *mission_data; // mission data
|
||||
+ int num_missions_flown = 0; // number of mission's flown
|
||||
+ tMissionData *mission_data = nullptr; // mission data
|
||||
|
||||
- uint16_t PrimarySelectList[MAX_PRIMARY_WEAPONS];
|
||||
- uint16_t SecondarySelectList[MAX_SECONDARY_WEAPONS];
|
||||
+ uint16_t PrimarySelectList[MAX_PRIMARY_WEAPONS]{};
|
||||
+ uint16_t SecondarySelectList[MAX_SECONDARY_WEAPONS]{};
|
||||
|
||||
- tGameToggles gameplay_toggles; // special options in config menu.
|
||||
+ tGameToggles gameplay_toggles{}; // special options in config menu.
|
||||
|
||||
public:
|
||||
- char taunts[MAX_PILOT_TAUNTS][PILOT_TAUNT_SIZE]; // taunt macros
|
||||
-
|
||||
- cntrldata controls[NUM_CONTROLLER_FUNCTIONS]; // controller settings
|
||||
- float mouse_sensitivity[N_MOUSE_AXIS]; // axis sensitivities
|
||||
- float joy_sensitivity[N_JOY_AXIS]; // axis sensitivities
|
||||
- float key_ramping;
|
||||
- char read_controller; // do we read the controller port also (beyond keyboard/mouse)
|
||||
- bool mouselook_control; // mouselook control.
|
||||
- bool lrearview_enabled;
|
||||
- bool rrearview_enabled; // are these small views enabled?
|
||||
-
|
||||
- uint8_t ingame_difficulty; // DAJ for optimization
|
||||
+ char taunts[MAX_PILOT_TAUNTS][PILOT_TAUNT_SIZE]{}; // taunt macros
|
||||
+
|
||||
+ cntrldata controls[NUM_CONTROLLER_FUNCTIONS]{}; // controller settings
|
||||
+ float mouse_sensitivity[N_MOUSE_AXIS]{}; // axis sensitivities
|
||||
+ float joy_sensitivity[N_JOY_AXIS]{}; // axis sensitivities
|
||||
+ float key_ramping = 0.35;
|
||||
+ char read_controller = READF_MOUSE + READF_JOY; // do we read the controller port also (beyond keyboard/mouse)
|
||||
+ bool mouselook_control = false; // mouselook control.
|
||||
+ bool lrearview_enabled = false;
|
||||
+ bool rrearview_enabled = false; // are these small views enabled?
|
||||
+
|
||||
+ uint8_t ingame_difficulty = 0; // DAJ for optimization
|
||||
};
|
||||
|
||||
#endif
|
||||
diff --git a/Descent3/sdlmain.cpp a/Descent3/sdlmain.cpp
|
||||
index 92974f5d..c6138297 100644
|
||||
--- a/Descent3/sdlmain.cpp
|
||||
+++ a/Descent3/sdlmain.cpp
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "init.h"
|
||||
#include "log.h"
|
||||
#include "config.h"
|
||||
+#include "pilot.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include "debug.h"
|
||||
@@ -222,6 +223,7 @@ int main(int argc, char *argv[]) {
|
||||
GatherArgs(argv);
|
||||
bool enable_winconsole = true;
|
||||
#endif
|
||||
+ Current_pilot.initialize();
|
||||
|
||||
orig_pwd = std::filesystem::current_path();
|
||||
|
||||
Reference in New Issue
Block a user