aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle')
-rw-r--r--engines/mortevielle/actions.cpp61
-rw-r--r--engines/mortevielle/actions.h68
-rw-r--r--engines/mortevielle/mor.cpp37
-rw-r--r--engines/mortevielle/mor.h1
-rw-r--r--engines/mortevielle/mortevielle.cpp5
-rw-r--r--engines/mortevielle/mortevielle.h32
-rw-r--r--engines/mortevielle/mouse.cpp4
-rw-r--r--engines/mortevielle/mouse.h2
8 files changed, 87 insertions, 123 deletions
diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp
index 59a99ef811..49496e8daf 100644
--- a/engines/mortevielle/actions.cpp
+++ b/engines/mortevielle/actions.cpp
@@ -26,7 +26,6 @@
*/
#include "common/scummsys.h"
-#include "mortevielle/actions.h"
#include "mortevielle/dialogs.h"
#include "mortevielle/menu.h"
#include "mortevielle/mor.h"
@@ -42,7 +41,7 @@ namespace Mortevielle {
* Engine function - Move
* @remarks Originally called 'taller'
*/
-void fctMove() {
+void MortevielleEngine::fctMove() {
if ((g_s._currPlace == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) {
g_s._currPlace = LANDING;
g_caff = g_s._currPlace;
@@ -178,7 +177,7 @@ void fctMove() {
* Engine function - Take
* @remarks Originally called 'tprendre'
*/
-void fctTake() {
+void MortevielleEngine::fctTake() {
if (g_caff > 99) {
int cx = g_caff;
avpoing(cx);
@@ -291,7 +290,7 @@ void fctTake() {
* Engine function - Inventory / Take
* @remarks Originally called 'tsprendre'
*/
-void fctInventoryTake() {
+void MortevielleEngine::fctInventoryTake() {
int cx, cy, cz;
cx = 0;
@@ -317,7 +316,7 @@ void fctInventoryTake() {
* Engine function - Lift
* @remarks Originally called 'tsoulever'
*/
-void fctLift() {
+void MortevielleEngine::fctLift() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_LIFT));
tfleche();
@@ -351,7 +350,7 @@ void fctLift() {
* Engine function - Read
* @remarks Originally called 'tlire'
*/
-void fctRead() {
+void MortevielleEngine::fctRead() {
if (g_caff > 99)
st4(g_caff);
else {
@@ -370,7 +369,7 @@ void fctRead() {
* Engine function - Self / Read
* @remarks Originally called 'tslire'
*/
-void fctSelfRead() {
+void MortevielleEngine::fctSelfRead() {
if (g_s._selectedObjectId == 0)
g_crep = 186;
else
@@ -381,7 +380,7 @@ void fctSelfRead() {
* Engine function - Look
* @remarks Originally called 'tregarder'
*/
-void fctLook() {
+void MortevielleEngine::fctLook() {
int cx;
if (g_caff > 99) {
@@ -459,7 +458,7 @@ void fctLook() {
* Engine function - Self / Look
* @remarks Originally called 'tsregarder'
*/
-void fctSelftLook() {
+void MortevielleEngine::fctSelftLook() {
if (g_s._selectedObjectId != 0)
treg(g_s._selectedObjectId);
else
@@ -470,7 +469,7 @@ void fctSelftLook() {
* Engine function - Search
* @remarks Originally called 'tfouiller'
*/
-void fctSearch() {
+void MortevielleEngine::fctSearch() {
const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107};
if (g_caff > 99) {
@@ -563,7 +562,7 @@ void fctSearch() {
* Engine function - Self / Search
* @remarks Originally called 'tsfouiller'
*/
-void fctSelfSearch() {
+void MortevielleEngine::fctSelfSearch() {
if (g_s._selectedObjectId != 0)
st7(g_s._selectedObjectId);
else
@@ -574,7 +573,7 @@ void fctSelfSearch() {
* Engine function - Open
* @remarks Originally called 'touvrir'
*/
-void fctOpen() {
+void MortevielleEngine::fctOpen() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_OPEN));
@@ -636,7 +635,7 @@ void fctOpen() {
* Engine function - Place
* @remarks Originally called 'tmettre'
*/
-void fctPlace() {
+void MortevielleEngine::fctPlace() {
if (g_s._selectedObjectId == 0) {
g_crep = 186;
return;
@@ -770,7 +769,7 @@ void fctPlace() {
* Engine function - Turn
* @remarks Originally called 'ttourner'
*/
-void fctTurn() {
+void MortevielleEngine::fctTurn() {
if (g_caff > 99) {
g_crep = 149;
return;
@@ -810,7 +809,7 @@ void fctTurn() {
* Engine function - Hide Self
* @remarks Originally called 'tcacher'
*/
-void fctSelfHide() {
+void MortevielleEngine::fctSelfHide() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_HIDE_SELF));
tfleche();
@@ -829,7 +828,7 @@ void fctSelfHide() {
* Engine function - Attach
* @remarks Originally called 'tattacher'
*/
-void fctAttach() {
+void MortevielleEngine::fctAttach() {
if (g_s._selectedObjectId == 0)
g_crep = 186;
else {
@@ -856,7 +855,7 @@ void fctAttach() {
* Engine function - Close
* @remarks Originally called 'tfermer'
*/
-void fctClose() {
+void MortevielleEngine::fctClose() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_CLOSE));
@@ -896,7 +895,7 @@ void fctClose() {
* Engine function - Knock
* @remarks Originally called 'tfrapper'
*/
-void fctKnock() {
+void MortevielleEngine::fctKnock() {
warning("Knock - _currPlace %d", g_s._currPlace);
if (!g_vm->_syn)
@@ -946,7 +945,7 @@ void fctKnock() {
* Engine function - Self / Put
* @remarks Originally called 'tposer'
*/
-void fctSelfPut() {
+void MortevielleEngine::fctSelfPut() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_POSE));
if (g_s._selectedObjectId == 0)
@@ -1040,7 +1039,7 @@ void fctSelfPut() {
* Engine function - Listen
* @remarks Originally called 'tecouter'
*/
-void fctListen() {
+void MortevielleEngine::fctListen() {
if (g_s._currPlace != 26)
g_crep = 101;
else {
@@ -1078,7 +1077,7 @@ void fctListen() {
* Engine function - Eat
* @remarks Originally called 'tmanger'
*/
-void fctEat() {
+void MortevielleEngine::fctEat() {
if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) {
g_crep = 148;
} else {
@@ -1119,7 +1118,7 @@ void fctEat() {
* Engine function - Enter
* @remarks Originally called 'tentrer'
*/
-void fctEnter() {
+void MortevielleEngine::fctEnter() {
if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) {
t1sama();
tmlieu(g_s._currPlace);
@@ -1178,7 +1177,7 @@ void fctEnter() {
* Engine function - Sleep
* @remarks Originally called 'tdormir'
*/
-void fctSleep() {
+void MortevielleEngine::fctSleep() {
int z, j, h, m;
if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) {
@@ -1225,7 +1224,7 @@ void fctSleep() {
* Engine function - Force
* @remarks Originally called 'tdefoncer'
*/
-void fctForce() {
+void MortevielleEngine::fctForce() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_SMASH));
if (g_caff < 25)
@@ -1245,7 +1244,7 @@ void fctForce() {
* Engine function - Leave
* @remarks Originally called 'tsortir'
*/
-void fctLeave() {
+void MortevielleEngine::fctLeave() {
tsort();
g_crep = 0;
if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK) || (g_s._currPlace == WELL))
@@ -1281,7 +1280,7 @@ void fctLeave() {
* Engine function - Wait
* @remarks Originally called 'tattendre'
*/
-void fctWait() {
+void MortevielleEngine::fctWait() {
g_mpers = 0;
clsf3();
@@ -1314,7 +1313,7 @@ void fctWait() {
* Engine function - Sound
* @remarks Originally called 'tsonder'
*/
-void fctSound() {
+void MortevielleEngine::fctSound() {
if (!g_vm->_syn)
ecr3(g_vm->getEngineString(S_PROBE2));
if (g_caff < 27) {
@@ -1329,7 +1328,7 @@ void fctSound() {
* Engine function - Discuss
* @remarks Originally called 'tparler'
*/
-void fctDiscuss() {
+void MortevielleEngine::fctDiscuss() {
bool te[47];
int cy, cx, max, suj, co, lig, icm, i, choi, x, y, c;
char tou;
@@ -1394,7 +1393,7 @@ void fctDiscuss() {
moveMouse(f, tou);
CHECK_QUIT;
- getMousePos(x, y, c);
+ getMousePos_(x, y, c);
x *= (3 - g_res);
if (x > 319)
cx = 41;
@@ -1527,7 +1526,7 @@ void fctDiscuss() {
* Engine function - Smell
* @remarks Originally called 'tsentir'
*/
-void fctSmell() {
+void MortevielleEngine::fctSmell() {
g_crep = 119;
if (g_caff < 26) {
if (!g_vm->_syn)
@@ -1545,7 +1544,7 @@ void fctSmell() {
* Engine function - Scratch
* @remarks Originally called 'tgratter'
*/
-void fctScratch() {
+void MortevielleEngine::fctScratch() {
g_crep = 155;
if (g_caff < 27) {
if (!g_vm->_syn)
diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h
deleted file mode 100644
index 74d4e5c046..0000000000
--- a/engines/mortevielle/actions.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-/*
- * This code is based on original Mortville Manor DOS source code
- * Copyright (c) 1988-1989 Lankhor
- */
-
-#ifndef MORTEVIELLE_ACTIONS_H
-#define MORTEVIELLE_ACTIONS_H
-
-namespace Mortevielle {
-
-/* NIVEAU 4 */
-extern void fctMove();
-extern void fctTake();
-extern void fctInventoryTake();
-extern void fctLift();
-extern void fctRead();
-extern void fctSelfRead();
-extern void fctLook();
-extern void fctSelftLook();
-extern void fctSearch();
-extern void fctSelfSearch();
-extern void fctOpen();
-extern void fctPlace();
-extern void fctTurn();
-extern void fctSelfHide();
-extern void fctAttach();
-extern void fctClose();
-extern void fctKnock();
-extern void fctSelfPut();
-extern void fctListen();
-extern void fctEat();
-extern void fctEnter();
-extern void fctSleep();
-extern void fctForce();
-extern void fctLeave();
-extern void fctWait();
-extern void fctSound();
-extern void fctDiscuss();
-extern void fctSmell();
-extern void fctScratch();
-/* NIVEAU 2 */
-extern void endGame();
-extern void loseGame();
-
-} // End of namespace Mortevielle
-#endif
diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp
index ef55e316a8..c973fabc0a 100644
--- a/engines/mortevielle/mor.cpp
+++ b/engines/mortevielle/mor.cpp
@@ -30,7 +30,6 @@
#include "common/str.h"
#include "common/system.h"
#include "common/textconsole.h"
-#include "mortevielle/actions.h"
#include "mortevielle/dialogs.h"
#include "mortevielle/graphics.h"
#include "mortevielle/menu.h"
@@ -61,7 +60,7 @@ void copcha() {
bool isMouseIn(rectangle r) {
int x, y, c;
- getMousePos(x, y, c);
+ getMousePos_(x, y, c);
if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2))
return true;
@@ -91,12 +90,11 @@ void writepal(int n) {
}
break;
case MODE_CGA: {
- warning("TODO: If this code is needed, resolve the incompatible types");
nhom pal[16];
for (int i = 0; i < 16; ++i) {
pal[i] = g_palcga[n]._a[i];
}
-// nhom pal[16] = palcga[n]._a;
+
if (n < 89)
palette(g_palcga[n]._p);
@@ -1833,7 +1831,7 @@ void tkey1(bool d) {
while (keypressed())
g_key = testou();
do {
- getMousePos(x, y, c);
+ getMousePos_(x, y, c);
keypressed();
} while (c != 0);
@@ -1842,7 +1840,7 @@ void tkey1(bool d) {
if (d)
tinke();
quest = keypressed();
- getMousePos(x, y, c);
+ getMousePos_(x, y, c);
CHECK_QUIT;
} while (!(quest || (c != 0) || (d && g_vm->_anyone)));
if (quest)
@@ -2518,18 +2516,23 @@ void tmaj3() {
g_s._heure = chr(minute);
}
-void tsitu() {
- if (!g_vm->_col)
+/**
+ * Engine function - Handle OpCodes
+ * @remarks Originally called 'tsitu'
+ */
+void MortevielleEngine::handleOpcode() {
+ if (!_col)
clearScreenType2();
- g_vm->_syn = false;
- g_vm->_keyPressedEsc = false;
- if (!g_vm->_anyone) {
- if (g_vm->_brt)
+ _syn = false;
+ _keyPressedEsc = false;
+ if (!_anyone) {
+ if (_brt) {
if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) {
g_ctrm = 4;
mennor();
return;
}
+ }
if (g_msg[3] == MENU_MOVE)
fctMove();
if (g_msg[3] == MENU_DISCUSS)
@@ -2586,14 +2589,14 @@ void tsitu() {
fctSelfPut();
if (g_msg[4] == OPCODE_SLOOK)
fctSelftLook();
- g_vm->_hiddenHero = false;
+ _hiddenHero = false;
if (g_msg[4] == OPCODE_SHIDE)
fctSelfHide();
} else {
- if (g_vm->_anyone) {
+ if (_anyone) {
quelquun();
- g_vm->_anyone = false;
+ _anyone = false;
mennor();
return;
}
@@ -2604,7 +2607,7 @@ void tsitu() {
((hour > 0) && (hour < 6) && (g_s._currPlace != 0)))
++g_s._faithScore;
if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23)
- && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) {
+ && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!_loseGame)) {
if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) {
g_crep = 1501;
tperd();
@@ -2613,7 +2616,7 @@ void tsitu() {
g_crep = 1508;
tperd();
}
- if ((day > 1) && (hour > 8) && (!g_vm->_loseGame)) {
+ if ((day > 1) && (hour > 8) && (!_loseGame)) {
g_crep = 1502;
tperd();
}
diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h
index d7d5c8739f..2336bc4022 100644
--- a/engines/mortevielle/mor.h
+++ b/engines/mortevielle/mor.h
@@ -184,7 +184,6 @@ extern void changeGraphicalDevice(int newDevice);
/* NIVEAU 3 */
/* procedure PROGRAMME */
extern void tmaj3();
-extern void tsitu();
/* NIVEAU 1 */
extern void theure();
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp
index 4b8c2678b3..1ef69a6b5b 100644
--- a/engines/mortevielle/mortevielle.cpp
+++ b/engines/mortevielle/mortevielle.cpp
@@ -29,7 +29,6 @@
#include "graphics/palette.h"
#include "graphics/pixelformat.h"
#include "mortevielle/mortevielle.h"
-#include "mortevielle/actions.h"
#include "mortevielle/dialogs.h"
#include "mortevielle/asm.h"
#include "mortevielle/keyboard.h"
@@ -552,7 +551,7 @@ void MortevielleEngine::mainGame() {
/**
* This method handles playing a loaded game
- * @remarks Originally called tojouer
+ * @remarks Originally called tjouer
*/
void MortevielleEngine::playGame() {
gameLoaded();
@@ -660,7 +659,7 @@ void MortevielleEngine::handleAction() {
}
do {
if (! oo)
- tsitu();
+ handleOpcode();
if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) {
taffich();
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index 0d1f5670ca..c1ed2ad855 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -169,10 +169,42 @@ public:
void delay(int amount);
Common::String getEngineString(int idx) const { return _engineStrings[idx]; }
Common::String getGameString(int idx) const { return _gameStrings[idx]; }
+ void handleOpcode();
void endGame();
void loseGame();
void gameLoaded();
+
+/* NIVEAU 4 */
+ void fctMove();
+ void fctTake();
+ void fctInventoryTake();
+ void fctLift();
+ void fctRead();
+ void fctSelfRead();
+ void fctLook();
+ void fctSelftLook();
+ void fctSearch();
+ void fctSelfSearch();
+ void fctOpen();
+ void fctPlace();
+ void fctTurn();
+ void fctSelfHide();
+ void fctAttach();
+ void fctClose();
+ void fctKnock();
+ void fctSelfPut();
+ void fctListen();
+ void fctEat();
+ void fctEnter();
+ void fctSleep();
+ void fctForce();
+ void fctLeave();
+ void fctWait();
+ void fctSound();
+ void fctDiscuss();
+ void fctSmell();
+ void fctScratch();
};
extern MortevielleEngine *g_vm;
diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp
index 1240fa4165..2eec6ab2b5 100644
--- a/engines/mortevielle/mouse.cpp
+++ b/engines/mortevielle/mouse.cpp
@@ -278,7 +278,7 @@ void setMousePos(int x, int y) {
* Get mouse poisition
* @remarks Originally called 'read_pos_mouse'
*/
-void getMousePos(int &x, int &y, int &c) {
+void getMousePos_(int &x, int &y, int &c) {
x = g_vm->getMousePos().x;
y = g_vm->getMousePos().y;
c = g_vm->getMouseClick() ? 1 : 0;
@@ -307,7 +307,7 @@ void moveMouse(bool &funct, char &key) {
CHECK_QUIT;
in1 = get_ch();
- getMousePos(cx, cy, cd);
+ getMousePos_(cx, cy, cd);
switch (toupper(in1)) {
case '4':
cx = cx - 8;
diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h
index d17654c19e..532644a255 100644
--- a/engines/mortevielle/mouse.h
+++ b/engines/mortevielle/mouse.h
@@ -44,7 +44,7 @@ void initMouse();
extern void hideMouse();
extern void showMouse();
extern void setMousePos(int x, int y);
-extern void getMousePos(int &x, int &y, int &c);
+extern void getMousePos_(int &x, int &y, int &c);
extern void moveMouse(bool &funct, char &key);
} // End of namespace Mortevielle