Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package descent3 for openSUSE:Factory 
checked in at 2025-08-25 20:37:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/descent3 (Old)
 and      /work/SRC/openSUSE:Factory/.descent3.new.30751 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "descent3"

Mon Aug 25 20:37:50 2025 rev:6 rq:1301115 version:1.6.0~git632.c68f6b0

Changes:
--------
--- /work/SRC/openSUSE:Factory/descent3/descent3.changes        2025-05-30 
17:20:26.623061503 +0200
+++ /work/SRC/openSUSE:Factory/.descent3.new.30751/descent3.changes     
2025-08-25 20:38:46.733802187 +0200
@@ -1,0 +2,24 @@
+Sat Aug 23 11:06:06 UTC 2025 - Jan Engelhardt <jeng...@inai.de>
+
+- Add httplib0_23.patch
+
+-------------------------------------------------------------------
+Tue Aug  5 08:22:43 UTC 2025 - Jan Engelhardt <jeng...@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.stie...@gmx.de>
+
+- switch cpp-httplib requirement to cmake(httplib) as preferred and
+  supported by upstream
+
+-------------------------------------------------------------------

Old:
----
  c99e57cfabb16b2b428d4827eedb26b8cc20a1ee.tar.gz
  fstream.patch

New:
----
  c68f6b029a006f3fd927ef4905ebe3e099c60322.tar.gz
  httplib0_23.patch
  static-order.patch

----------(Old B)----------
  Old:- Add static-order.patch
- Delete fstream.patch (merged)
----------(Old E)----------

----------(New B)----------
  New:
- Add httplib0_23.patch
  New:    installs).
- Add static-order.patch
- Delete fstream.patch (merged)
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ descent3.spec ++++++
--- /var/tmp/diff_new_pack.U5rVab/_old  2025-08-25 20:38:47.629839724 +0200
+++ /var/tmp/diff_new_pack.U5rVab/_new  2025-08-25 20:38:47.629839724 +0200
@@ -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 @@
 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 @@
 %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 @@
 
 %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 @@
 %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 @@
 %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,8 +138,8 @@
 %license LICENSE
 %_bindir/descent3
 %_datadir/descent3/
-%_defaultdocdir/%name/
+%_datadir/Descent3
 %_libexecdir/%name/
-# these are .so-like files
 %_libdir/netgames/
+%_defaultdocdir/%name/
 

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.U5rVab/_old  2025-08-25 20:38:47.669841400 +0200
+++ /var/tmp/diff_new_pack.U5rVab/_new  2025-08-25 20:38:47.673841568 +0200
@@ -1,5 +1,5 @@
-mtime: 1748500522
-commit: 4e58b21cccac537879b2765290f224bae7bd396ec558632bb8546e4947ea3116
+mtime: 1756018102
+commit: 6ebe8a43e24c7b537037336fd6a7820d97a499fa92e44ee9d70994d620abe6bb
 url: https://src.opensuse.org/jengelh/descent3
 revision: master
 

++++++ c99e57cfabb16b2b428d4827eedb26b8cc20a1ee.tar.gz -> 
c68f6b029a006f3fd927ef4905ebe3e099c60322.tar.gz ++++++
/work/SRC/openSUSE:Factory/descent3/c99e57cfabb16b2b428d4827eedb26b8cc20a1ee.tar.gz
 
/work/SRC/openSUSE:Factory/.descent3.new.30751/c68f6b029a006f3fd927ef4905ebe3e099c60322.tar.gz
 differ: char 15, line 1

++++++ httplib0_23.patch ++++++
>From 951bf416f403bff550102b4f16dc17c4432d391c Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jeng...@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


++++++ static-order.patch ++++++
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();
 

Reply via email to