diff options
author | Strangerke | 2016-09-25 07:42:35 +0200 |
---|---|---|
committer | Strangerke | 2016-09-25 07:44:04 +0200 |
commit | 51bef09e4a541ae4ff0a9cf020b5f663e828187e (patch) | |
tree | 1605c0b07765f469f1bd980a61c2607aac31fcd0 /engines/dm/dialog.cpp | |
parent | cce771c0e1c018edc6c047322f58614425192ee6 (diff) | |
download | scummvm-rg350-51bef09e4a541ae4ff0a9cf020b5f663e828187e.tar.gz scummvm-rg350-51bef09e4a541ae4ff0a9cf020b5f663e828187e.tar.bz2 scummvm-rg350-51bef09e4a541ae4ff0a9cf020b5f663e828187e.zip |
DM: reduce dereferencing some more
Diffstat (limited to 'engines/dm/dialog.cpp')
-rw-r--r-- | engines/dm/dialog.cpp | 145 |
1 files changed, 76 insertions, 69 deletions
diff --git a/engines/dm/dialog.cpp b/engines/dm/dialog.cpp index 3fbab203d3..8d16deae9d 100644 --- a/engines/dm/dialog.cpp +++ b/engines/dm/dialog.cpp @@ -43,10 +43,14 @@ void DialogMan::dialogDraw(const char *msg1, const char *msg2, const char *choic static Box dialog2ChoicesPatch = Box(102, 122, 89, 125); static Box dialog4ChoicesPatch = Box(102, 122, 62, 97); - _vm->_displayMan->loadIntoBitmap(kDMGraphicIdxDialogBox, _vm->_displayMan->_bitmapViewport); + EventManager &evtMan = *_vm->_eventMan; + DisplayMan &displMan = *_vm->_displayMan; + TextMan &txtMan = *_vm->_textMan; + + displMan.loadIntoBitmap(kDMGraphicIdxDialogBox, displMan._bitmapViewport); //Strangerke: the version should be replaced by a ScummVM/RogueVM (?) string // TODO: replace with ScummVM version string - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, 192, 7, kDMColorLightGray, kDMColorDarkGary, "V2.2", k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, 192, 7, kDMColorLightGray, kDMColorDarkGary, "V2.2", k136_heightViewport); int16 choiceCount = 1; if (choice2) choiceCount++; @@ -58,31 +62,31 @@ void DialogMan::dialogDraw(const char *msg1, const char *msg2, const char *choic choiceCount++; if (fading) - _vm->_displayMan->startEndFadeToPalette(_vm->_displayMan->_blankBuffer); + displMan.startEndFadeToPalette(displMan._blankBuffer); if (clearScreen) - _vm->_displayMan->fillScreen(kDMColorBlack); + displMan.fillScreen(kDMColorBlack); - _vm->_displayMan->_useByteBoxCoordinates = false; + displMan._useByteBoxCoordinates = false; if (choiceCount == 1) { - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapViewport, constBox1, 0, 64, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapViewport, constBox2, 0, 39, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapViewport, constBox3, 0, 14, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice1, 112, 114); + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapViewport, constBox1, 0, 64, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapViewport, constBox2, 0, 39, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapViewport, constBox3, 0, 14, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); + printCenteredChoice(displMan._bitmapViewport, choice1, 112, 114); } else if (choiceCount == 2) { - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapViewport, dialog2ChoicesPatch, 102, 52, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice1, 112, 77); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice2, 112, 114); + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapViewport, dialog2ChoicesPatch, 102, 52, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); + printCenteredChoice(displMan._bitmapViewport, choice1, 112, 77); + printCenteredChoice(displMan._bitmapViewport, choice2, 112, 114); } else if (choiceCount == 3) { - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice1, 112, 77); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice2, 59, 114); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice3, 166, 114); + printCenteredChoice(displMan._bitmapViewport, choice1, 112, 77); + printCenteredChoice(displMan._bitmapViewport, choice2, 59, 114); + printCenteredChoice(displMan._bitmapViewport, choice3, 166, 114); } else if (choiceCount == 4) { - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapViewport, dialog4ChoicesPatch, 102, 99, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice1, 59, 77); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice2, 166, 77); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice3, 59, 114); - printCenteredChoice(_vm->_displayMan->_bitmapViewport, choice4, 166, 114); + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapViewport, dialog4ChoicesPatch, 102, 99, k112_byteWidthViewport, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport, k136_heightViewport); + printCenteredChoice(displMan._bitmapViewport, choice1, 59, 77); + printCenteredChoice(displMan._bitmapViewport, choice2, 166, 77); + printCenteredChoice(displMan._bitmapViewport, choice3, 59, 114); + printCenteredChoice(displMan._bitmapViewport, choice4, 166, 114); } int16 textPosX; @@ -93,14 +97,14 @@ void DialogMan::dialogDraw(const char *msg1, const char *msg2, const char *choic if (isMessageOnTwoLines(msg1, L1312_ac_StringPart1, L1313_ac_StringPart2)) { textPosY = 21; textPosX = 113 - ((strlen(L1312_ac_StringPart1) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, L1312_ac_StringPart1, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, L1312_ac_StringPart1, k136_heightViewport); textPosY += 8; textPosX = 113 - ((strlen(L1313_ac_StringPart2) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, L1313_ac_StringPart2, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, L1313_ac_StringPart2, k136_heightViewport); textPosY += 8; } else { textPosX = 113 - ((strlen(msg1) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, msg1, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorYellow, kDMColorLightBrown, msg1, k136_heightViewport); textPosY += 8; } } @@ -109,30 +113,30 @@ void DialogMan::dialogDraw(const char *msg1, const char *msg2, const char *choic char L1313_ac_StringPart2[70]; if (isMessageOnTwoLines(msg2, L1312_ac_StringPart1, L1313_ac_StringPart2)) { textPosX = 113 - ((strlen(L1312_ac_StringPart1) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, L1312_ac_StringPart1, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, L1312_ac_StringPart1, k136_heightViewport); textPosY += 8; textPosX = 113 - ((strlen(L1313_ac_StringPart2) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, L1313_ac_StringPart2, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, L1313_ac_StringPart2, k136_heightViewport); } else { textPosX = 113 - ((strlen(msg2) * 6) >> 1); - _vm->_textMan->printTextToBitmap(_vm->_displayMan->_bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, msg2, k136_heightViewport); + txtMan.printTextToBitmap(displMan._bitmapViewport, k112_byteWidthViewport, textPosX, textPosY, kDMColorGold, kDMColorLightBrown, msg2, k136_heightViewport); } } if (screenDialog) { Box displayBox(47, 270, 33, 168); - _vm->_eventMan->showMouse(); - _vm->_displayMan->blitToScreen(_vm->_displayMan->_bitmapViewport, &displayBox, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport); - _vm->_eventMan->hideMouse(); + evtMan.showMouse(); + displMan.blitToScreen(displMan._bitmapViewport, &displayBox, k112_byteWidthViewport, kDMColorNoTransparency, k136_heightViewport); + evtMan.hideMouse(); } else { - _vm->_displayMan->drawViewport(k0_viewportNotDungeonView); + displMan.drawViewport(k0_viewportNotDungeonView); _vm->delay(1); } if (fading) - _vm->_displayMan->startEndFadeToPalette(_vm->_displayMan->_paletteTopAndBottomScreen); + displMan.startEndFadeToPalette(displMan._paletteTopAndBottomScreen); - _vm->_displayMan->_drawFloorAndCeilingRequested = true; - _vm->_displayMan->updateScreen(); + displMan._drawFloorAndCeilingRequested = true; + displMan.updateScreen(); } void DialogMan::printCenteredChoice(byte *bitmap, const char *str, int16 posX, int16 posY) { @@ -158,96 +162,99 @@ bool DialogMan::isMessageOnTwoLines(const char *str, char *part1, char *part2) { } int16 DialogMan::getChoice(uint16 choiceCount, uint16 dialogSetIndex, int16 driveType, int16 automaticChoiceIfFlopyInDrive) { - _vm->_eventMan->hideMouse(); - MouseInput *primaryMouseInputBackup = _vm->_eventMan->_primaryMouseInput; - MouseInput *secondaryMouseInputBackup = _vm->_eventMan->_secondaryMouseInput; - KeyboardInput *primaryKeyboardInputBackup = _vm->_eventMan->_primaryKeyboardInput; - KeyboardInput *secondaryKeyboardInputBackup = _vm->_eventMan->_secondaryKeyboardInput; - _vm->_eventMan->_secondaryMouseInput = nullptr; - _vm->_eventMan->_primaryKeyboardInput = nullptr; - _vm->_eventMan->_secondaryKeyboardInput = nullptr; - _vm->_eventMan->_primaryMouseInput = _vm->_eventMan->_primaryMouseInputDialogSets[dialogSetIndex][choiceCount - 1]; - _vm->_eventMan->discardAllInput(); + EventManager &evtMan = *_vm->_eventMan; + DisplayMan &displMan = *_vm->_displayMan; + + evtMan.hideMouse(); + MouseInput *primaryMouseInputBackup = evtMan._primaryMouseInput; + MouseInput *secondaryMouseInputBackup = evtMan._secondaryMouseInput; + KeyboardInput *primaryKeyboardInputBackup = evtMan._primaryKeyboardInput; + KeyboardInput *secondaryKeyboardInputBackup = evtMan._secondaryKeyboardInput; + evtMan._secondaryMouseInput = nullptr; + evtMan._primaryKeyboardInput = nullptr; + evtMan._secondaryKeyboardInput = nullptr; + evtMan._primaryMouseInput = evtMan._primaryMouseInputDialogSets[dialogSetIndex][choiceCount - 1]; + evtMan.discardAllInput(); _selectedDialogChoice = 99; do { Common::Event key; - Common::EventType eventType = _vm->_eventMan->processInput(&key); - _vm->_eventMan->processCommandQueue(); + Common::EventType eventType = evtMan.processInput(&key); + evtMan.processCommandQueue(); _vm->delay(1); - _vm->_displayMan->updateScreen(); + displMan.updateScreen(); if ((_selectedDialogChoice == 99) && (choiceCount == 1) && (eventType != Common::EVENT_INVALID) && key.kbd.keycode == Common::KEYCODE_RETURN) { /* If a choice has not been made yet with the mouse and the dialog has only one possible choice and carriage return was pressed on the keyboard */ _selectedDialogChoice = kDMDialogChoice1; } } while (_selectedDialogChoice == 99); - _vm->_displayMan->_useByteBoxCoordinates = false; - Box boxA = _vm->_eventMan->_primaryMouseInput[_selectedDialogChoice - 1]._hitbox; + displMan._useByteBoxCoordinates = false; + Box boxA = evtMan._primaryMouseInput[_selectedDialogChoice - 1]._hitbox; boxA._rect.left -= 3; boxA._rect.right += 3; boxA._rect.top -= 3; boxA._rect.bottom += 4; - _vm->_eventMan->showMouse(); - _vm->_displayMan->_drawFloorAndCeilingRequested = true; + evtMan.showMouse(); + displMan._drawFloorAndCeilingRequested = true; Box boxB(0, 0, boxA._rect.right - boxA._rect.left + 3, boxA._rect.bottom - boxA._rect.top + 3); - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapScreen, _vm->_displayMan->_bitmapViewport, + displMan.blitToBitmap(displMan._bitmapScreen, displMan._bitmapViewport, boxB, boxA._rect.left, boxA._rect.top, k160_byteWidthScreen, k160_byteWidthScreen, kDMColorNoTransparency, 200, 25); _vm->delay(1); boxB = boxA; boxB._rect.bottom = boxB._rect.top; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightBrown); + displMan.fillScreenBox(boxB, kDMColorLightBrown); boxB = boxA; boxB._rect.right = boxB._rect.left; boxB._rect.bottom--; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightBrown); + displMan.fillScreenBox(boxB, kDMColorLightBrown); boxB = boxA; boxB._rect.bottom--; boxB._rect.top = boxB._rect.bottom; boxB._rect.left -= 2; - _vm->_displayMan->fillScreenBox(boxB, kDMColorBlack); + displMan.fillScreenBox(boxB, kDMColorBlack); boxB = boxA; boxB._rect.left = boxB._rect.right; - _vm->_displayMan->fillScreenBox(boxB, kDMColorBlack); + displMan.fillScreenBox(boxB, kDMColorBlack); _vm->delay(2); boxB = boxA; boxB._rect.top++; boxB._rect.bottom = boxB._rect.top; boxB._rect.right -= 2; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightBrown); + displMan.fillScreenBox(boxB, kDMColorLightBrown); boxB = boxA; boxB._rect.left++; boxB._rect.right = boxB._rect.left; boxB._rect.bottom--; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightBrown); + displMan.fillScreenBox(boxB, kDMColorLightBrown); boxB = boxA; boxB._rect.right--; boxB._rect.left = boxB._rect.right; - _vm->_displayMan->fillScreenBox(boxB, kDMColorBlack); + displMan.fillScreenBox(boxB, kDMColorBlack); boxB = boxA; boxB._rect.top = boxB._rect.bottom = boxB._rect.bottom - 2; boxB._rect.left++; - _vm->_displayMan->fillScreenBox(boxB, kDMColorBlack); + displMan.fillScreenBox(boxB, kDMColorBlack); boxB = boxA; boxB._rect.top = boxB._rect.bottom = boxB._rect.bottom + 2; boxB._rect.left--; boxB._rect.right += 2; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightestGray); + displMan.fillScreenBox(boxB, kDMColorLightestGray); boxB = boxA; boxB._rect.left = boxB._rect.right = boxB._rect.right + 3; boxB._rect.bottom += 2; - _vm->_displayMan->fillScreenBox(boxB, kDMColorLightestGray); + displMan.fillScreenBox(boxB, kDMColorLightestGray); _vm->delay(2); boxA._rect.right += 3; boxA._rect.bottom += 3; - _vm->_displayMan->blitToBitmap(_vm->_displayMan->_bitmapViewport, _vm->_displayMan->_bitmapScreen, + displMan.blitToBitmap(displMan._bitmapViewport, displMan._bitmapScreen, boxA, 0, 0, k160_byteWidthScreen, k160_byteWidthScreen, kDMColorNoTransparency, 25, k200_heightScreen); - _vm->_eventMan->hideMouse(); - _vm->_eventMan->_primaryMouseInput = primaryMouseInputBackup; - _vm->_eventMan->_secondaryMouseInput = secondaryMouseInputBackup; - _vm->_eventMan->_primaryKeyboardInput = primaryKeyboardInputBackup; - _vm->_eventMan->_secondaryKeyboardInput = secondaryKeyboardInputBackup; - _vm->_eventMan->discardAllInput(); - _vm->_eventMan->showMouse(); + evtMan.hideMouse(); + evtMan._primaryMouseInput = primaryMouseInputBackup; + evtMan._secondaryMouseInput = secondaryMouseInputBackup; + evtMan._primaryKeyboardInput = primaryKeyboardInputBackup; + evtMan._secondaryKeyboardInput = secondaryKeyboardInputBackup; + evtMan.discardAllInput(); + evtMan.showMouse(); return _selectedDialogChoice; } } |