add an interface for sound libraries

Groundwork for a more versatile interface for using
sound libraries. A lot of sound libraries work across
multiple platforms.

The current NetHack sound stuff is quite limited.

Binaries can have a variety of window ports linked into
them, and it makes sense to have something similar for
sound.

This tries to set things up in a more soundlib-centric way,
rather than inserting things in a platform-centric way.

It establishes a new top-level directory sound (akin to win
for the window interface routines, or "window-port") where
sound-related additions and sndprocs and support files can be
added and used across platforms.

The default interface is nosound and the 'nosound' interface
is in src/sounds.c

The interface for 'windsound', which contains the same minimal
USER_SOUNDS support using built-in routines that has been in the
windows port for a long time is added to
sound/windsound/windsound.c.

For now, the sound interface support for 'qtsound' has been added
to the existing Qt files win/Qt/qt_bind.h and win/Qt/qt_bind.cpp,
and a note has been placed in sound/qtsound/README.md to avoid
confusion.

New header file added: include/sndprocs.h.
This commit is contained in:
nhmall
2023-01-19 18:51:42 -05:00
parent 6e49372d8f
commit ea4a81901d
24 changed files with 705 additions and 85 deletions

View File

@@ -743,6 +743,9 @@ struct instance_globals_a {
/* shk.c */
boolean auto_credit;
/* sounds.c */
enum soundlib_ids active_soundlib;
/* trap.c */
/* context for water_damage(), managed by water_damage_chain();
when more than one stack of potions of acid explode while processing
@@ -852,6 +855,9 @@ struct instance_globals_c {
/* questpgr.c */
char cvt_buf[CVT_BUF_SIZE];
/* sounds.c */
enum soundlib_ids chosen_soundlib;
/* sp_lev.c */
struct sp_coder *coder;