aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/dialogue_menu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/dialogue_menu.cpp')
-rw-r--r--engines/bladerunner/dialogue_menu.cpp53
1 files changed, 25 insertions, 28 deletions
diff --git a/engines/bladerunner/dialogue_menu.cpp b/engines/bladerunner/dialogue_menu.cpp
index e13e69cbd0..2d55deee3f 100644
--- a/engines/bladerunner/dialogue_menu.cpp
+++ b/engines/bladerunner/dialogue_menu.cpp
@@ -33,14 +33,10 @@
#include "common/rect.h"
#include "common/util.h"
-#define LINE_HEIGHT 9
-#define BORDER_SIZE 10
-
namespace BladeRunner {
-DialogueMenu::DialogueMenu(BladeRunnerEngine *vm)
- : _vm(vm)
-{
+DialogueMenu::DialogueMenu(BladeRunnerEngine *vm) {
+ _vm = vm;
reset();
_textResource = new TextResource(_vm);
_shapes.reserve(8);
@@ -56,7 +52,7 @@ DialogueMenu::~DialogueMenu() {
delete _textResource;
}
-bool DialogueMenu::loadText(const char *name) {
+bool DialogueMenu::loadText(const Common::String &name) {
bool r = _textResource->open(name);
if (!r) {
error("Failed to load dialogue menu text");
@@ -104,15 +100,15 @@ bool DialogueMenu::clearList() {
}
bool DialogueMenu::addToList(int answer, bool done, int priorityPolite, int priorityNormal, int prioritySurly) {
- if (_listSize >= 10) {
+ if (_listSize >= kMaxItems) {
return false;
}
if (getAnswerIndex(answer) != -1) {
return false;
}
- const char *text = _textResource->getText(answer);
- if (!text || strlen(text) >= 50) {
+ const Common::String &text = _textResource->getText(answer);
+ if (text.empty() || text.size() >= 50) {
return false;
}
@@ -145,8 +141,9 @@ bool DialogueMenu::addToListNeverRepeatOnceSelected(int answer, int priorityPoli
}
int DialogueMenu::queryInput() {
- if (!_isVisible || _listSize == 0)
+ if (!_isVisible || _listSize == 0) {
return -1;
+ }
int answer = -1;
if (_listSize == 1) {
@@ -230,15 +227,15 @@ int DialogueMenu::queryInput() {
return answer;
}
-int DialogueMenu::listSize() {
+int DialogueMenu::listSize() const {
return _listSize;
}
-bool DialogueMenu::isVisible() {
+bool DialogueMenu::isVisible() const {
return _isVisible;
}
-bool DialogueMenu::isOpen() {
+bool DialogueMenu::isOpen() const {
return _isVisible || _waitingForInput;
}
@@ -247,7 +244,7 @@ void DialogueMenu::tick(int x, int y) {
return;
}
- int line = (y - (_screenY + BORDER_SIZE)) / LINE_HEIGHT;
+ int line = (y - (_screenY + kBorderSize)) / kLineHeight;
line = CLIP(line, 0, _listSize - 1);
_selectedItemIndex = line;
@@ -289,13 +286,13 @@ void DialogueMenu::draw(Graphics::Surface &s) {
const int x1 = _screenX;
const int y1 = _screenY;
- const int x2 = _screenX + BORDER_SIZE + _maxItemWidth;
- const int y2 = _screenY + BORDER_SIZE + _listSize * LINE_HEIGHT;
+ const int x2 = _screenX + kBorderSize + _maxItemWidth;
+ const int y2 = _screenY + kBorderSize + _listSize * kLineHeight;
darkenRect(s, x1 + 8, y1 + 8, x2 + 2, y2 + 2);
- int x = x1 + BORDER_SIZE;
- int y = y1 + BORDER_SIZE;
+ int x = x1 + kBorderSize;
+ int y = y1 + kBorderSize;
Common::Point mouse = _vm->getMousePos();
if (mouse.x >= x && mouse.x < x2) {
@@ -315,7 +312,7 @@ void DialogueMenu::draw(Graphics::Surface &s) {
_shapes[4].draw(s, x2, y);
uint16 color = ((_items[i].colorIntensity >> 1) << 10) | ((_items[i].colorIntensity >> 1) << 6) | _items[i].colorIntensity;
_vm->_mainFont->drawColor(_items[i].text, s, x, y, color);
- y += LINE_HEIGHT;
+ y += kLineHeight;
}
for (; x != x2; ++x) {
_shapes[6].draw(s, x, y1);
@@ -323,7 +320,7 @@ void DialogueMenu::draw(Graphics::Surface &s) {
}
}
-int DialogueMenu::getAnswerIndex(int answer) {
+int DialogueMenu::getAnswerIndex(int answer) const {
for (int i = 0; i != _listSize; ++i) {
if (_items[i].answerValue == answer) {
return i;
@@ -333,7 +330,7 @@ int DialogueMenu::getAnswerIndex(int answer) {
return -1;
}
-const char *DialogueMenu::getText(int id) {
+const char *DialogueMenu::getText(int id) const {
return _textResource->getText((uint32)id);
}
@@ -344,8 +341,8 @@ void DialogueMenu::calculatePosition(int unusedX, int unusedY) {
}
_maxItemWidth += 2;
- int w = BORDER_SIZE + _shapes[4].getWidth() + _maxItemWidth;
- int h = BORDER_SIZE + _shapes[7].getHeight() + LINE_HEIGHT * _listSize;
+ int w = kBorderSize + _shapes[4].getWidth() + _maxItemWidth;
+ int h = kBorderSize + _shapes[7].getHeight() + kLineHeight * _listSize;
_screenX = _centerX - w / 2;
_screenY = _centerY - h / 2;
@@ -361,7 +358,7 @@ void DialogueMenu::mouseUp() {
_waitingForInput = false;
}
-bool DialogueMenu::waitingForInput() {
+bool DialogueMenu::waitingForInput() const {
return _waitingForInput;
}
@@ -370,7 +367,7 @@ void DialogueMenu::clear() {
_waitingForInput = false;
_selectedItemIndex = 0;
_listSize = 0;
- for (int i = 0; i != 10; ++i) {
+ for (int i = 0; i != kMaxItems; ++i) {
_items[i].text.clear();
_items[i].answerValue = -1;
_items[i].isDone = 0;
@@ -380,7 +377,7 @@ void DialogueMenu::clear() {
_items[i].colorIntensity = 0;
}
_neverRepeatListSize = 0;
- for (int i = 0; i != 100; ++i) {
+ for (int i = 0; i != kMaxRepeatHistory; ++i) {
_neverRepeatValues[i] = -1;
_neverRepeatWasSelected[i] = false;
}
@@ -402,7 +399,7 @@ void DialogueMenu::darkenRect(Graphics::Surface &s, int x1, int y1, int x2, int
if (x1 < x2 && y1 < y2) {
for (int y = y1; y != y2; ++y) {
for (int x = x1; x != x2; ++x) {
- uint16 *p = (uint16*)s.getBasePtr(x, y);
+ uint16 *p = (uint16 *)s.getBasePtr(x, y);
*p = (*p & 0x739C) >> 1; // 0 11100 11100 11100
}
}