When setting user sounds, allow also setting a MSGTYPE

The SOUND lines now have an optional msgtype parameter:

   SOUND=MESG hide "^You miss the " "swing.wav" 75

Fixes #571
This commit is contained in:
Pasi Kallinen
2022-04-27 13:31:28 +03:00
parent 5d20140b74
commit c3c60b0b2c
4 changed files with 39 additions and 4 deletions

View File

@@ -5053,6 +5053,8 @@ Each SOUND entry is broken down into the following parts:
.PS "sound index"
.PL MESG
message window mapping (the only one supported in 3.7);
.PL msgtype
optional; message type to use, see \(lqConfiguring Message Types\(rq
.PL pattern
the pattern to match;
.PL "sound file"
@@ -5065,6 +5067,15 @@ optional; the index corresponding to a sound file.
.lp ""
The pattern should be a POSIX extended regular expression.
.pg
For example:
.sd
.si
SOUNDDIR=C:\\nethack\\sounds
SOUND=MESG "This door is locked" "lock.wav" 100
SOUND=MESG hide "^You miss the " "swing.wav" 75
.ei
.ed
.pg
.hn 2
Configuring Status Hilites
.pg

View File

@@ -5589,6 +5589,7 @@ Each SOUND entry is broken down into the following parts:
%.sd
%.si
{\tt MESG } --- message window mapping (the only one supported in 3.7);\\
{\tt msgtype } --- optional; message type to use, see ``Configuring User Sounds''\\
{\tt pattern } --- the pattern to match;\\
{\tt sound file } --- the sound file to play;\\
{\tt volume } --- the volume to be set while playing the sound file;\\
@@ -5600,6 +5601,15 @@ Each SOUND entry is broken down into the following parts:
%.lp ""
The pattern should be a POSIX extended regular expression.
For example:
\begin{verbatim}
SOUNDDIR=C:\\nethack\\sounds
SOUND=MESG "This door is locked" "lock.wav" 100
SOUND=MESG hide "^You miss the " "swing.wav" 75
\end{verbatim}
%.pg
%.lp
%.hn 2
\subsection*{Configuring Status Hilites}

View File

@@ -1595,6 +1595,8 @@ context sensitive item usage menu from inventory, aka "item actions"
pets are more likely to follow you closely if you are carrying something they
really like to eat; behave as if you are carrying such whenever you
are standing on stairs so that pets will try harder to come to you
allow setting msgtype in SOUND line
Platform- and/or Interface-Specific New Features
------------------------------------------------

View File

@@ -1422,12 +1422,18 @@ add_sound_mapping(const char* mapping)
char text[256];
char filename[256];
char filespec[256];
char msgtyp[11];
int volume, idx = -1;
if (sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d", text,
filename, &volume, &idx) == 4
|| sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d", text,
filename, &volume) == 3) {
msgtyp[0] = '\0';
if (sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d",
text, filename, &volume, &idx) == 4
|| sscanf(mapping, "MESG %10[^\"] \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d",
msgtyp, text, filename, &volume, &idx) == 5
|| sscanf(mapping, "MESG %10[^\"] \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d",
msgtyp, text, filename, &volume) == 4
|| sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d",
text, filename, &volume) == 3) {
audio_mapping *new_map;
if (!sounddir)
@@ -1455,6 +1461,12 @@ add_sound_mapping(const char* mapping)
raw_print(re_error_desc);
return 0;
} else {
if (*msgtyp) {
char tmpbuf[BUFSZ];
Sprintf(tmpbuf, "%.10s \"%.230s\"", msgtyp, text);
(void) msgtype_parse_add(tmpbuf);
}
soundmap = new_map;
}
} else {