aboutsummaryrefslogtreecommitdiff
path: root/queen
diff options
context:
space:
mode:
authorGregory Montoir2004-02-21 08:52:25 +0000
committerGregory Montoir2004-02-21 08:52:25 +0000
commit356bed1de9be51028b4230f4a595167784a36105 (patch)
tree60342950df9ca7eea85453012ce077fdf3e12b2d /queen
parenta75b84dc1be8eb20c40111f477192be780ee4bd8 (diff)
downloadscummvm-rg350-356bed1de9be51028b4230f4a595167784a36105.tar.gz
scummvm-rg350-356bed1de9be51028b4230f4a595167784a36105.tar.bz2
scummvm-rg350-356bed1de9be51028b4230f4a595167784a36105.zip
Fixed arrow dialogue glitches (partial display) in non-english versions. This was due to a (wrong) blitting order of the bobs, arrows are now the last ones.
svn-id: r12959
Diffstat (limited to 'queen')
-rw-r--r--queen/display.cpp2
-rw-r--r--queen/graphics.cpp19
-rw-r--r--queen/graphics.h3
-rw-r--r--queen/journal.cpp10
-rw-r--r--queen/talk.cpp18
-rw-r--r--queen/talk.h2
6 files changed, 33 insertions, 21 deletions
diff --git a/queen/display.cpp b/queen/display.cpp
index aad8848bf0..3795c2f998 100644
--- a/queen/display.cpp
+++ b/queen/display.cpp
@@ -836,7 +836,7 @@ void Display::drawTexts() {
for (y = GAME_SCREEN_HEIGHT - 1; y > 0; --y) {
const TextSlot *pts = &_texts[y];
if (!pts->text.isEmpty()) {
- _vm->display()->drawText(pts->x, y, pts->color, pts->text.c_str(), pts->outlined);
+ drawText(pts->x, y, pts->color, pts->text.c_str(), pts->outlined);
}
}
}
diff --git a/queen/graphics.cpp b/queen/graphics.cpp
index b12cdd2280..e845b4e6c8 100644
--- a/queen/graphics.cpp
+++ b/queen/graphics.cpp
@@ -192,11 +192,26 @@ Graphics::~Graphics() {
void Graphics::unpackControlBank() {
_vm->bankMan()->load("control.BBK",17);
_vm->bankMan()->unpack(1, 1, 17); // Mouse pointer
- _vm->bankMan()->unpack(3, 3, 17); // Up arrow dialogue
- _vm->bankMan()->unpack(4, 4, 17); // Down arrow dialogue
+ // unpack arrows frames and change hotspot to be always on top
+ for (int i = 3; i <= 4; ++i) {
+ _vm->bankMan()->unpack(i, i, 17);
+ BobFrame *bf = _vm->bankMan()->fetchFrame(i);
+ bf->yhotspot += 200;
+ }
_vm->bankMan()->close(17);
}
+void Graphics::setupArrows() {
+ int scrollX = _vm->display()->horizontalScroll();
+ BobSlot *arrow;
+ arrow = bob(ARROW_BOB_UP);
+ arrow->curPos(303 + 8 + scrollX, 150 + 1 + 200);
+ arrow->frameNum = 3;
+ arrow = bob(ARROW_BOB_DOWN);
+ arrow->curPos(303 + scrollX, 175 + 200);
+ arrow->frameNum = 4;
+}
+
void Graphics::setupMouseCursor() {
BobFrame *bf = _vm->bankMan()->fetchFrame(1);
_vm->display()->setMouseCursor(bf->data, bf->width, bf->height);
diff --git a/queen/graphics.h b/queen/graphics.h
index f786e20703..16d536a1f8 100644
--- a/queen/graphics.h
+++ b/queen/graphics.h
@@ -95,6 +95,7 @@ public:
~Graphics();
void unpackControlBank();
+ void setupArrows();
void setupMouseCursor();
void drawBob(const BobSlot *bs, const BobFrame *bf, const Box *box, int16 x, int16 y);
@@ -140,6 +141,8 @@ public:
void update(uint16 room);
enum {
+ ARROW_BOB_UP = 62,
+ ARROW_BOB_DOWN = 63,
MAX_BOBS_NUMBER = 64,
MAX_STRING_LENGTH = 255,
MAX_STRING_SIZE = (MAX_STRING_LENGTH + 1),
diff --git a/queen/journal.cpp b/queen/journal.cpp
index 88f70f3cb8..7c1563d12c 100644
--- a/queen/journal.cpp
+++ b/queen/journal.cpp
@@ -467,14 +467,20 @@ void Journal::showInformationBox() {
case 'E':
_vm->display()->setTextCentered(144, "English", false);
break;
+ case 'F' :
+ _vm->display()->setTextCentered(144, "Fran\x87""ais", false);
+ break;
case 'G':
_vm->display()->setTextCentered(144, "Deutsch", false);
break;
+ case 'H':
+ _vm->display()->setTextCentered(144, "Hebrew", false);
+ break;
case 'I':
_vm->display()->setTextCentered(144, "Italiano", false);
break;
- case 'F' :
- _vm->display()->setTextCentered(144, "Fran\x87""ais", false);
+ case 'S':
+ _vm->display()->setTextCentered(144, "Espa\xA4""ol", false);
break;
}
char versionId[13];
diff --git a/queen/talk.cpp b/queen/talk.cpp
index f0fb3b7aea..1d0223f19b 100644
--- a/queen/talk.cpp
+++ b/queen/talk.cpp
@@ -1279,7 +1279,6 @@ int16 Talk::selectSentence() {
// Function TALK_BOB (lines 577-739) in talk.c
int selectedSentence = 0;
- int scrollX = _vm->display()->horizontalScroll();
int startOption = 1;
int optionLines = 0;
char optionText[5][MAX_STRING_SIZE];
@@ -1290,20 +1289,11 @@ int16 Talk::selectSentence() {
_vm->display()->textCurrentColor(INK_TALK_NORMAL);
- // These bobs are up and down arrows
-
- BobSlot *arrowBobUp = _vm->graphics()->bob(ARROW_BOB_UP);
- BobSlot *arrowBobDown = _vm->graphics()->bob(ARROW_BOB_DOWN);
-
- arrowBobUp->x = 303 + 8 + scrollX;
- arrowBobUp->y = 150 + 1;
- arrowBobUp->frameNum = 3;
+ _vm->graphics()->setupArrows();
+ BobSlot *arrowBobUp = _vm->graphics()->bob(Graphics::ARROW_BOB_UP);
arrowBobUp->active = false;
-
- arrowBobDown->x = 303 + scrollX;
- arrowBobDown->y = 175;
- arrowBobDown->frameNum = 4;
- arrowBobDown->active = false;
+ BobSlot *arrowBobDown = _vm->graphics()->bob(Graphics::ARROW_BOB_DOWN);
+ arrowBobDown->active = false;
bool rezone = true;
diff --git a/queen/talk.h b/queen/talk.h
index beaaa05cbc..1cd2da1f0f 100644
--- a/queen/talk.h
+++ b/queen/talk.h
@@ -57,8 +57,6 @@ private:
MAX_STRING_SIZE = (MAX_STRING_LENGTH + 1),
MAX_TEXT_WIDTH = (320-18),
PUSHUP = 4,
- ARROW_BOB_UP = 62,
- ARROW_BOB_DOWN = 63,
ARROW_ZONE_UP = 5,
ARROW_ZONE_DOWN = 6,
DOG_HEADER_SIZE = 20,