aboutsummaryrefslogtreecommitdiff
path: root/engines/dm/dialog.cpp
diff options
context:
space:
mode:
authorStrangerke2016-09-25 07:42:35 +0200
committerStrangerke2016-09-25 07:44:04 +0200
commit51bef09e4a541ae4ff0a9cf020b5f663e828187e (patch)
tree1605c0b07765f469f1bd980a61c2607aac31fcd0 /engines/dm/dialog.cpp
parentcce771c0e1c018edc6c047322f58614425192ee6 (diff)
downloadscummvm-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.cpp145
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;
}
}