summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/message_system.cpp11
-rw-r--r--src/message_system.h1
-rw-r--r--src/renderer.cpp33
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
29class MessageSystem : public System { 30class 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++;