diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-12 00:14:38 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-12 00:14:38 -0500 |
| commit | 19be2ac58b09c5240a32e6a4f41cd9f6cda03d07 (patch) | |
| tree | 2899673572cdb25645f425c733c57bb9c719d5b7 /src | |
| parent | 81d1afa871c947ec6ba44e11cd6041fe16ed5756 (diff) | |
| download | tanetane-19be2ac58b09c5240a32e6a4f41cd9f6cda03d07.tar.gz tanetane-19be2ac58b09c5240a32e6a4f41cd9f6cda03d07.tar.bz2 tanetane-19be2ac58b09c5240a32e6a4f41cd9f6cda03d07.zip | |
Added message bullets
Diffstat (limited to 'src')
| -rw-r--r-- | src/message_system.cpp | 11 | ||||
| -rw-r--r-- | src/message_system.h | 1 | ||||
| -rw-r--r-- | src/renderer.cpp | 33 |
3 files changed, 32 insertions, 13 deletions
| diff --git a/src/message_system.cpp b/src/message_system.cpp index a969427..98b5f83 100644 --- a/src/message_system.cpp +++ b/src/message_system.cpp | |||
| @@ -124,6 +124,12 @@ void MessageSystem::displayMessage(std::string_view msg, std::string speakerName | |||
| 124 | } | 124 | } |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | bool bulleted = false; | ||
| 128 | if (text.substr(0, 2) == "* ") { | ||
| 129 | text.erase(0, 2); | ||
| 130 | bulleted = true; | ||
| 131 | } | ||
| 132 | |||
| 127 | auto words = splitStr<std::list<std::string>>(text, " "); | 133 | auto words = splitStr<std::list<std::string>>(text, " "); |
| 128 | 134 | ||
| 129 | std::string curLine; | 135 | std::string curLine; |
| @@ -145,9 +151,10 @@ void MessageSystem::displayMessage(std::string_view msg, std::string speakerName | |||
| 145 | } | 151 | } |
| 146 | 152 | ||
| 147 | if (nextWidth > MESSAGE_TEXT_WIDTH) { | 153 | if (nextWidth > MESSAGE_TEXT_WIDTH) { |
| 148 | lines_.push_back({.text = curLine}); | 154 | lines_.push_back({.text = curLine, .bulleted = bulleted}); |
| 149 | curLine = word; | 155 | curLine = word; |
| 150 | curWidth = wordWidth + game_.getFont().getCharacterWidth(' '); | 156 | curWidth = wordWidth + game_.getFont().getCharacterWidth(' '); |
| 157 | bulleted = false; | ||
| 151 | 158 | ||
| 152 | if (shouldAddBlank) { | 159 | if (shouldAddBlank) { |
| 153 | shouldAddBlank = false; | 160 | shouldAddBlank = false; |
| @@ -166,7 +173,7 @@ void MessageSystem::displayMessage(std::string_view msg, std::string speakerName | |||
| 166 | firstWord = false; | 173 | firstWord = false; |
| 167 | } | 174 | } |
| 168 | 175 | ||
| 169 | lines_.push_back({.text = curLine}); | 176 | lines_.push_back({.text = curLine, .bulleted = bulleted}); |
| 170 | 177 | ||
| 171 | if (shouldAddBlank) { | 178 | if (shouldAddBlank) { |
| 172 | shouldAddBlank = false; | 179 | shouldAddBlank = false; |
| diff --git a/src/message_system.h b/src/message_system.h index ea27f14..7f9d287 100644 --- a/src/message_system.h +++ b/src/message_system.h | |||
| @@ -24,6 +24,7 @@ struct MessageLine { | |||
| 24 | bool pause = false; | 24 | bool pause = false; |
| 25 | bool isChoice = false; | 25 | bool isChoice = false; |
| 26 | int choicePos[2] = {-1, -1}; | 26 | int choicePos[2] = {-1, -1}; |
| 27 | bool bulleted = false; | ||
| 27 | }; | 28 | }; |
| 28 | 29 | ||
| 29 | class MessageSystem : public System { | 30 | class MessageSystem : public System { |
| diff --git a/src/renderer.cpp b/src/renderer.cpp index 0c70ef5..0e77bb9 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
| @@ -201,17 +201,28 @@ void Renderer::render(Game& game) { | |||
| 201 | 201 | ||
| 202 | // 18x, 127y1, 143y2 | 202 | // 18x, 127y1, 143y2 |
| 203 | if (line.charsRevealed > 0) { | 203 | if (line.charsRevealed > 0) { |
| 204 | SDL_Rect srcRect { | 204 | { |
| 205 | 0, 0, messageLines_[lineIndex].charIndexToWidth[line.charsRevealed], | 205 | SDL_Rect srcRect { |
| 206 | game.getFont().getCharacterHeight() | 206 | 0, 0, messageLines_[lineIndex].charIndexToWidth[line.charsRevealed], |
| 207 | }; | 207 | game.getFont().getCharacterHeight() |
| 208 | SDL_Rect destRect { | 208 | }; |
| 209 | 18, | 209 | SDL_Rect destRect { |
| 210 | 127 + 16 * lineIndex, | 210 | 18, |
| 211 | srcRect.w, | 211 | 127 + 16 * lineIndex, |
| 212 | srcRect.h }; | 212 | srcRect.w, |
| 213 | 213 | srcRect.h }; | |
| 214 | SDL_RenderCopy(ren_.get(), messageLines_[lineIndex].renderedTex.get(), &srcRect, &destRect); | 214 | |
| 215 | SDL_RenderCopy(ren_.get(), messageLines_[lineIndex].renderedTex.get(), &srcRect, &destRect); | ||
| 216 | } | ||
| 217 | |||
| 218 | if (line.bulleted) { | ||
| 219 | vec2i charLoc = game.getFont().getCharacterLocation('^'); | ||
| 220 | vec2i charSize = game.getFont().getCharacterSize('^'); | ||
| 221 | SDL_Rect srcRect { charLoc.x(), charLoc.y(), charSize.w(), charSize.h() }; | ||
| 222 | SDL_Rect destRect { 13, 127 + 16 * lineIndex, charSize.w(), charSize.h() }; | ||
| 223 | |||
| 224 | SDL_RenderCopy(ren_.get(), textures_.at(game.getFont().getTextureId()).get(), &srcRect, &destRect); | ||
| 225 | } | ||
| 215 | } | 226 | } |
| 216 | 227 | ||
| 217 | lineIndex++; | 228 | lineIndex++; |
