aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-06-23 08:24:18 +0530
committerEugene Sandulenko2019-09-03 17:16:57 +0200
commit2f5367b0df2d46de82cfad60e000847c1153705c (patch)
treeda6f2643557a5688b52dc75c8cf3e6bf3ef535bd
parenta1b1275764f493ccf25eb44e1a67a4d6b28e311e (diff)
downloadscummvm-rg350-2f5367b0df2d46de82cfad60e000847c1153705c.tar.gz
scummvm-rg350-2f5367b0df2d46de82cfad60e000847c1153705c.tar.bz2
scummvm-rg350-2f5367b0df2d46de82cfad60e000847c1153705c.zip
HDB: Add drawBorder()
-rw-r--r--engines/hdb/window.cpp65
-rw-r--r--engines/hdb/window.h1
2 files changed, 64 insertions, 2 deletions
diff --git a/engines/hdb/window.cpp b/engines/hdb/window.cpp
index 606cf78b71..dc3702a088 100644
--- a/engines/hdb/window.cpp
+++ b/engines/hdb/window.cpp
@@ -155,8 +155,69 @@ bool Window::checkDialogClose(int x, int y) {
return false;
}
-void Window::drawBorder() {
-
+void Window::drawBorder(int x, int y, int width, int height, bool guyTalking) {
+ int wide, high, i, j;
+ if (!guyTalking) {
+ wide = (width / 16) + 1;
+ high = height / 16;
+ for(j = 0; j < high; j++)
+ for (i = 0;i < wide;i++) {
+ // Top Line
+ if (!i && !j)
+ _gfxTL->drawMasked(x, y);
+ else if ((i == wide - 1) && !j)
+ _gfxTR->drawMasked(x + i * 16, y + j * 16);
+ else if (!j)
+ _gfxTM->draw(x + i * 16, y + j * 16);
+
+ // Bottom Lines
+ if ((j == high - 1) && !i)
+ _gfxBL->drawMasked(x + i * 16, y + j * 16);
+ else if ((j == high - 1) && (i == wide - 1))
+ _gfxBR->drawMasked(x + i * 16, y + j * 16);
+ else if ((j == high - 1) && i < wide)
+ _gfxBM->draw(x + i * 16, y + j * 16);
+
+ // Middle lines
+ if (!i && j < high)
+ _gfxL->draw(x + i * 16, y + j * 16);
+ else if ((i == wide - 1) && j < high)
+ _gfxR->draw(x + i * 16, y + j * 16);
+
+ // Most drawn = middle block
+ _gfxM->draw(x + i * 16, y + j * 16);
+ }
+ } else {
+ wide = (width / 16) + 1;
+ high = height / 16;
+ for (j = 0; j < high; j++)
+ for (i = 0;i < wide;i++) {
+ // Top Line
+ if (!i && !j)
+ _gGfxTL->drawMasked(x, y);
+ else if ((i == wide - 1) && !j)
+ _gGfxTR->drawMasked(x + i * 16, y + j * 16);
+ else if (!j)
+ _gGfxTM->draw(x + i * 16, y + j * 16);
+
+ // Bottom Lines
+ if ((j == high - 1) && !i)
+ _gGfxBL->drawMasked(x + i * 16, y + j * 16);
+ else if ((j == high - 1) && (i == wide - 1))
+ _gGfxBR->drawMasked(x + i * 16, y + j * 16);
+ else if ((j == high - 1) && i < wide)
+ _gGfxBM->draw(x + i * 16, y + j * 16);
+
+ // Middle lines
+ if (!i && j < high)
+ _gGfxL->draw(x + i * 16, y + j * 16);
+ else if ((i == wide - 1) && j < high)
+ _gGfxR->draw(x + i * 16, y + j * 16);
+
+ // Most drawn = middle block
+ _gGfxM->draw(x + i * 16, y + j * 16);
+ }
+ }
}
void Window::setDialogDelay(int delay) {
diff --git a/engines/hdb/window.h b/engines/hdb/window.h
index fa478e7352..1a8f1f168e 100644
--- a/engines/hdb/window.h
+++ b/engines/hdb/window.h
@@ -58,6 +58,7 @@ public:
void openDialog(const char *title, int tileIndex, const char *string, int more, const char *luaMore);
void closeDialog();
bool checkDialogClose(int x, int y);
+ void drawBorder(int x, int y, int width, int height, bool guyTalking);
void setDialogDelay(int delay);
uint32 getDialogDelay() {
return _dialogDelay;