aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2007-04-15 14:12:08 +0000
committerTravis Howell2007-04-15 14:12:08 +0000
commitb932d602516365bf6a62a36773743279a26cf65b (patch)
treec777f2d5ac9b7d0ee03037fcecac067ec0002aa7
parent8c4e539a40f816400d89ba45e04f85869642318c (diff)
downloadscummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.tar.gz
scummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.tar.bz2
scummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.zip
Cleanup.
svn-id: r26497
-rw-r--r--engines/agos/agos.h72
-rw-r--r--engines/agos/charset.cpp111
-rw-r--r--engines/agos/cursor.cpp98
-rw-r--r--engines/agos/oracle.cpp115
-rw-r--r--engines/agos/string.cpp10
-rw-r--r--engines/agos/verb.cpp98
6 files changed, 262 insertions, 242 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 4a6771e9a0..31df6d86a8 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -637,7 +637,7 @@ protected:
virtual void resetVerbs();
virtual void setVerb(HitArea * ha);
- void hitarea_leave(HitArea * ha, bool state = false);
+ virtual void hitarea_leave(HitArea * ha, bool state = false);
void leaveHitAreaById(uint hitarea_id);
void sendSync(uint a);
@@ -695,21 +695,7 @@ protected:
void clearMenuStrip();
void doMenuStrip(uint menuNum);
- void checkLinkBox();
- void hyperLinkOn(uint16 x);
- void hyperLinkOff();
- void linksUp();
- void linksDown();
- void oracleTextUp();
- void oracleTextDown();
- void listSaveGames(int n);
- void saveUserGame(int slot);
- void windowBackSpace(WindowBlock *window);
-
void oracleLogo();
- void scrollOracle();
- void scrollOracleUp();
- void scrollOracleDown();
void swapCharacterLogo();
void mouseOff();
@@ -740,8 +726,6 @@ protected:
void endCutscene();
void runSubroutine101();
- void checkUp(WindowBlock *window);
- void checkDown(WindowBlock *window);
virtual void inventoryUp(WindowBlock *window);
virtual void inventoryDown(WindowBlock *window);
@@ -761,14 +745,11 @@ protected:
void displayName(HitArea * ha);
void resetNameWindow();
void displayBoxStars();
- void invertBox_FF(HitArea *ha, bool state);
void invertBox(HitArea * ha, byte a, byte b, byte c, byte d);
void handleMouseMoved();
void initMouse();
- void loadMouseImage();
virtual void drawMousePointer();
- void drawMousePart(int image, byte x, byte y);
void addArrows(WindowBlock *window);
void removeArrows(WindowBlock *window, uint num);
@@ -818,12 +799,6 @@ protected:
void renderStringAmiga(uint vga_sprite_id, uint color, uint width, uint height, const char *txt);
void renderString(uint vga_sprite_id, uint color, uint width, uint height, const char *txt);
- void boxTextMessage(const char *x);
- void boxTextMsg(const char *x);
- void printBox();
- uint16 getBoxSize();
- uint16 checkFit(char *Ptr, int width, int lines);
-
void writeChar(WindowBlock *window, int x, int y, int offs, int val);
byte *allocBlock(uint32 size);
@@ -1160,7 +1135,7 @@ protected:
void fillBackGroundFromBack(uint lines);
void fillBackFromFront(uint x, uint y, uint w, uint h);
- void print_char_helper_1(const byte *src, uint len);
+ virtual void print_char_helper_1(const byte *src, uint len);
void clsCheck(WindowBlock *window);
void quickLoadOrSave();
@@ -1180,7 +1155,7 @@ protected:
void openTextWindow();
void tidyIconArray(uint i);
- void windowNewLine(WindowBlock *window);
+ virtual void windowNewLine(WindowBlock *window);
void windowDrawChar(WindowBlock *window, uint x, uint y, byte chr);
void loadMusic(uint music);
@@ -1362,6 +1337,12 @@ public:
virtual void executeOpcode(int opcode);
+ void boxTextMessage(const char *x);
+ void boxTextMsg(const char *x);
+ void printBox();
+ uint16 getBoxSize();
+ uint16 checkFit(char *Ptr, int width, int lines);
+
void oww_moveDirn();
void oww_goto();
void oww_addTextBox();
@@ -1470,8 +1451,6 @@ public:
virtual void executeOpcode(int opcode);
- virtual void drawMousePointer();
-
void off_chance();
void off_jumpOut();
void off_addTextBox();
@@ -1515,15 +1494,42 @@ protected:
const OpcodeEntryFeeble *_opcodesFeeble;
+ void drawMousePart(int image, byte x, byte y);
+ virtual void drawMousePointer();
+
virtual void resetVerbs();
virtual void setVerb(HitArea * ha);
+ virtual void hitarea_leave(HitArea * ha, bool state = false);
+ void invertBox(HitArea *ha, bool state);
- virtual void inventoryUp(WindowBlock *window);
- virtual void inventoryDown(WindowBlock *window);
+ virtual void windowNewLine(WindowBlock *window);
virtual void clearName();
virtual void drawIconArray(uint i, Item *item_ptr, int line, int classMask);
+
+ virtual void print_char_helper_1(const byte *src, uint len);
+
+ void checkLinkBox();
+ void hyperLinkOn(uint16 x);
+ void hyperLinkOff();
+ void linksUp();
+ void linksDown();
+
+ void checkUp(WindowBlock *window);
+ void checkDown(WindowBlock *window);
+ virtual void inventoryUp(WindowBlock *window);
+ virtual void inventoryDown(WindowBlock *window);
+
+ void oracleTextUp();
+ void oracleTextDown();
+ void scrollOracle();
+ void scrollOracleUp();
+ void scrollOracleDown();
+
+ void listSaveGames(int n);
+ void saveUserGame(int slot);
+ void windowBackSpace(WindowBlock *window);
};
class AGOSEngine_PuzzlePack : public AGOSEngine_Feeble {
@@ -1561,6 +1567,8 @@ protected:
const OpcodeEntryPuzzlePack *_opcodesPuzzlePack;
virtual void resetVerbs();
+
+ void loadMouseImage();
};
} // End of namespace AGOS
diff --git a/engines/agos/charset.cpp b/engines/agos/charset.cpp
index 4b318a3784..874108e872 100644
--- a/engines/agos/charset.cpp
+++ b/engines/agos/charset.cpp
@@ -28,47 +28,52 @@
namespace AGOS {
-void AGOSEngine::print_char_helper_1(const byte *src, uint len) {
- uint idx;
-
+void AGOSEngine_Feeble::print_char_helper_1(const byte *src, uint len) {
if (_textWindow == NULL)
return;
while (len-- != 0) {
- if (getGameType() == GType_FF || getGameType() == GType_PP) {
- if (getBitFlag(93)) {
+ if (getBitFlag(93)) {
+ if (_curWindow == 3) {
+ if ((_newLines >= _textWindow->scrollY) && (_newLines < (_textWindow->scrollY + 3)))
+ windowPutChar(*src);
+ if (*src == '\n') // Do two top lines of text only
+ _newLines++;
+ src++;
+ }
+ } else {
+ if (getBitFlag(94)) {
if (_curWindow == 3) {
- if ((_newLines >= _textWindow->scrollY) && (_newLines < (_textWindow->scrollY + 3)))
+ if (_newLines == (_textWindow->scrollY + 7))
windowPutChar(*src);
- if (*src == '\n') // Do two top lines of text only
+ if (*src == '\n') // Do two top lines of text only
_newLines++;
src++;
}
} else {
- if (getBitFlag(94)) {
- if (_curWindow == 3) {
- if (_newLines == (_textWindow->scrollY + 7))
- windowPutChar(*src);
- if (*src == '\n') // Do two top lines of text only
- _newLines++;
- src++;
- }
- } else {
- if (getBitFlag(92))
- delay(50);
- windowPutChar(*src++);
- }
- }
- } else {
- if (*src != 12 && _textWindow->iconPtr != NULL &&
- _fcsData1[idx = getWindowNum(_textWindow)] != 2) {
-
- _fcsData1[idx] = 2;
- _fcsData2[idx] = 1;
+ if (getBitFlag(92))
+ delay(50);
+ windowPutChar(*src++);
}
+ }
+ }
+}
+
+void AGOSEngine::print_char_helper_1(const byte *src, uint len) {
+ uint idx;
- windowPutChar(*src++);
+ if (_textWindow == NULL)
+ return;
+
+ while (len-- != 0) {
+ if (*src != 12 && _textWindow->iconPtr != NULL &&
+ _fcsData1[idx = getWindowNum(_textWindow)] != 2) {
+
+ _fcsData1[idx] = 2;
+ _fcsData2[idx] = 1;
}
+
+ windowPutChar(*src++);
}
}
@@ -666,35 +671,30 @@ void AGOSEngine::windowPutChar(WindowBlock *window, byte c, byte b) {
}
}
-void AGOSEngine::windowNewLine(WindowBlock *window) {
- if (getGameType() == GType_FF) {
- if (_noOracleScroll == 0) {
- if (window->height < window->textRow + 30) {
- if (!getBitFlag(94)) {
- _noOracleScroll = 1;
- if (getBitFlag(92)) {
- _noOracleScroll = 0;
- checkLinkBox();
- scrollOracle();
- linksUp();
- window->scrollY++;
- _oracleMaxScrollY++;
- } else {
- _oracleMaxScrollY++;
- checkLinkBox();
- }
+void AGOSEngine_Feeble::windowNewLine(WindowBlock *window) {
+ if (_noOracleScroll == 0) {
+ if (window->height < window->textRow + 30) {
+ if (!getBitFlag(94)) {
+ _noOracleScroll = 1;
+ if (getBitFlag(92)) {
+ _noOracleScroll = 0;
+ checkLinkBox();
+ scrollOracle();
+ linksUp();
+ window->scrollY++;
+ _oracleMaxScrollY++;
+ } else {
+ _oracleMaxScrollY++;
+ checkLinkBox();
}
- } else {
- window->textRow += 15;
- checkLinkBox();
}
} else {
- _oracleMaxScrollY++;
+ window->textRow += 15;
checkLinkBox();
}
} else {
- if (window->textRow != window->height)
- window->textRow++;
+ _oracleMaxScrollY++;
+ checkLinkBox();
}
window->textColumn = 0;
@@ -702,6 +702,15 @@ void AGOSEngine::windowNewLine(WindowBlock *window) {
window->textLength = 0;
}
+void AGOSEngine::windowNewLine(WindowBlock *window) {
+ if (window->textRow != window->height)
+ window->textRow++;
+
+ window->textColumn = 0;
+ window->textColumnOffset = 0;
+ window->textLength = 0;
+}
+
#ifdef PALMOS_68K
static const byte *czech_windowFont;
static const byte *russian_windowFont;
diff --git a/engines/agos/cursor.cpp b/engines/agos/cursor.cpp
index 8575d17de0..f52fddb5e0 100644
--- a/engines/agos/cursor.cpp
+++ b/engines/agos/cursor.cpp
@@ -494,7 +494,7 @@ void AGOSEngine::initMouse() {
}
}
-void AGOSEngine::loadMouseImage() {
+void AGOSEngine_PuzzlePack::loadMouseImage() {
loadZone(_variableArray[500]);
VgaPointersEntry *vpe = &_vgaBufferPointers[_variableArray[500]];
@@ -502,43 +502,29 @@ void AGOSEngine::loadMouseImage() {
memcpy(_mouseData, src, _maxCursorWidth * _maxCursorHeight);
}
-void AGOSEngine::drawMousePointer() {
- if (getGameType() == GType_PP && getGameId() != GID_DIMP) {
- CursorMan.replaceCursor(_mouseData, _maxCursorWidth, _maxCursorHeight, 37, 48, 0);
- } else if (getGameType() == GType_SIMON2) {
- CursorMan.replaceCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7);
- } else if (getGameType() == GType_SIMON1) {
- CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF);
- } else {
- const uint16 *src;
- int i, j;
+void AGOSEngine_Feeble::drawMousePart(int image, byte x, byte y) {
+ VgaPointersEntry *vpe = &_vgaBufferPointers[7];
+ byte *src;
+ int width, height;
- const uint8 color = (getGameType() == GType_ELVIRA1) ? 15: 65;
- memset(_mouseData, 0xFF, _maxCursorWidth * _maxCursorHeight);
+ byte *dst = _mouseData + y * _maxCursorWidth + x;
- uint cursor = _mouseCursor;
- if (getGameType() == GType_ELVIRA1 && cursor == 2)
- cursor = 3;
+ src = vpe->vgaFile2 + image * 8;
+ width = READ_LE_UINT16(src + 6);
+ height = READ_LE_UINT16(src + 4);
- if (_dragFlag != 0)
- cursor = 2;
+ src = vpe->vgaFile2 + READ_LE_UINT32(src);
- src = _common_cursors[cursor];
+ assert(width + x <= _maxCursorWidth);
+ assert(height + y <= _maxCursorWidth);
- for (i = 0; i < 16; i++) {
- for (j = 0; j < 16; j++) {
- if (src[0] & (1 << (15 - (j % 16)))) {
- if (src[1] & (1 << (15 - (j % 16)))) {
- _mouseData[16 * i + j] = color;
- } else {
- _mouseData[16 * i + j] = 0;
- }
- }
- }
- src += 2;
+ for (int h = 0; h < height; h++) {
+ for (int w = 0; w < width; w++) {
+ if (src[w] != 0)
+ dst[w] = src[w];
}
-
- CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF);
+ src += width;
+ dst += _maxCursorWidth;
}
}
@@ -599,29 +585,43 @@ void AGOSEngine_Feeble::drawMousePointer() {
}
}
-void AGOSEngine::drawMousePart(int image, byte x, byte y) {
- VgaPointersEntry *vpe = &_vgaBufferPointers[7];
- byte *src;
- int width, height;
+void AGOSEngine::drawMousePointer() {
+ if (getGameType() == GType_PP && getGameId() != GID_DIMP) {
+ CursorMan.replaceCursor(_mouseData, _maxCursorWidth, _maxCursorHeight, 37, 48, 0);
+ } else if (getGameType() == GType_SIMON2) {
+ CursorMan.replaceCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7);
+ } else if (getGameType() == GType_SIMON1) {
+ CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF);
+ } else {
+ const uint16 *src;
+ int i, j;
- byte *dst = _mouseData + y * _maxCursorWidth + x;
+ const uint8 color = (getGameType() == GType_ELVIRA1) ? 15: 65;
+ memset(_mouseData, 0xFF, _maxCursorWidth * _maxCursorHeight);
- src = vpe->vgaFile2 + image * 8;
- width = READ_LE_UINT16(src + 6);
- height = READ_LE_UINT16(src + 4);
+ uint cursor = _mouseCursor;
+ if (getGameType() == GType_ELVIRA1 && cursor == 2)
+ cursor = 3;
- src = vpe->vgaFile2 + READ_LE_UINT32(src);
+ if (_dragFlag != 0)
+ cursor = 2;
- assert(width + x <= _maxCursorWidth);
- assert(height + y <= _maxCursorWidth);
+ src = _common_cursors[cursor];
- for (int h = 0; h < height; h++) {
- for (int w = 0; w < width; w++) {
- if (src[w] != 0)
- dst[w] = src[w];
+ for (i = 0; i < 16; i++) {
+ for (j = 0; j < 16; j++) {
+ if (src[0] & (1 << (15 - (j % 16)))) {
+ if (src[1] & (1 << (15 - (j % 16)))) {
+ _mouseData[16 * i + j] = color;
+ } else {
+ _mouseData[16 * i + j] = 0;
+ }
+ }
+ }
+ src += 2;
}
- src += width;
- dst += _maxCursorWidth;
+
+ CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF);
}
}
diff --git a/engines/agos/oracle.cpp b/engines/agos/oracle.cpp
index efed6c8d5b..4c140fbe63 100644
--- a/engines/agos/oracle.cpp
+++ b/engines/agos/oracle.cpp
@@ -31,7 +31,7 @@
namespace AGOS {
-void AGOSEngine::checkLinkBox() { // Check for boxes spilling over to next row of text
+void AGOSEngine_Feeble::checkLinkBox() { // Check for boxes spilling over to next row of text
if (_hyperLink != 0) {
_variableArray[52] = _textWindow->x + _textWindow->textColumn - _variableArray[50];
if (_variableArray[52] != 0) {
@@ -43,7 +43,7 @@ void AGOSEngine::checkLinkBox() { // Check for boxes spilling over to next row o
}
}
-void AGOSEngine::hyperLinkOn(uint16 x) {
+void AGOSEngine_Feeble::hyperLinkOn(uint16 x) {
if (!getBitFlag(51))
return;
@@ -53,7 +53,7 @@ void AGOSEngine::hyperLinkOn(uint16 x) {
}
-void AGOSEngine::hyperLinkOff() {
+void AGOSEngine_Feeble::hyperLinkOff() {
if (!getBitFlag(51))
return;
@@ -63,28 +63,117 @@ void AGOSEngine::hyperLinkOff() {
_hyperLink = 0;
}
-void AGOSEngine::linksUp() { // Scroll Oracle Links
+void AGOSEngine_Feeble::linksUp() { // Scroll Oracle Links
uint16 j;
for (j = 700; j < _variableArray[53]; j++) {
moveBox(j, 0, -15);
}
}
-void AGOSEngine::linksDown() {
+void AGOSEngine_Feeble::linksDown() {
uint16 i;
for (i = 700; i < _variableArray[53]; i++) {
moveBox(i,0, 15);
}
}
-void AGOSEngine::scrollOracle() {
+void AGOSEngine_Feeble::checkUp(WindowBlock *window) {
+ uint16 j, k;
+
+ if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[31] > 52)) {
+ k = (((_variableArray[31] / 52) - 2) % 3);
+ j = k * 6;
+ if (!isBoxDead(j + 201)) {
+ uint index = getWindowNum(window);
+ drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask);
+ animate(4, 9, k + 34, 0, 0, 0);
+ }
+ }
+ if ((_variableArray[31] - _variableArray[30]) == 76) {
+ k = ((_variableArray[31] / 52) % 3);
+ j = k * 6;
+ if (isBoxDead(j + 201)) {
+ animate(4, 9, k + 31, 0, 0, 0);
+ undefineBox(j + 201);
+ undefineBox(j + 202);
+ undefineBox(j + 203);
+ undefineBox(j + 204);
+ undefineBox(j + 205);
+ undefineBox(j + 206);
+ }
+ _variableArray[31] -= 52;
+ _iOverflow = 1;
+ }
+}
+
+void AGOSEngine_Feeble::inventoryUp(WindowBlock *window) {
+ _marks = 0;
+ checkUp(window);
+ animate(4, 9, 21, 0 ,0, 0);
+ while (1) {
+ if (_currentBox->id != 0x7FFB || !getBitFlag(89))
+ break;
+ checkUp(window);
+ delay(1);
+ }
+ waitForMark(2);
+ checkUp(window);
+ sendSync(922);
+ waitForMark(1);
+ checkUp(window);
+}
+
+
+void AGOSEngine_Feeble::checkDown(WindowBlock *window) {
+ uint16 j, k;
+
+ if (((_variableArray[31] - _variableArray[30]) == 24) && (_iOverflow == 1)) {
+ uint index = getWindowNum(window);
+ drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask);
+ k = ((_variableArray[31] / 52) % 3);
+ animate(4, 9, k + 25, 0, 0, 0);
+ _variableArray[31] += 52;
+ }
+ if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[30] > 52)) {
+ k = (((_variableArray[31] / 52) + 1) % 3);
+ j = k * 6;
+ if (isBoxDead(j + 201)) {
+ animate(4, 9, k + 28, 0, 0, 0);
+ undefineBox(j + 201);
+ undefineBox(j + 202);
+ undefineBox(j + 203);
+ undefineBox(j + 204);
+ undefineBox(j + 205);
+ undefineBox(j + 206);
+ }
+ }
+}
+
+void AGOSEngine_Feeble::inventoryDown(WindowBlock *window) {
+ _marks = 0;
+ checkDown(window);
+ animate(4, 9, 23, 0, 0, 0);
+ while (1) {
+ if (_currentBox->id != 0x7FFC || !getBitFlag(89))
+ break;
+ checkDown(window);
+ delay(1);
+ }
+ waitForMark(2);
+ checkDown(window);
+ sendSync(924);
+ waitForMark(1);
+ checkDown(window);
+}
+
+void AGOSEngine_Feeble::scrollOracle() {
int i;
for (i = 0; i < 5; i++)
scrollOracleUp();
}
-void AGOSEngine::oracleTextUp() {
+void AGOSEngine_Feeble::oracleTextUp() {
Subroutine *sub;
int i = 0;
changeWindow(3);
@@ -118,7 +207,7 @@ void AGOSEngine::oracleTextUp() {
}
}
-void AGOSEngine::oracleTextDown() {
+void AGOSEngine_Feeble::oracleTextDown() {
Subroutine *sub;
int i = 0;
changeWindow(3);
@@ -152,7 +241,7 @@ void AGOSEngine::oracleTextDown() {
}
}
-void AGOSEngine::scrollOracleUp() {
+void AGOSEngine_Feeble::scrollOracleUp() {
byte *src, *dst;
uint16 w, h;
@@ -181,7 +270,7 @@ void AGOSEngine::scrollOracleUp() {
}
}
-void AGOSEngine::scrollOracleDown() {
+void AGOSEngine_Feeble::scrollOracleDown() {
byte *src, *dst;
uint16 w, h;
@@ -277,7 +366,7 @@ void AGOSEngine::swapCharacterLogo() {
}
}
-void AGOSEngine::listSaveGames(int n) {
+void AGOSEngine_Feeble::listSaveGames(int n) {
char b[108];
Common::InSaveFile *in;
uint16 j, k, z, maxFiles;
@@ -344,7 +433,7 @@ void AGOSEngine::listSaveGames(int n) {
}
}
-void AGOSEngine::saveUserGame(int slot) {
+void AGOSEngine_Feeble::saveUserGame(int slot) {
WindowBlock *window;
Common::InSaveFile *in;
char name[108];
@@ -407,7 +496,7 @@ void AGOSEngine::saveUserGame(int slot) {
}
}
-void AGOSEngine::windowBackSpace(WindowBlock *window) {
+void AGOSEngine_Feeble::windowBackSpace(WindowBlock *window) {
byte *dst;
uint x, y, h, w;
diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp
index ca376da718..f4ceb4239b 100644
--- a/engines/agos/string.cpp
+++ b/engines/agos/string.cpp
@@ -490,7 +490,7 @@ void AGOSEngine::printScreenText(uint vgaSpriteId, uint color, const char *strin
}
// String code for boxes in Waxworks
-uint16 AGOSEngine::getBoxSize() {
+uint16 AGOSEngine_Waxworks::getBoxSize() {
int x;
switch (_boxLineCount) {
case 1: x = _lineCounts[0];
@@ -634,7 +634,7 @@ uint16 AGOSEngine::getBoxSize() {
}
-uint16 AGOSEngine::checkFit(char *Ptr, int width, int lines) {
+uint16 AGOSEngine_Waxworks::checkFit(char *Ptr, int width, int lines) {
int countw = 0;
int countl = 0;
char *x = NULL;
@@ -659,7 +659,7 @@ uint16 AGOSEngine::checkFit(char *Ptr, int width, int lines) {
return 1;
}
-void AGOSEngine::boxTextMessage(const char *x) {
+void AGOSEngine_Waxworks::boxTextMessage(const char *x) {
char *BoxBufferPtr = _boxBuffer;
sprintf(BoxBufferPtr, "%s\n", x);
_lineCounts[_boxLineCount] += strlen(x);
@@ -669,7 +669,7 @@ void AGOSEngine::boxTextMessage(const char *x) {
_boxCR = 1;
}
-void AGOSEngine::boxTextMsg(const char *x) {
+void AGOSEngine_Waxworks::boxTextMsg(const char *x) {
char *BoxBufferPtr = _boxBuffer;
sprintf(BoxBufferPtr, "%s", x);
_lineCounts[_boxLineCount] += strlen(x);
@@ -677,7 +677,7 @@ void AGOSEngine::boxTextMsg(const char *x) {
_boxCR = 0;
}
-void AGOSEngine::printBox() {
+void AGOSEngine_Waxworks::printBox() {
char *BoxBufferPtr = 0;
uint16 BoxSize;
_linePtrs[0] = _boxBuffer;
diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp
index dfc1a6ceb0..0698ee3e66 100644
--- a/engines/agos/verb.cpp
+++ b/engines/agos/verb.cpp
@@ -591,10 +591,12 @@ void AGOSEngine::setVerb(HitArea *ha) {
_currentVerbBox = ha;
}
+void AGOSEngine_Feeble::hitarea_leave(HitArea *ha, bool state) {
+ invertBox(ha, state);
+}
+
void AGOSEngine::hitarea_leave(HitArea *ha, bool state) {
- if (getGameType() == GType_FF) {
- invertBox_FF(ha, state);
- } else if (getGameType() == GType_SIMON2) {
+ if (getGameType() == GType_SIMON2) {
invertBox(ha, 231, 229, 230, 1);
} else {
invertBox(ha, 223, 213, 218, 5);
@@ -607,77 +609,6 @@ void AGOSEngine::leaveHitAreaById(uint hitarea_id) {
hitarea_leave(ha);
}
-void AGOSEngine::checkUp(WindowBlock *window) {
- uint16 j, k;
-
- if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[31] > 52)) {
- k = (((_variableArray[31] / 52) - 2) % 3);
- j = k * 6;
- if (!isBoxDead(j + 201)) {
- uint index = getWindowNum(window);
- drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask);
- animate(4, 9, k + 34, 0, 0, 0);
- }
- }
- if ((_variableArray[31] - _variableArray[30]) == 76) {
- k = ((_variableArray[31] / 52) % 3);
- j = k * 6;
- if (isBoxDead(j + 201)) {
- animate(4, 9, k + 31, 0, 0, 0);
- undefineBox(j + 201);
- undefineBox(j + 202);
- undefineBox(j + 203);
- undefineBox(j + 204);
- undefineBox(j + 205);
- undefineBox(j + 206);
- }
- _variableArray[31] -= 52;
- _iOverflow = 1;
- }
-}
-
-void AGOSEngine::checkDown(WindowBlock *window) {
- uint16 j, k;
-
- if (((_variableArray[31] - _variableArray[30]) == 24) && (_iOverflow == 1)) {
- uint index = getWindowNum(window);
- drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask);
- k = ((_variableArray[31] / 52) % 3);
- animate(4, 9, k + 25, 0, 0, 0);
- _variableArray[31] += 52;
- }
- if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[30] > 52)) {
- k = (((_variableArray[31] / 52) + 1) % 3);
- j = k * 6;
- if (isBoxDead(j + 201)) {
- animate(4, 9, k + 28, 0, 0, 0);
- undefineBox(j + 201);
- undefineBox(j + 202);
- undefineBox(j + 203);
- undefineBox(j + 204);
- undefineBox(j + 205);
- undefineBox(j + 206);
- }
- }
-}
-
-void AGOSEngine_Feeble::inventoryUp(WindowBlock *window) {
- _marks = 0;
- checkUp(window);
- animate(4, 9, 21, 0 ,0, 0);
- while (1) {
- if (_currentBox->id != 0x7FFB || !getBitFlag(89))
- break;
- checkUp(window);
- delay(1);
- }
- waitForMark(2);
- checkUp(window);
- sendSync(922);
- waitForMark(1);
- checkUp(window);
-}
-
void AGOSEngine::inventoryUp(WindowBlock *window) {
if (window->iconPtr->line == 0)
return;
@@ -688,23 +619,6 @@ void AGOSEngine::inventoryUp(WindowBlock *window) {
mouseOn();
}
-void AGOSEngine_Feeble::inventoryDown(WindowBlock *window) {
- _marks = 0;
- checkDown(window);
- animate(4, 9, 23, 0, 0, 0);
- while (1) {
- if (_currentBox->id != 0x7FFC || !getBitFlag(89))
- break;
- checkDown(window);
- delay(1);
- }
- waitForMark(2);
- checkDown(window);
- sendSync(924);
- waitForMark(1);
- checkDown(window);
-}
-
void AGOSEngine::inventoryDown(WindowBlock *window) {
mouseOff();
uint index = getWindowNum(window);
@@ -870,7 +784,7 @@ void AGOSEngine::displayName(HitArea *ha) {
_lastNameOn = ha;
}
-void AGOSEngine::invertBox_FF(HitArea *ha, bool state) {
+void AGOSEngine_Feeble::invertBox(HitArea *ha, bool state) {
if (getBitFlag(205) || getBitFlag(206)) {
if (state != 0) {
_mouseAnimMax = _oldMouseAnimMax;