aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle
diff options
context:
space:
mode:
authorStrangerke2013-07-24 15:16:56 +0200
committerStrangerke2013-07-24 15:16:56 +0200
commit9bbfd7f628fd335c9c9f5e67e2b86f674ef23f1a (patch)
tree074b094cc087695c8d1f87d36aa70354bf6feaa2 /engines/mortevielle
parentd5a6c9e4ab47c9e2b0a26fee2f9aa4da22ef5679 (diff)
downloadscummvm-rg350-9bbfd7f628fd335c9c9f5e67e2b86f674ef23f1a.tar.gz
scummvm-rg350-9bbfd7f628fd335c9c9f5e67e2b86f674ef23f1a.tar.bz2
scummvm-rg350-9bbfd7f628fd335c9c9f5e67e2b86f674ef23f1a.zip
MORTEVIELLE: Start working on displayPicture, misc renaming and refactoring
Diffstat (limited to 'engines/mortevielle')
-rw-r--r--engines/mortevielle/actions.cpp40
-rw-r--r--engines/mortevielle/dialogs.cpp8
-rw-r--r--engines/mortevielle/mortevielle.h11
-rw-r--r--engines/mortevielle/utils.cpp61
4 files changed, 64 insertions, 56 deletions
diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp
index 9a29bbfd29..91d9177dc6 100644
--- a/engines/mortevielle/actions.cpp
+++ b/engines/mortevielle/actions.cpp
@@ -241,17 +241,17 @@ void MortevielleEngine::fctTake() {
if ((_coreVar._currPlace == ATTIC) && (_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) {
putInHand(_coreVar._atticBallHoleObjectId);
if ((_crep != 997) && (_crep != 139))
- aniof(2, 7);
+ drawAnimFrame(2, 7);
}
if ((_coreVar._currPlace == ATTIC) && (_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) {
putInHand(_coreVar._atticRodHoleObjectId);
if ((_crep != 997) && (_crep != 139))
- aniof(2, 6);
+ drawAnimFrame(2, 6);
}
if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) {
putInHand(_coreVar._cellarObjectId);
if ((_crep != 997) && (_crep != 139))
- aniof(2, 2);
+ drawAnimFrame(2, 2);
}
if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0))
putInHand(_coreVar._cryptObjectId);
@@ -260,13 +260,13 @@ void MortevielleEngine::fctTake() {
putInHand(_coreVar._secretPassageObjectId);
if ((_crep != 997) && (_crep != 139)) {
_crep = 182;
- aniof(2, 1);
+ drawAnimFrame(2, 1);
}
}
if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) {
putInHand(_coreVar._wellObjectId);
if ((_crep != 997) && (_crep != 139))
- aniof(2, 1);
+ drawAnimFrame(2, 1);
}
if ((_crep != 997) && (_crep != 182) && (_crep != 139))
_crep = 999;
@@ -631,7 +631,7 @@ void MortevielleEngine::fctOpen() {
_speechManager.startSpeech(7, 9, 1);
}
_openObjects[tmpPlace] = _num;
- aniof(1, _num);
+ drawAnimFrame(1, _num);
}
tmpPlace = _coreVar._currPlace;
if (_coreVar._currPlace == CRYPT)
@@ -675,14 +675,14 @@ void MortevielleEngine::fctPlace() {
} else {
_coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId;
if (_coreVar._selectedObjectId == 141)
- aniof(1, 7);
+ drawAnimFrame(1, 7);
}
} else if (_coreVar._atticRodHoleObjectId != 0) {
_crep = 188;
} else {
_coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId;
if (_coreVar._selectedObjectId == 159)
- aniof(1, 6);
+ drawAnimFrame(1, 6);
}
}
@@ -693,8 +693,8 @@ void MortevielleEngine::fctPlace() {
_coreVar._cellarObjectId = _coreVar._selectedObjectId;
if (_coreVar._selectedObjectId == 151) {
// Open hidden passage
- aniof(1, 2);
- aniof(1, 1);
+ drawAnimFrame(1, 2);
+ drawAnimFrame(1, 1);
handleDescriptionText(2, 165);
displayEmptyHand();
_speechManager.startSpeech(6, -9, 1);
@@ -727,16 +727,16 @@ void MortevielleEngine::fctPlace() {
_menu.setDestinationText(_coreVar._currPlace);
setPal(14);
drawPicture();
- aniof(1, 2);
- aniof(1, 1);
+ drawAnimFrame(1, 2);
+ drawAnimFrame(1, 1);
alertTxt = getString(577);
_dialogManager.show(alertTxt, 1);
- aniof(2, 1);
+ drawAnimFrame(2, 1);
_crep = 166;
}
prepareDisplayText();
} else {
- aniof(2, 1);
+ drawAnimFrame(2, 1);
_crep = 166;
}
return;
@@ -756,7 +756,7 @@ void MortevielleEngine::fctPlace() {
_crep = 188;
} else if (_coreVar._selectedObjectId == 143) {
_coreVar._secretPassageObjectId = 143;
- aniof(1, 1);
+ drawAnimFrame(1, 1);
} else {
_crep = 1512;
loseGame();
@@ -768,7 +768,7 @@ void MortevielleEngine::fctPlace() {
_crep = 188;
} else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) {
_coreVar._wellObjectId = _coreVar._selectedObjectId;
- aniof(1, 1);
+ drawAnimFrame(1, 1);
} else {
_crep = 185;
}
@@ -856,7 +856,7 @@ void MortevielleEngine::fctAttach() {
_crep = 999;
if ((_coreVar._selectedObjectId == 120) || (_coreVar._selectedObjectId == 140)) {
_coreVar._wellObjectId = _coreVar._selectedObjectId;
- aniof(1, 1);
+ drawAnimFrame(1, 1);
} else
_crep = 185;
displayEmptyHand();
@@ -886,7 +886,7 @@ void MortevielleEngine::fctClose() {
++cx;
} while ((cx <= 6) && (_num != _openObjects[cx]));
if (_num == _openObjects[cx]) {
- aniof(2, _num);
+ drawAnimFrame(2, _num);
_crep = 998;
_openObjects[cx] = 0;
--_openObjCount;
@@ -1148,7 +1148,7 @@ void MortevielleEngine::fctEnter() {
else {
int randVal = (getRandomNumber(0, 10)) - 5;
_speechManager.startSpeech(7, randVal, 1);
- aniof(1, 1);
+ drawAnimFrame(1, 1);
int charIndex = convertBitIndexToCharacterIndex(z);
++_coreVar._faithScore;
@@ -1169,7 +1169,7 @@ void MortevielleEngine::fctEnter() {
} else {
int randVal = (getRandomNumber(0, 10)) - 5;
_speechManager.startSpeech(7, randVal, 1);
- aniof(1, 1);
+ drawAnimFrame(1, 1);
_coreVar._currPlace = _roomDoorId;
prepareDisplayText();
diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp
index 2536533251..f6fe9661ac 100644
--- a/engines/mortevielle/dialogs.cpp
+++ b/engines/mortevielle/dialogs.cpp
@@ -480,10 +480,10 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) {
* @remarks Originally called 'ani50'
*/
void DialogManager::displayIntroFrame2() {
- _vm->_crep = _vm->animof(1, 1);
- _vm->pictout(kAdrAni, _vm->_crep, 63, 12);
- _vm->_crep = _vm->animof(2, 1);
- _vm->pictout(kAdrAni, _vm->_crep, 63, 12);
+ _vm->_crep = _vm->getAnimOffset(1, 1);
+ _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12);
+ _vm->_crep = _vm->getAnimOffset(2, 1);
+ _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12);
_vm->_largestClearScreen = (_vm->_resolutionScaler == 1);
_vm->handleDescriptionText(2, kDialogStringIndex + 143);
}
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index 4fd096aa43..27d590ddb7 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -434,14 +434,14 @@ private:
void drawPictureWithText();
void addObjectToInventory(int objectId);
void putInHand(int &objId);
+ void initMaxAnswer();
+ void drawAnimFrame(int frameNum, int animId);
void copcha();
void adzon();
void premtet();
void ajchai();
void ecr2(Common::String text);
- void initMaxAnswer();
- void aniof(int ouf, int num);
void tlu(int af, int ob);
void mennor();
void tsuiv();
@@ -526,12 +526,13 @@ public:
void testKeyboard();
int getPresence(int roomId);
void displayEmptyHand();
+ void displayPicture(const byte *pic, int x, int y);
- void hirs();
int gettKeyPressed();
void handleDescriptionText(int f, int mesgId);
- int animof(int ouf, int num);
- void pictout(int seg, int dep, int x, int y);
+ int getAnimOffset(int frameNum, int animNum);
+
+ void hirs();
};
extern MortevielleEngine *g_vm;
diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp
index 87bcc874b4..0dd197840c 100644
--- a/engines/mortevielle/utils.cpp
+++ b/engines/mortevielle/utils.cpp
@@ -2240,7 +2240,7 @@ void MortevielleEngine::showTitleScreen() {
void MortevielleEngine::draw(int x, int y) {
_mouse.hideMouse();
setPal(_numpal);
- pictout(kAdrCurrentPicture, 0, x, y);
+ displayPicture(&_mem[kAdrCurrentPicture * 16], x, y);
_mouse.showMouse();
}
@@ -2254,7 +2254,7 @@ void MortevielleEngine::drawRightFrame() {
_mem[(kAdrCurrentPicture * 16) + 14] = 15;
}
_mouse.hideMouse();
- pictout(kAdrRightFramePic, 0, 0, 0);
+ displayPicture(&_mem[kAdrRightFramePic * 16], 0, 0);
_mouse.showMouse();
}
@@ -2535,9 +2535,13 @@ void MortevielleEngine::displayControlMenu() {
_controlMenu = 0;
}
-void MortevielleEngine::pictout(int seg, int dep, int x, int y) {
+/**
+ * Display picture at a given coordinate
+ * @remarks Originally called 'pictout'
+ */
+void MortevielleEngine::displayPicture(const byte *pic, int x, int y) {
GfxSurface surface;
- surface.decode(&_mem[(seg * 16) + dep]);
+ surface.decode(pic);
if (_currGraphicalDevice == MODE_HERCULES) {
_mem[(kAdrCurrentPicture * 16) + 2] = 0;
@@ -2575,16 +2579,15 @@ void MortevielleEngine::adzon() {
/**
* Returns the offset within the compressed image data resource of the desired image
+ * @remarks Originally called 'animof'
*/
-int MortevielleEngine::animof(int ouf, int num) {
- int nani = _mem[(kAdrAni * 16) + 1];
- int aux = num;
- if (ouf != 1)
- aux += nani;
-
- int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]);
+int MortevielleEngine::getAnimOffset(int frameNum, int animNum) {
+ int animCount = _mem[(kAdrAni * 16) + 1];
+ int aux = animNum;
+ if (frameNum != 1)
+ aux += animCount;
- return animof_result;
+ return (animCount << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]);
}
/**
@@ -2947,20 +2950,24 @@ void MortevielleEngine::displayQuestionText(Common::String s, int cmd) {
_screenSurface.drawString(copy(s, 1, 25), cmd);
}
-void MortevielleEngine::aniof(int ouf, int num) {
- if ((_caff == BATHROOM) && ((num == 4) || (num == 5)))
+/**
+ * Display animation frame
+ * @remarks Originally called 'aniof'
+ */
+void MortevielleEngine::drawAnimFrame(int frameNum, int animId) {
+ if ((_caff == BATHROOM) && ((animId == 4) || (animId == 5)))
return;
- if ((_caff == DINING_ROOM) && (num == 7))
- num = 6;
+ if ((_caff == DINING_ROOM) && (animId == 7))
+ animId = 6;
else if (_caff == KITCHEN) {
- if (num == 3)
- num = 4;
- else if (num == 4)
- num = 3;
+ if (animId == 3)
+ animId = 4;
+ else if (animId == 4)
+ animId = 3;
}
- int offset = animof(ouf, num);
+ int offset = getAnimOffset(frameNum, animId);
GfxSurface surface;
surface.decode(&_mem[(kAdrAni * 16) + offset]);
@@ -2987,21 +2994,21 @@ void MortevielleEngine::drawPicture() {
if ((_caff < 30) || (_caff > 32)) {
for (int cx = 1; cx <= 6; ++cx) {
if (_openObjects[cx] != 0)
- aniof(1, _openObjects[cx]);
+ drawAnimFrame(1, _openObjects[cx]);
}
if (_caff == ATTIC) {
if (_coreVar._atticBallHoleObjectId == 141)
- aniof(1, 7);
+ drawAnimFrame(1, 7);
if (_coreVar._atticRodHoleObjectId == 159)
- aniof(1, 6);
+ drawAnimFrame(1, 6);
} else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151))
- aniof(1, 2);
+ drawAnimFrame(1, 2);
else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143))
- aniof(1, 1);
+ drawAnimFrame(1, 1);
else if ((_caff == WELL) && (_coreVar._wellObjectId != 0))
- aniof(1, 1);
+ drawAnimFrame(1, 1);
}
if (_caff < ROOM26)