diff options
author | Nipun Garg | 2019-06-23 08:24:51 +0530 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:16:57 +0200 |
commit | 4b28b535bc3c1c28ba273f460eae89b0424e04fb (patch) | |
tree | 75d4964f4e8b94a7fd07540ffc69f6eaf6c1b929 | |
parent | 2f5367b0df2d46de82cfad60e000847c1153705c (diff) | |
download | scummvm-rg350-4b28b535bc3c1c28ba273f460eae89b0424e04fb.tar.gz scummvm-rg350-4b28b535bc3c1c28ba273f460eae89b0424e04fb.tar.bz2 scummvm-rg350-4b28b535bc3c1c28ba273f460eae89b0424e04fb.zip |
HDB: Add drawDialog()
-rw-r--r-- | engines/hdb/window.cpp | 43 | ||||
-rw-r--r-- | engines/hdb/window.h | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/engines/hdb/window.cpp b/engines/hdb/window.cpp index dc3702a088..ff72b16be4 100644 --- a/engines/hdb/window.cpp +++ b/engines/hdb/window.cpp @@ -124,6 +124,49 @@ void Window::openDialog(const char *title, int tileIndex, const char *string, in warning("STUB: openDialog: Play SND_MOVE_SELECTION"); } +void Window::drawDialog() { + + if (g_hdb->getActionMode()) + warning("STUB: drawDialog: Draw Player Weapon"); + + if (!_dialogInfo.active) + return; + bool guyTalking = !_stricmp(_dialogInfo.title, "guy"); + + int w = _dialogInfo.width; + if (_dialogInfo.titleWidth > w) + w = _dialogInfo.titleWidth; + + drawBorder(_dialogInfo.x, _dialogInfo.y, w, _dialogInfo.height, guyTalking); + + int blocks; + if (!guyTalking) { + _gfxTitleL->drawMasked(_dialogInfo.x, _dialogInfo.y - 10); + blocks = _dialogInfo.titleWidth / 16; + for (int i = 0; i < blocks;i++) + _gfxTitleM->drawMasked(_dialogInfo.x + 16 * (i + 1), _dialogInfo.y - 10); + _gfxTitleR->drawMasked(_dialogInfo.x + (blocks + 1) * 16, _dialogInfo.y - 10); + } else { + _gGfxTitleL->drawMasked(_dialogInfo.x, _dialogInfo.y - 10); + blocks = _dialogInfo.titleWidth / 16; + for (int i = 0; i < blocks;i++) + _gGfxTitleM->drawMasked(_dialogInfo.x + 16 * (i + 1), _dialogInfo.y - 10); + _gGfxTitleR->drawMasked(_dialogInfo.x + (blocks + 1) * 16, _dialogInfo.y - 10); + } + + int e1, e2, e3, e4; + g_hdb->_drawMan->getTextEdges(&e1, &e2, &e3, &e4); + g_hdb->_drawMan->setTextEdges(_dialogInfo.x + 10, 480, 0, kScreenHeight); + g_hdb->_drawMan->setCursor(0, _dialogInfo.y - 7); + if (_dialogInfo.title) + g_hdb->_drawMan->drawText(_dialogInfo.title); + g_hdb->_drawMan->setTextEdges(_dialogInfo.x + 16, _dialogInfo.x + _dialogInfo.width - 16, 0, kScreenHeight); + g_hdb->_drawMan->setCursor(0, _dialogInfo.y + 16); + if (_dialogInfo.string) + g_hdb->_drawMan->drawText(_dialogInfo.string); + g_hdb->_drawMan->setTextEdges(e1, e2, e3, e4); +} + void Window::closeDialog() { if (_dialogInfo.active) { warning("STUB: closeDialog: Play SND_SWITCH_USE"); diff --git a/engines/hdb/window.h b/engines/hdb/window.h index 1a8f1f168e..8a22b9d4cc 100644 --- a/engines/hdb/window.h +++ b/engines/hdb/window.h @@ -56,6 +56,7 @@ public: // Dialog Functions void openDialog(const char *title, int tileIndex, const char *string, int more, const char *luaMore); + void drawDialog(); void closeDialog(); bool checkDialogClose(int x, int y); void drawBorder(int x, int y, int width, int height, bool guyTalking); |