sound_verbal(char *text, int32_t gender, int32_t tone, int32_t vol,
int32_t moreinfo);
-- NetHack will call this function when it wants to pass text of
spoken language by a character or creature within the game.
-- text is a transcript of what has been spoken.
-- gender indicates MALE or FEMALE sounding voice.
-- tone indicates the tone of the voice.
-- vol is the volume (1% - 100%) for the sound.
-- moreinfo is used to provide additional information to the soundlib.
-- there may be some accessibility uses for this function.
It may be useful for accessibility purposes too.
A preliminary implementation has been attempted for macsound to test
the interface on macOS. No tinkering of the voices has been done.
Use of the test implementation requires the following at build time with make.
WANT_SPEECH=1
That needs to be included on the make command line to enable the test code,
otherwise just the interface update is compiled in.
I don't know for certain when AVSpeechSynthesizer went into macOS, but older versions
likely don't support it, and would just leave off the WANT_SPEECH=1.
If built with WANT_SPEECH=1, the 'voices' NetHack option needs to be enabled.
It was a bit strange, when I first started up the test, to hear Asidonhopo,
the shopkeeper, talking to me as I entered his shop and interacted with him.
120 lines
4.2 KiB
C++
120 lines
4.2 KiB
C++
// Copyright (c) Warwick Allison, 1999.
|
|
// Qt4 conversion copyright (c) Ray Chason, 2012-2014.
|
|
// NetHack may be freely redistributed. See license for details.
|
|
|
|
// qt_bind.h -- bindings between the Qt 4 interface and the main code
|
|
|
|
#ifndef QT4BIND_H
|
|
#define QT4BIND_H
|
|
|
|
#include "qt_main.h"
|
|
|
|
namespace nethack_qt_ {
|
|
|
|
class NetHackQtClickBuffer;
|
|
|
|
#ifdef KDE
|
|
#define NetHackQtBindBase KApplication
|
|
#elif defined(QWS)
|
|
#define NetHackQtBindBase QPEApplication
|
|
#else
|
|
#define NetHackQtBindBase QApplication
|
|
#endif
|
|
|
|
class NetHackQtBind : NetHackQtBindBase {
|
|
private:
|
|
// Single-instance preservation...
|
|
NetHackQtBind(int& argc, char** argv);
|
|
|
|
static NetHackQtBind* instance;
|
|
|
|
static NetHackQtKeyBuffer keybuffer;
|
|
static NetHackQtClickBuffer clickbuffer;
|
|
|
|
static QFrame* splash;
|
|
static NetHackQtMainWindow* main;
|
|
|
|
public:
|
|
static void qt_Splash();
|
|
|
|
/* window interface */
|
|
|
|
static void qt_init_nhwindows(int* argc, char** argv);
|
|
static void qt_player_selection();
|
|
static void qt_askname();
|
|
static void qt_get_nh_event();
|
|
static void qt_exit_nhwindows(const char *);
|
|
static void qt_suspend_nhwindows(const char *);
|
|
static void qt_resume_nhwindows();
|
|
static winid qt_create_nhwindow(int type);
|
|
static void qt_clear_nhwindow(winid wid);
|
|
static void qt_display_nhwindow(winid wid, boolean block);
|
|
static void qt_destroy_nhwindow(winid wid);
|
|
static void qt_curs(winid wid, int x, int y);
|
|
static void qt_putstr(winid wid, int attr, const char *text);
|
|
static void qt_putstr(winid wid, int attr, const std::string& text);
|
|
static void qt_putstr(winid wid, int attr, const QString& text);
|
|
static void qt_display_file(const char *filename, boolean must_exist);
|
|
static void qt_start_menu(winid wid, unsigned long mbehavior);
|
|
static void qt_add_menu(winid wid, const glyph_info *glyphinfo,
|
|
const ANY_P * identifier, char ch, char gch, int attr, int clr,
|
|
const char *str, unsigned int itemflags);
|
|
static void qt_end_menu(winid wid, const char *prompt);
|
|
static int qt_select_menu(winid wid, int how, MENU_ITEM_P **menu_list);
|
|
static void qt_mark_synch();
|
|
static void qt_wait_synch();
|
|
|
|
static void qt_cliparound(int x, int y);
|
|
static void qt_cliparound_window(winid wid, int x, int y);
|
|
static void qt_print_glyph(winid wid, coordxy x, coordxy y,
|
|
const glyph_info *glyphingo,
|
|
const glyph_info *bkglyphinfo);
|
|
static void qt_raw_print(const char *str);
|
|
static void qt_raw_print_bold(const char *str);
|
|
static int qt_nhgetch();
|
|
static int qt_nh_poskey(coordxy *x, coordxy *y, int *mod);
|
|
static void qt_nhbell();
|
|
static int qt_doprev_message();
|
|
static char qt_more();
|
|
static char qt_yn_function(const char *question,
|
|
const char *choices, char def);
|
|
static void qt_getlin(const char *prompt, char *line);
|
|
static int qt_get_ext_cmd();
|
|
static void qt_number_pad(int);
|
|
static void qt_delay_output();
|
|
static void qt_start_screen();
|
|
static void qt_end_screen();
|
|
|
|
static void qt_preference_update(const char *optname);
|
|
static char *qt_getmsghistory(boolean init);
|
|
static void qt_putmsghistory(const char *msg, boolean is_restoring);
|
|
|
|
static void qt_outrip(winid wid, int how, time_t when);
|
|
static int qt_kbhit();
|
|
static void qt_update_inventory(int);
|
|
static win_request_info *qt_ctrl_nhwindow(winid, int, win_request_info *);
|
|
static QWidget *mainWidget() { return main; }
|
|
#if defined(SND_LIB_QTSOUND) && !defined(QT_NO_SOUND)
|
|
/* sound interface */
|
|
static void qtsound_init_nhsound(void);
|
|
static void qtsound_exit_nhsound(const char *);
|
|
static void qtsound_achievement(schar, schar, int32_t);
|
|
static void qtsound_soundeffect(char *, int32_t, int32_t);
|
|
static void qtsound_hero_playnotes(int32_t instrument, const char *str, int32_t volume);
|
|
static void qtsound_play_usersound(char *, int32_t, int32_t);
|
|
static void qtsound_ambience(int32_t, int32_t, int32_t);
|
|
static void qtsound_verbal(char *text, int32_t gender, int32_t tone, int32_t vol, int32_t moreinfo);
|
|
#endif
|
|
|
|
private:
|
|
virtual bool notify(QObject *receiver, QEvent *event);
|
|
|
|
static QStringList *msgs_strings;
|
|
static boolean msgs_saved;
|
|
static boolean msgs_initd;
|
|
};
|
|
|
|
} // namespace nethack_qt_
|
|
|
|
#endif
|