aboutsummaryrefslogtreecommitdiff
path: root/engines/access
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access')
-rw-r--r--engines/access/access.cpp3
-rw-r--r--engines/access/access.h2
-rw-r--r--engines/access/asurface.cpp4
-rw-r--r--engines/access/asurface.h2
-rw-r--r--engines/access/bubble_box.cpp72
-rw-r--r--engines/access/bubble_box.h1
6 files changed, 71 insertions, 13 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp
index d239d086ae..d0b2b78fe4 100644
--- a/engines/access/access.cpp
+++ b/engines/access/access.cpp
@@ -100,7 +100,8 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)
_startAboutItem = _startAboutBox = 0;
_byte26CB5 = 0;
BCNT = 0;
- BOXDATASTART = BOXDATAEND = 0;
+ BOXDATASTART = 0;
+ BOXDATAEND = false;
BOXSELECTY = 0;
BOXSELECTYOLD = -1;
NUMBLINES = 0;
diff --git a/engines/access/access.h b/engines/access/access.h
index ec19850992..90c3d1fa3c 100644
--- a/engines/access/access.h
+++ b/engines/access/access.h
@@ -217,7 +217,7 @@ public:
int _startAboutItem;
int _startAboutBox;
int BOXDATASTART;
- int BOXDATAEND;
+ bool BOXDATAEND;
int BOXSELECTY;
int BOXSELECTYOLD;
int NUMBLINES;
diff --git a/engines/access/asurface.cpp b/engines/access/asurface.cpp
index 1417b0e5f1..1029c355da 100644
--- a/engines/access/asurface.cpp
+++ b/engines/access/asurface.cpp
@@ -320,6 +320,10 @@ void ASurface::drawLine(int x1, int y1, int x2, int y2, int col) {
Graphics::Surface::drawLine(x1, y1, x2, y2, col);
}
+void ASurface::drawLine() {
+ Graphics::Surface::drawLine(_orgX1, _orgY1, _orgX2, _orgY1, _lColor);
+}
+
void ASurface::drawBox() {
Graphics::Surface::drawLine(_orgX1, _orgY1, _orgX2, _orgY1, _lColor);
Graphics::Surface::drawLine(_orgX1, _orgY2, _orgX2, _orgY2, _lColor);
diff --git a/engines/access/asurface.h b/engines/access/asurface.h
index 3b7104c4af..0c656a03a9 100644
--- a/engines/access/asurface.h
+++ b/engines/access/asurface.h
@@ -97,6 +97,8 @@ public:
virtual void drawLine(int x1, int y1, int x2, int y2, int col);
+ virtual void drawLine();
+
virtual void drawBox();
virtual void transCopyFrom(ASurface *src, const Common::Point &destPos);
diff --git a/engines/access/bubble_box.cpp b/engines/access/bubble_box.cpp
index 30d33a7fde..f0d3c8baef 100644
--- a/engines/access/bubble_box.cpp
+++ b/engines/access/bubble_box.cpp
@@ -287,8 +287,13 @@ void BubbleBox::doBox(int item, int box) {
delete icons;
}
+void BubbleBox::SETCURSORPOS(int posX, int posY) {
+// _vm->_screen->_printStart = _vm->_screen->_printOrg = Common::Point((posX << 3) + _rowOff, posY << 3);
+ warning("TODO: CURSORSET");
+}
+
void BubbleBox::displayBoxData() {
- _vm->BOXDATAEND = 0;
+ _vm->BOXDATAEND = false;
_rowOff = 2;
_vm->_fonts._charSet._lo = 7; // 0xF7
_vm->_fonts._charSet._hi = 15;
@@ -303,7 +308,7 @@ void BubbleBox::displayBoxData() {
_vm->BCNT = 0;
if (_tempListPtr[idx].size() == 0) {
- _vm->BOXDATAEND = 1;
+ _vm->BOXDATAEND = true;
return;
}
@@ -322,13 +327,12 @@ void BubbleBox::displayBoxData() {
int oldPStartY = BOXPSTARTY;
++BOXPSTARTY;
- for (int i = 0; i < _vm->BOXDATASTART; i++, idx++) {
- while (_tempListPtr[idx].size() != 0)
- ++idx;
- }
+ idx += _vm->BOXDATASTART;
while (true) {
- warning("TODO: SETCURSOR");
+// SETCURSORPOS(BOXPSTARTX, BOXPSTARTY);
+// _vm->_fonts._font1.drawString(_vm->_screen, _tempListPtr[idx], Common::Point((BOXPSTARTX << 3) + _rowOff, BOXPSTARTY << 3));
+
warning("TODO: PRINTSTR");
++idx;
++BOXPSTARTY;
@@ -336,7 +340,7 @@ void BubbleBox::displayBoxData() {
if (_tempListPtr[idx].size() == 0) {
BOXPSTARTY = oldPStartY;
_vm->_events->showCursor();
- _vm->BOXDATAEND = 1;
+ _vm->BOXDATAEND = true;
return;
}
@@ -438,8 +442,54 @@ int BubbleBox::doBox_v1(int item, int box, int &type) {
_vm->_screen->_orgY1 = oldY;
}
- if ((_type == TYPE_0) || (_type == TYPE_3))
- warning("TODO: Implement more of TYPE_0 or TYPE_3");
+ if ((_type != TYPE_0) && (_type != TYPE_2)) {
+ _vm->_screen->_orgY1 += 8;
+ if (_type == TYPE_3)
+ _vm->_screen->_orgY2 -= 8;
+
+ _vm->_screen->_orgY2 -= 8;
+ _vm->_word234F7 = _vm->_word234FF = _vm->_screen->_orgX2;
+ _vm->_word234F3 = _vm->_word234FB = _vm->_screen->_orgX1 = _vm->_screen->_orgX2 - 8;
+ BOXENDX = _vm->_screen->_orgX1 - 1;
+ _vm->_screen->drawBox();
+
+ _vm->_screen->_orgY1 += 6;
+ _vm->_screen->_orgY2 -= 6;
+ _vm->_screen->drawBox();
+
+ _vm->_word234F9 = _vm->_screen->_orgY1 + 1;
+ _vm->_word234F5 = _vm->_word234F9 - 5;
+ _vm->_word234FD = _vm->_screen->_orgY2 + 1;
+ _vm->_word23501 = _vm->_word234FD - 6;
+ _vm->_screen->_orgX1 += 4;
+ _vm->_screen->_orgX2 = _vm->_screen->_orgX1;
+ _vm->_screen->_orgY1 -= 4;
+ _vm->_screen->_orgY2 += 2;
+ _vm->_screen->drawLine();
+
+ ++_vm->_screen->_orgY1;
+ --_vm->_screen->_orgX1;
+ ++_vm->_screen->_orgX2;
+ _vm->_screen->drawLine();
+
+ ++_vm->_screen->_orgY1;
+ --_vm->_screen->_orgX1;
+ ++_vm->_screen->_orgX2;
+ _vm->_screen->drawLine();
+
+ _vm->_screen->_orgY1 = _vm->_screen->_orgY2;
+ _vm->_screen->drawLine();
+
+ ++_vm->_screen->_orgX1;
+ --_vm->_screen->_orgX2;
+ ++_vm->_screen->_orgY1;
+ _vm->_screen->drawLine();
+
+ ++_vm->_screen->_orgX1;
+ --_vm->_screen->_orgX2;
+ ++_vm->_screen->_orgY1;
+ _vm->_screen->drawLine();
+ }
int len = _bubbleDisplStr.size();
int ax = _bounds.top >> 3;
@@ -544,7 +594,7 @@ int BubbleBox::doBox_v1(int item, int box, int &type) {
if (_vm->BCNT != _vm->BOXSELECTY + 1) {
++_vm->BOXSELECTY;
drawSelectBox();
- } else if (_vm->BOXDATAEND == 0) {
+ } else if (!_vm->BOXDATAEND) {
++_vm->BOXDATASTART;
displayBoxData();
drawSelectBox();
diff --git a/engines/access/bubble_box.h b/engines/access/bubble_box.h
index ceafe13f6b..15dee099d0 100644
--- a/engines/access/bubble_box.h
+++ b/engines/access/bubble_box.h
@@ -96,6 +96,7 @@ public:
int doBox_v1(int item, int box, int &type);
void getList(const char *data[], int *flags);
+ void SETCURSORPOS(int posX, int posY);
};
} // End of namespace Access