From 60516c8a3fca21386ec1c7d16cd0cc18e460cce2 Mon Sep 17 00:00:00 2001 From: mfranz Date: Fri, 23 Mar 2007 15:53:58 +0000 Subject: [PATCH] If text contains "{display|voice}" groups, skip the delimiters and discard the display part. The curly braces wouldn't be spoken anyway, and the | would be spoken as "vertical bar", which is completely useless (which is why it had been disabled in the past already). --- src/Sound/voice.cxx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Sound/voice.cxx b/src/Sound/voice.cxx index 4bf452003..d3af41471 100644 --- a/src/Sound/voice.cxx +++ b/src/Sound/voice.cxx @@ -156,14 +156,11 @@ void FGVoiceMgr::FGVoice::pushMessage(string m) bool FGVoiceMgr::FGVoice::speak(void) { - if (_msg.empty()) { -// cerr << "" << endl; + if (_msg.empty()) return false; - } const string s = _msg.front(); _msg.pop(); -// cerr << "POP " << s; _sock->writestring(s.c_str()); return !_msg.empty(); } @@ -242,7 +239,7 @@ void FGVoiceMgr::FGVoice::FGVoiceListener::valueChanged(SGPropertyNode *node) return; const string s = node->getStringValue(); - //cerr << "\033[31;1mPUSH [" << s << "]\033[m" << endl; + //cerr << "\033[31;1mBEFORE [" << s << "]\033[m" << endl; string m; for (unsigned int i = 0; i < s.size(); i++) { @@ -257,9 +254,16 @@ void FGVoiceMgr::FGVoice::FGVoiceListener::valueChanged(SGPropertyNode *node) m += ' '; // don't say "vertical bar" or "underscore" else if (c == '&') m += " and "; + else if (c == '{') { + while (i < s.size()) + if (s[++i] == '|') + break; + } else if (c == '}') + ; else m += c; } + //cerr << "\033[31;1mAFTER [" << m << "]\033[m" << endl; if (_voice->_festival) m = string("(SayText \"") + m + "\")";