aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/lure/room.cpp1
-rw-r--r--engines/lure/surface.cpp25
2 files changed, 23 insertions, 3 deletions
diff --git a/engines/lure/room.cpp b/engines/lure/room.cpp
index c12372a499..5d04fea36b 100644
--- a/engines/lure/room.cpp
+++ b/engines/lure/room.cpp
@@ -695,6 +695,7 @@ void Room::setTalkDialog(uint16 srcCharacterId, uint16 destCharacterId, uint16 u
_talkDialogX = FULL_SCREEN_WIDTH - 10 - TALK_DIALOG_WIDTH;
_talkDialogY = TALK_DIALOG_Y;
+ debugC(ERROR_DETAILED, kLureDebugAnimations, "Room::setTalkDialog end");
}
// Checks to see if a talk dialog is active, and if so if the mouse is in
diff --git a/engines/lure/surface.cpp b/engines/lure/surface.cpp
index 4b291de58b..ad574205d8 100644
--- a/engines/lure/surface.cpp
+++ b/engines/lure/surface.cpp
@@ -321,6 +321,7 @@ uint16 Surface::textWidth(const char *s, int numChars) {
}
void Surface::wordWrap(char *text, uint16 width, char **&lines, uint8 &numLines) {
+ debugC(ERROR_INTERMEDIATE, kLureDebugStrings, "wordWrap(text=%s, width=%d", text, width);
numLines = 1;
uint16 lineWidth = 0;
char *s;
@@ -342,13 +343,23 @@ void Surface::wordWrap(char *text, uint16 width, char **&lines, uint8 &numLines)
newLine = false;
}
+ debugC(ERROR_DETAILED, kLureDebugStrings, "word scanning: start=%xh, after=%xh, newLine=%d",
+ (uint32)(wordStart - text), (uint32)((wordEnd == NULL) ? -1 : wordEnd - text), newLine ? 1 : 0);
+
if (wordEnd) {
if (!newLine) --wordEnd;
} else {
- wordEnd = strchr(s, '\0') - 1;
+ wordEnd = strchr(wordStart, '\0') - 1;
}
- uint16 wordSize = textWidth(s, (int) (wordEnd - s + 1));
+ int wordBytes = (int) (wordEnd - s + 1);
+ uint16 wordSize = textWidth(s, wordBytes);
+ if (gDebugLevel >= ERROR_DETAILED) {
+ char wordBuffer[MAX_DESC_SIZE];
+ strncpy(wordBuffer, wordStart, wordBytes);
+ wordBuffer[wordBytes] = '\0';
+ debugC(ERROR_DETAILED, kLureDebugStrings, "word='%s', size=%d", wordBuffer, wordSize);
+ }
if (lineWidth + wordSize > width) {
// Break word onto next line
@@ -372,8 +383,13 @@ void Surface::wordWrap(char *text, uint16 width, char **&lines, uint8 &numLines)
// Set up a list for the start of each line
lines = (char **) Memory::alloc(sizeof(char *) * numLines);
lines[0] = text;
- for (int ctr = 1; ctr < numLines; ++ctr)
+ debugC(ERROR_DETAILED, kLureDebugStrings, "wordWrap lines[0]='%s'", lines[0]);
+ for (int ctr = 1; ctr < numLines; ++ctr) {
lines[ctr] = strchr(lines[ctr-1], 0) + 1;
+ debugC(ERROR_DETAILED, kLureDebugStrings, "wordWrap lines[%d]='%s'", ctr, lines[ctr]);
+ }
+
+ debugC(ERROR_INTERMEDIATE, kLureDebugStrings, "wordWrap end - numLines=%d", numLines);
}
Surface *Surface::newDialog(uint16 width, uint8 numLines, const char **lines, bool varLength, uint8 colour) {
@@ -653,6 +669,8 @@ TalkDialog::TalkDialog(uint16 characterId, uint16 destCharacterId, uint16 active
_lines, _numLines);
_endLine = 0; _endIndex = 0;
+ debugC(ERROR_DETAILED, kLureDebugAnimations, "Creating talk dialog for %d lines", _numLines);
+
_surface = new Surface(TALK_DIALOG_WIDTH,
(_numLines + 1) * FONT_HEIGHT + TALK_DIALOG_EDGE_SIZE * 4);
@@ -712,6 +730,7 @@ TalkDialog::TalkDialog(uint16 characterId, uint16 destCharacterId, uint16 active
uint16 charWidth = Surface::textWidth(srcCharName);
_surface->writeString((TALK_DIALOG_WIDTH-charWidth)/2, TALK_DIALOG_EDGE_SIZE + 2,
srcCharName, true, DIALOG_WHITE_COLOUR);
+ debugC(ERROR_DETAILED, kLureDebugAnimations, "TalkDialog end");
}
TalkDialog::~TalkDialog() {