diff options
-rw-r--r-- | queen/display.cpp | 2 | ||||
-rw-r--r-- | queen/graphics.cpp | 19 | ||||
-rw-r--r-- | queen/graphics.h | 3 | ||||
-rw-r--r-- | queen/journal.cpp | 10 | ||||
-rw-r--r-- | queen/talk.cpp | 18 | ||||
-rw-r--r-- | queen/talk.h | 2 |
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, |