forked from miki151/keeperrl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
message_buffer.cpp
57 lines (46 loc) · 1.33 KB
/
message_buffer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stdafx.h"
#include "message_buffer.h"
using namespace std;
MessageBuffer messageBuffer;
void correct(string& msg) {
if (islower(msg[0]))
msg[0] = toupper(msg[0]);
if (msg.size() > 1 && msg[0] == '\"' && islower(msg[1]))
msg[1] = toupper(msg[1]);
if (msg.back() != '.' && msg.back() != '?' && msg.back() != '!' && msg.back() != '\"')
msg.append(".");
}
void MessageBuffer::addMessage(string msg) {
Debug() << "MSG " << msg;
CHECK(view != nullptr) << "Message buffer not initialized.";
if (msg == "")
return;
bool imp = isImportant(msg);
if (imp)
removeImportant(msg);
correct(msg);
if (imp)
view->addImportantMessage(msg);
else {
view->addMessage(msg);
}
messages.push_back(msg);
}
void MessageBuffer::initialize(View* view) {
this->view = view;
messages.clear();
}
void MessageBuffer::showHistory() {
view->presentList("Messages:", View::getListElem(messages), true);
}
const static string importantPref = "IMPORTANT";
string MessageBuffer::important(const string& msg) {
return importantPref + msg;
}
bool MessageBuffer::isImportant(const string& msg) {
return msg.size() > importantPref.size() && msg.substr(0, importantPref.size()) == importantPref;
}
void MessageBuffer::removeImportant(string& msg) {
CHECK(isImportant(msg));
msg = msg.substr(importantPref.size());
}