1
0
Fork 0

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).
This commit is contained in:
mfranz 2007-03-23 15:53:58 +00:00
parent 2e9cf978b7
commit 60516c8a3f

View file

@ -156,14 +156,11 @@ void FGVoiceMgr::FGVoice::pushMessage(string m)
bool FGVoiceMgr::FGVoice::speak(void)
{
if (_msg.empty()) {
// cerr << "<nothing to say>" << 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 + "\")";