diff options
author | Ira Rice <irarice@gmail.com> | 2009-01-20 11:57:14 -0700 |
---|---|---|
committer | Ira Rice <irarice@gmail.com> | 2009-01-20 11:57:14 -0700 |
commit | f404997629d9a34f5a15261073536903a59a604c (patch) | |
tree | c13676b9762f0c52c89ad9dc4048a731b77889ba /src | |
parent | 1cd00ac68dca25c942c8db0cbaa8110d4a6a2f7a (diff) | |
download | mana-f404997629d9a34f5a15261073536903a59a604c.tar.gz mana-f404997629d9a34f5a15261073536903a59a604c.tar.bz2 mana-f404997629d9a34f5a15261073536903a59a604c.tar.xz mana-f404997629d9a34f5a15261073536903a59a604c.zip |
Trim displayed speech to not show links.
Signed-off-by: Ira Rice <irarice@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/being.cpp | 34 | ||||
-rw-r--r-- | src/gui/speechbubble.cpp | 5 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/being.cpp b/src/being.cpp index 98aaeec2..3e621295 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -171,7 +171,39 @@ void Being::setSpeech(const std::string &text, Uint32 time) { mSpeech = text; - mSpeechTime = 500; + // Trim whitespace + while (mSpeech[0] == ' ') + { + mSpeech = mSpeech.substr(1, mSpeech.size()); + } + while (mSpeech[mSpeech.size()] == ' ') + { + mSpeech = mSpeech.substr(0, mSpeech.size() - 1); + } + + // check for links + const std::string::size_type start = mSpeech.find('['); + const std::string::size_type end = mSpeech.find(']', start); + + if (start != std::string::npos && end != std::string::npos) + { + mSpeech.erase(end); + std::string::size_type pos = mSpeech.find('@'); + + while (pos != std::string::npos) + { + mSpeech.erase(pos, 2); + pos = mSpeech.find('@'); + } + + pos = mSpeech.find('|'); + + if (pos != std::string::npos) + mSpeech = mSpeech.substr(pos + 1, mSpeech.size()); + } + + if (mSpeech != "") + mSpeechTime = 500; } void Being::takeDamage(int amount) diff --git a/src/gui/speechbubble.cpp b/src/gui/speechbubble.cpp index 5539202e..4fa63973 100644 --- a/src/gui/speechbubble.cpp +++ b/src/gui/speechbubble.cpp @@ -61,11 +61,6 @@ SpeechBubble::SpeechBubble(): void SpeechBubble::setText(std::string mText) { - while (mText[0] == ' ') - { - mText = mText.substr(1, mText.size()); - } - mSpeechBox->setMinWidth(140); mSpeechBox->setTextWrapped( mText ); |