From 420664f4025b261674e0cdea503d43fb95beae38 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 27 May 2015 21:29:06 +0300 Subject: Add strong typed bool type Speech. --- src/CMakeLists.txt | 1 + src/Makefile.am | 1 + src/being/being.cpp | 18 +++++++++++------- src/enums/simpletypes/speech.h | 28 ++++++++++++++++++++++++++++ src/text.cpp | 15 +++++++++------ src/text.h | 10 +++++++--- 6 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 src/enums/simpletypes/speech.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5e35994b3..ca9bf2d0b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1075,6 +1075,7 @@ SET(SRCS enums/simpletypes/showcenter.h enums/simpletypes/simpledefines.h enums/simpletypes/skiperror.h + enums/simpletypes/speech.h enums/simpletypes/trading.h enums/simpletypes/tryremovecolors.h enums/simpletypes/useargs.h diff --git a/src/Makefile.am b/src/Makefile.am index 5f57a7587..44c4d1750 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1204,6 +1204,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ enums/simpletypes/showcenter.h \ enums/simpletypes/simpledefines.h \ enums/simpletypes/skiperror.h \ + enums/simpletypes/speech.h \ enums/simpletypes/trading.h \ enums/simpletypes/tryremovecolors.h \ enums/simpletypes/useargs.h \ diff --git a/src/being/being.cpp b/src/being/being.cpp index 206151533..9c820f0c5 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -567,10 +567,11 @@ void Being::setSpeech(const std::string &text, const std::string &channel, { delete mText; mText = new Text(mSpeech, - getPixelX(), getPixelY() - getHeight(), - Graphics::CENTER, - &userPalette->getColor(UserPalette::PARTICLE), - true); + getPixelX(), + getPixelY() - getHeight(), + Graphics::CENTER, + &userPalette->getColor(UserPalette::PARTICLE), + Speech_true); } else { @@ -1875,9 +1876,12 @@ void Being::drawSpeech(const int offsetX, const int offsetY) if (!mText && userPalette) { - mText = new Text(mSpeech, getPixelX(), getPixelY() - getHeight(), - Graphics::CENTER, &theme->getColor( - Theme::BUBBLE_TEXT, 255), true); + mText = new Text(mSpeech, + getPixelX(), + getPixelY() - getHeight(), + Graphics::CENTER, + &theme->getColor(Theme::BUBBLE_TEXT, 255), + Speech_true); } } else if (speech == BeingSpeech::NO_SPEECH) diff --git a/src/enums/simpletypes/speech.h b/src/enums/simpletypes/speech.h new file mode 100644 index 000000000..03a962f96 --- /dev/null +++ b/src/enums/simpletypes/speech.h @@ -0,0 +1,28 @@ +/* + * The ManaPlus Client + * Copyright (C) 2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef ENUMS_SIMPLETYPES_SPEECH_H +#define ENUMS_SIMPLETYPES_SPEECH_H + +#include "enums/simpletypes/simpledefines.h" + +defBoolEnum(Speech); + +#endif // ENUMS_SIMPLETYPES_SPEECH_H diff --git a/src/text.cpp b/src/text.cpp index 0331b5263..bec055f60 100644 --- a/src/text.cpp +++ b/src/text.cpp @@ -41,9 +41,11 @@ int Text::mInstances = 0; ImageRect Text::mBubble; -Text::Text(const std::string &text, const int x, const int y, +Text::Text(const std::string &text, + const int x, const int y, const Graphics::Alignment alignment, - const Color *const color, const bool isSpeech, + const Color *const color, + const Speech isSpeech, Font *const font) : mFont(font ? font : (gui ? gui->getFont() : nullptr)), mTextChunk(), @@ -54,7 +56,8 @@ Text::Text(const std::string &text, const int x, const int y, mXOffset(0), mText(text), mColor(color), - mOutlineColor(isSpeech ? *color : theme->getColor(Theme::OUTLINE, 255)), + mOutlineColor(isSpeech == Speech_true ? + *color : theme->getColor(Theme::OUTLINE, 255)), mIsSpeech(isSpeech), mTextChanged(true) { @@ -120,7 +123,7 @@ Text::~Text() void Text::setColor(const Color *const color) { mTextChanged = true; - if (mIsSpeech) + if (mIsSpeech == Speech_true) { mColor = color; mOutlineColor = *color; @@ -147,7 +150,7 @@ void Text::adviseXY(const int x, const int y, const bool move) void Text::draw(Graphics *const graphics, const int xOff, const int yOff) { BLOCK_START("Text::draw") - if (mIsSpeech) + if (mIsSpeech == Speech_true) { graphics->drawImageRect(mX - xOff - 5, mY - yOff - 5, @@ -179,7 +182,7 @@ FlashText::FlashText(const std::string &text, const Graphics::Alignment alignment, const Color *const color, Font *const font) : - Text(text, x, y, alignment, color, false, font), + Text(text, x, y, alignment, color, Speech_false, font), mTime(0) { } diff --git a/src/text.h b/src/text.h index 845b96353..916de924e 100644 --- a/src/text.h +++ b/src/text.h @@ -24,6 +24,8 @@ #ifndef TEXT_H #define TEXT_H +#include "enums/simpletypes/speech.h" + #include "gui/fonts/textchunk.h" #include "render/graphics.h" @@ -40,9 +42,11 @@ class Text notfinal /** * Constructor creates a text object to display on the screen. */ - Text(const std::string &text, const int x, const int y, + Text(const std::string &text, + const int x, const int y, const Graphics::Alignment alignment, - const Color *const color, const bool isSpeech = false, + const Color *const color, + const Speech isSpeech = Speech_false, Font *const font = nullptr); A_DELETE_COPY(Text) @@ -83,7 +87,7 @@ class Text notfinal std::string mText; /**< The text to display. */ const Color *mColor; /**< The color of the text. */ Color mOutlineColor; - bool mIsSpeech; /**< Is this text a speech bubble? */ + Speech mIsSpeech; /**< Is this text a speech bubble? */ bool mTextChanged; protected: -- cgit v1.2.3-60-g2f50