mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 07:14:59 +00:00
TRECISION: introduce LogicManager for hardcoded logic parts of the engine, some renaming
This commit is contained in:
parent
af5c75bffa
commit
e0e111f60c
File diff suppressed because it is too large
Load Diff
45
engines/trecision/logic.h
Normal file
45
engines/trecision/logic.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TRECISION_LOGIC_H
|
||||
#define TRECISION_LOGIC_H
|
||||
|
||||
namespace Trecision {
|
||||
class TrecisionEngine;
|
||||
|
||||
class LogicManager {
|
||||
private:
|
||||
TrecisionEngine *_vm;
|
||||
public:
|
||||
LogicManager(TrecisionEngine *vm);
|
||||
~LogicManager();
|
||||
|
||||
void initScript();
|
||||
void setRoom(uint16 r, bool b);
|
||||
void initInventory();
|
||||
void useWithScreen(bool *updateinv, bool *printsent);
|
||||
};
|
||||
; // end of class
|
||||
|
||||
} // end of namespace
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -149,7 +149,7 @@ void doMouse() {
|
||||
int8 curpos;
|
||||
if (GAMEAREA(g_vm->_curMessage->_u16Param2))
|
||||
curpos = POSGAME;
|
||||
else if (INVAREA(g_vm->_curMessage->_u16Param2))
|
||||
else if (isInventoryArea(g_vm->_curMessage->_u16Param2))
|
||||
curpos = POSINV;
|
||||
else
|
||||
curpos = POSUP;
|
||||
@ -277,7 +277,7 @@ void doMouse() {
|
||||
|
||||
// If it's in a room without a character, like a map or a book
|
||||
if (FlagCharacterExist == false) {
|
||||
if ((INVAREA(g_vm->_curMessage->_u16Param2)) && ((g_vm->_curRoom == r31P) || (g_vm->_curRoom == r35P))) {
|
||||
if ((isInventoryArea(g_vm->_curMessage->_u16Param2)) && ((g_vm->_curRoom == r31P) || (g_vm->_curRoom == r35P))) {
|
||||
if (ICONAREA(g_vm->_curMessage->_u16Param1, g_vm->_curMessage->_u16Param2) && (g_vm->whatIcon(g_vm->_curMessage->_u16Param1)) && (g_vm->_inventoryStatus == INV_INACTION)) {
|
||||
g_vm->_useWith[WITH] = 0;
|
||||
g_vm->_curObj = 0;
|
||||
@ -447,7 +447,7 @@ void doMouse() {
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERGOTOEXAMINE, MP_DEFAULT, g_vm->_curMessage->_u16Param1, g_vm->_curMessage->_u16Param2, 0, g_vm->_curObj);
|
||||
} else
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERGOTO, MP_DEFAULT, g_vm->_curMessage->_u16Param1, g_vm->_curMessage->_u16Param2, 0, 0);
|
||||
} else if (INVAREA(g_vm->_curMessage->_u16Param2)) {
|
||||
} else if (isInventoryArea(g_vm->_curMessage->_u16Param2)) {
|
||||
// Inventory area
|
||||
if (g_vm->_animMgr->_playingAnims[1] || FlagDialogActive || g_vm->_curRoom == rSYS)
|
||||
break;
|
||||
@ -656,20 +656,20 @@ void doSystem() {
|
||||
// Handle exit velocity in dual rooms level 2
|
||||
if (g_vm->_room[g_vm->_oldRoom]._flag & OBJFLAG_EXTRA) {
|
||||
if (g_vm->_curObj == od2ETO2C)
|
||||
SetRoom(r2E, false);
|
||||
g_vm->setRoom(r2E, false);
|
||||
if (g_vm->_curObj == od24TO23)
|
||||
SetRoom(r24, false);
|
||||
g_vm->setRoom(r24, false);
|
||||
if (g_vm->_curObj == od21TO22)
|
||||
SetRoom(r21, false);
|
||||
g_vm->setRoom(r21, false);
|
||||
if (g_vm->_curObj == od2GVALLA26)
|
||||
SetRoom(r2GV, false);
|
||||
g_vm->setRoom(r2GV, false);
|
||||
} else {
|
||||
if (g_vm->_curObj == oENTRANCE2E)
|
||||
SetRoom(r2E, true);
|
||||
g_vm->setRoom(r2E, true);
|
||||
if (g_vm->_curObj == od24TO26)
|
||||
SetRoom(r24, true);
|
||||
g_vm->setRoom(r24, true);
|
||||
if (g_vm->_curObj == od21TO23)
|
||||
SetRoom(r21, true);
|
||||
g_vm->setRoom(r21, true);
|
||||
}
|
||||
|
||||
if ((g_vm->_curRoom == r12) && (g_vm->_oldRoom == r11))
|
||||
@ -706,21 +706,21 @@ void doSystem() {
|
||||
g_vm->_flagMouseEnabled = true;
|
||||
|
||||
if ((g_vm->_curRoom == r21) && ((g_vm->_oldRoom == r23A) || (g_vm->_oldRoom == r23B)))
|
||||
SetRoom(r21, true);
|
||||
g_vm->setRoom(r21, true);
|
||||
else if ((g_vm->_curRoom == r21) && (g_vm->_oldRoom == r22))
|
||||
SetRoom(r21, false);
|
||||
g_vm->setRoom(r21, false);
|
||||
else if ((g_vm->_curRoom == r24) && ((g_vm->_oldRoom == r23A) || (g_vm->_oldRoom == r23B)))
|
||||
SetRoom(r24, false);
|
||||
g_vm->setRoom(r24, false);
|
||||
else if ((g_vm->_curRoom == r24) && (g_vm->_oldRoom == r26))
|
||||
SetRoom(r24, true);
|
||||
g_vm->setRoom(r24, true);
|
||||
else if ((g_vm->_curRoom == r2A) && (g_vm->_oldRoom == r25))
|
||||
SetRoom(r2A, true);
|
||||
g_vm->setRoom(r2A, true);
|
||||
else if ((g_vm->_curRoom == r2A) && ((g_vm->_oldRoom == r2B) || (g_vm->_oldRoom == r29) || (g_vm->_oldRoom == r29L)))
|
||||
SetRoom(r2A, false);
|
||||
g_vm->setRoom(r2A, false);
|
||||
else if ((g_vm->_curRoom == r2B) && (g_vm->_oldRoom == r28))
|
||||
SetRoom(r2B, true);
|
||||
g_vm->setRoom(r2B, true);
|
||||
else if ((g_vm->_curRoom == r2B) && (g_vm->_oldRoom == r2A))
|
||||
SetRoom(r2B, false);
|
||||
g_vm->setRoom(r2B, false);
|
||||
// for save/load
|
||||
else if ((g_vm->_curRoom == r15) && (g_vm->_room[g_vm->_curRoom]._flag & OBJFLAG_EXTRA))
|
||||
read3D("152.3d");
|
||||
@ -791,7 +791,7 @@ void RollInventory(uint8 status) {
|
||||
g_vm->setInventoryStart(g_vm->_iconBase, INVENTORY_SHOW);
|
||||
g_vm->_inventoryStatus = INV_INACTION;
|
||||
g_vm->_inventoryCounter = INVENTORY_SHOW;
|
||||
if (!(INVAREA(my)))
|
||||
if (!(isInventoryArea(my)))
|
||||
doEvent(MC_INVENTORY, ME_CLOSE, MP_DEFAULT, 0, 0, 0, 0);
|
||||
g_vm->redrawString();
|
||||
return ;
|
||||
@ -804,7 +804,7 @@ void RollInventory(uint8 status) {
|
||||
g_vm->setInventoryStart(g_vm->_iconBase, INVENTORY_HIDE);
|
||||
g_vm->_inventoryStatus = INV_OFF;
|
||||
g_vm->_inventoryCounter = INVENTORY_HIDE;
|
||||
if (INVAREA(my) && !(FlagDialogActive || FlagDialogMenuActive))
|
||||
if (isInventoryArea(my) && !(FlagDialogActive || FlagDialogMenuActive))
|
||||
doEvent(MC_INVENTORY, ME_OPEN, MP_DEFAULT, 0, 0, 0, 0);
|
||||
else
|
||||
g_vm->redrawString();
|
||||
@ -897,7 +897,7 @@ void doIdle() {
|
||||
if (g_vm->_inventoryScrollTime > TheTime)
|
||||
g_vm->_inventoryScrollTime = TheTime;
|
||||
|
||||
if (INVAREA(my) && (TheTime > (INVSCROLLSP + g_vm->_inventoryScrollTime))) {
|
||||
if (isInventoryArea(my) && (TheTime > (INVSCROLLSP + g_vm->_inventoryScrollTime))) {
|
||||
doScrollInventory(mx);
|
||||
g_vm->_inventoryScrollTime = TheTime;
|
||||
}
|
||||
|
@ -62,9 +62,9 @@ void MostraScelte(uint16 i) {
|
||||
|
||||
CurDispScelte = 0;
|
||||
for (int c = d->_firstChoice; c < (d->_firstChoice + d->_choiceNumb); c++) {
|
||||
if (!(_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
DispScelte[CurDispScelte++] = c;
|
||||
DialogPrint(x, y, HWHITE, g_vm->_sentence[_choice[c]._sentenceIndex]);
|
||||
DialogPrint(x, y, HWHITE, g_vm->_sentence[g_vm->_choice[c]._sentenceIndex]);
|
||||
y += CARHEI;
|
||||
}
|
||||
}
|
||||
@ -88,9 +88,9 @@ void UpdateScelte(int16 dmx, int16 dmy) {
|
||||
for (int c = 0; c < MAXDISPSCELTE; c++) {
|
||||
if (DispScelte[c] != 0) {
|
||||
if (c == CurPos)
|
||||
DialogPrint(10, 5 + c * CARHEI, HGREEN, g_vm->_sentence[_choice[DispScelte[c]]._sentenceIndex]);
|
||||
DialogPrint(10, 5 + c * CARHEI, HGREEN, g_vm->_sentence[g_vm->_choice[DispScelte[c]]._sentenceIndex]);
|
||||
else
|
||||
DialogPrint(10, 5 + c * CARHEI, HWHITE, g_vm->_sentence[_choice[DispScelte[c]]._sentenceIndex]);
|
||||
DialogPrint(10, 5 + c * CARHEI, HWHITE, g_vm->_sentence[g_vm->_choice[DispScelte[c]]._sentenceIndex]);
|
||||
}
|
||||
}
|
||||
g_vm->_graphicsMgr->showScreen(0, 5, MAXX, (CurDispScelte)*CARHEI + 5);
|
||||
@ -136,10 +136,10 @@ void PlayDialog(uint16 i) {
|
||||
int skip = 0;
|
||||
int curChoice = 0;
|
||||
for (int c = _dialog[_curDialog]._firstChoice; c < (_dialog[_curDialog]._firstChoice + _dialog[_curDialog]._choiceNumb); c++)
|
||||
if (!(_choice[c]._flag & DLGCHOICE_HIDE))
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE))
|
||||
curChoice++;
|
||||
|
||||
if ((_curDialog == dC581) && !(_choice[262]._flag & DLGCHOICE_HIDE))
|
||||
if ((_curDialog == dC581) && !(g_vm->_choice[262]._flag & DLGCHOICE_HIDE))
|
||||
skip++;
|
||||
if ((_curDialog == dC581) && (curChoice == 1))
|
||||
skip++;
|
||||
@ -211,13 +211,13 @@ void afterChoice(int numframe) {
|
||||
g_vm->_inventoryObj[iFOTO]._action = 1465;
|
||||
g_vm->_obj[oTESSERA1A]._action = 238;
|
||||
if (g_vm->_obj[oTESSERA1A]._flag & OBJFLAG_EXTRA) {
|
||||
_choice[154]._flag &= ~DLGCHOICE_HIDE;
|
||||
_choice[153]._flag |= DLGCHOICE_HIDE;
|
||||
g_vm->_choice[154]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[153]._flag |= DLGCHOICE_HIDE;
|
||||
} else
|
||||
_choice[153]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[153]._flag &= ~DLGCHOICE_HIDE;
|
||||
} else if (_curChoice == 154) {
|
||||
if (g_vm->_obj[oTESSERA1A]._flag & OBJFLAG_EXTRA)
|
||||
_choice[183]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[183]._flag &= ~DLGCHOICE_HIDE;
|
||||
} else if (_curChoice == 155)
|
||||
g_vm->_obj[ocGUARD18]._action = 228;
|
||||
break;
|
||||
@ -229,12 +229,12 @@ void afterChoice(int numframe) {
|
||||
*/
|
||||
case dF213B:
|
||||
case dF213:
|
||||
SetRoom(r21, true);
|
||||
g_vm->setRoom(r21, true);
|
||||
break;
|
||||
|
||||
case dF212B:
|
||||
case dF212:
|
||||
SetRoom(r21, false);
|
||||
g_vm->setRoom(r21, false);
|
||||
break;
|
||||
|
||||
case dF321:
|
||||
@ -268,7 +268,7 @@ void afterChoice(int numframe) {
|
||||
break;
|
||||
}
|
||||
// Se ultima scelta era un esci dialogo
|
||||
if (_choice[_curChoice]._flag & DLGCHOICE_EXITDLG) {
|
||||
if (g_vm->_choice[_curChoice]._flag & DLGCHOICE_EXITDLG) {
|
||||
g_vm->_animMgr->stopFullMotion();
|
||||
|
||||
switch (_curDialog) {
|
||||
@ -294,7 +294,7 @@ void afterChoice(int numframe) {
|
||||
break;
|
||||
*/
|
||||
case dPOLIZIOTTO16:
|
||||
if ((_choice[61]._flag & OBJFLAG_DONE) && (_choice[62]._flag & OBJFLAG_DONE) && (g_vm->_obj[ocPOLIZIOTTO16]._flag & OBJFLAG_EXTRA))
|
||||
if ((g_vm->_choice[61]._flag & OBJFLAG_DONE) && (g_vm->_choice[62]._flag & OBJFLAG_DONE) && (g_vm->_obj[ocPOLIZIOTTO16]._flag & OBJFLAG_EXTRA))
|
||||
g_vm->_obj[ocPOLIZIOTTO16]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
break;
|
||||
|
||||
@ -500,11 +500,11 @@ void afterChoice(int numframe) {
|
||||
g_vm->_obj[oFINESTRA58P55]._action = 1291;
|
||||
g_vm->_obj[oFINESTRAA5A]._action = 1403;
|
||||
g_vm->_obj[oGUARDIA58]._mode |= OBJMODE_OBJSTATUS;
|
||||
_choice[286]._flag |= OBJFLAG_DONE;
|
||||
g_vm->_choice[286]._flag |= OBJFLAG_DONE;
|
||||
break;
|
||||
|
||||
case dC581:
|
||||
if (!(_choice[886]._flag & OBJFLAG_DONE) && (_choice[258]._flag & OBJFLAG_DONE)) {
|
||||
if (!(g_vm->_choice[886]._flag & OBJFLAG_DONE) && (g_vm->_choice[258]._flag & OBJFLAG_DONE)) {
|
||||
setPosition(1);
|
||||
PlayDialog(dF581);
|
||||
}
|
||||
@ -541,8 +541,8 @@ void afterChoice(int numframe) {
|
||||
}
|
||||
|
||||
// se parte altro dialogo
|
||||
if (_choice[_curChoice]._nextDialog != 0) {
|
||||
_curDialog = _choice[_curChoice]._nextDialog;
|
||||
if (g_vm->_choice[_curChoice]._nextDialog != 0) {
|
||||
_curDialog = g_vm->_choice[_curChoice]._nextDialog;
|
||||
FlagDialogActive = true;
|
||||
_curChoice = 0;
|
||||
|
||||
@ -560,7 +560,7 @@ void afterChoice(int numframe) {
|
||||
|
||||
// fa partire subito tutte le prevarica
|
||||
for (int c = d->_firstChoice; c < (d->_firstChoice + d->_choiceNumb); c++) {
|
||||
if ((_choice[c]._flag & DLGCHOICE_FRAUD) && (!(_choice[c]._flag & DLGCHOICE_HIDE))) {
|
||||
if ((g_vm->_choice[c]._flag & DLGCHOICE_FRAUD) && (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE))) {
|
||||
PlayScelta(c);
|
||||
return;
|
||||
}
|
||||
@ -569,8 +569,8 @@ void afterChoice(int numframe) {
|
||||
// se c'e' una sola partisubito la fa partire altrimenti mostra le scelte
|
||||
int res = 0;
|
||||
for (int c = d->_firstChoice; c < (d->_firstChoice + d->_choiceNumb); c++) {
|
||||
if (!(_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
if (_choice[c]._flag & DLGCHOICE_EXITNOW) {
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
if (g_vm->_choice[c]._flag & DLGCHOICE_EXITNOW) {
|
||||
if (res == 0)
|
||||
res = c;
|
||||
else {
|
||||
@ -591,7 +591,7 @@ void afterChoice(int numframe) {
|
||||
// se sono tutte hidate esce dal dialogo
|
||||
res = 0;
|
||||
for (int c = d->_firstChoice; c < (d->_firstChoice + d->_choiceNumb); c++) {
|
||||
if (!(_choice[c]._flag & DLGCHOICE_HIDE))
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE))
|
||||
res++;
|
||||
}
|
||||
|
||||
@ -622,7 +622,7 @@ void DialogHandler(int numframe) {
|
||||
PlayScelta
|
||||
--------------------------------------------------*/
|
||||
void PlayScelta(uint16 i) {
|
||||
DialogChoice *ss = &_choice[i];
|
||||
DialogChoice *ss = &g_vm->_choice[i];
|
||||
|
||||
wordset(g_vm->_video2, 0, MAXX * TOP);
|
||||
g_vm->_graphicsMgr->showScreen(0, 0, MAXX, TOP);
|
||||
@ -640,10 +640,10 @@ void PlayScelta(uint16 i) {
|
||||
|
||||
// disattiva le altre scelte
|
||||
for (int c = 0; c < MAXDISPSCELTE; c++)
|
||||
_choice[ss->_off[c]]._flag |= DLGCHOICE_HIDE;
|
||||
g_vm->_choice[ss->_off[c]]._flag |= DLGCHOICE_HIDE;
|
||||
// attiva le altre scelte
|
||||
for (int c = 0; c < MAXDISPSCELTE; c++)
|
||||
_choice[ss->_on[c]]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[ss->_on[c]]._flag &= ~DLGCHOICE_HIDE;
|
||||
|
||||
int lens = 0;
|
||||
for (int c = _curSubTitle; c < EndBattuta; c++)
|
||||
|
@ -100,9 +100,9 @@ void doMouseExamine(uint16 TheObj) {
|
||||
switch (TheObj) {
|
||||
case oMAPPA12:
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, a1211OSSERVAMAPPAPALAZZO, 0, 0, TheObj);
|
||||
_choice[4]._flag &= ~DLGCHOICE_HIDE;
|
||||
_choice[18]._flag &= ~DLGCHOICE_HIDE;
|
||||
_choice[33]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[4]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[18]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[33]._flag &= ~DLGCHOICE_HIDE;
|
||||
printSentence = false;
|
||||
break;
|
||||
|
||||
@ -208,8 +208,8 @@ void doMouseExamine(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oTESSERA1A:
|
||||
if (((_choice[151]._flag & OBJFLAG_DONE) || (_choice[152]._flag & OBJFLAG_DONE)) && !(_choice[183]._flag & OBJFLAG_DONE))
|
||||
_choice[183]._flag &= ~DLGCHOICE_HIDE;
|
||||
if (((g_vm->_choice[151]._flag & OBJFLAG_DONE) || (g_vm->_choice[152]._flag & OBJFLAG_DONE)) && !(g_vm->_choice[183]._flag & OBJFLAG_DONE))
|
||||
g_vm->_choice[183]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_obj[oTESSERA1A]._flag |= OBJFLAG_EXTRA;
|
||||
printSentence = true;
|
||||
break;
|
||||
@ -490,7 +490,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
case oSCALA16:
|
||||
if (!(g_vm->_obj[oSCALA16]._flag & OBJFLAG_EXTRA)) {
|
||||
g_vm->_obj[oSCALA16]._flag |= OBJFLAG_EXTRA;
|
||||
_choice[61]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[61]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dPOLIZIOTTO16);
|
||||
g_vm->_obj[oSCALA16]._action = 166;
|
||||
g_vm->_obj[ocPOLIZIOTTO16]._action = 166;
|
||||
@ -580,8 +580,8 @@ void doMouseOperate(uint16 TheObj) {
|
||||
|
||||
case oPORTAC18:
|
||||
if (g_vm->_obj[ocGUARD18]._flag & OBJFLAG_PERSON) {
|
||||
_choice[151]._flag |= DLGCHOICE_HIDE;
|
||||
_choice[152]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[151]._flag |= DLGCHOICE_HIDE;
|
||||
g_vm->_choice[152]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dGUARDIANO18);
|
||||
g_vm->_obj[ocGUARD18]._flag &= ~OBJFLAG_PERSON;
|
||||
g_vm->_obj[ocGUARD18]._action = 227;
|
||||
@ -623,13 +623,13 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oCATENAT21:
|
||||
if ((g_vm->iconPos(iSBARRA21) != MAXICON) && ((_choice[436]._flag & OBJFLAG_DONE) || (_choice[466]._flag & OBJFLAG_DONE))) {
|
||||
if ((g_vm->iconPos(iSBARRA21) != MAXICON) && ((g_vm->_choice[436]._flag & OBJFLAG_DONE) || (g_vm->_choice[466]._flag & OBJFLAG_DONE))) {
|
||||
if (g_vm->_room[g_vm->_curRoom]._flag & OBJFLAG_EXTRA) // va a destra
|
||||
PlayDialog(dF212); // 436
|
||||
else // va a sinistra
|
||||
PlayDialog(dF213); // 466
|
||||
printsent = false;
|
||||
} else if ((_choice[451]._flag & OBJFLAG_DONE) || (_choice[481]._flag & OBJFLAG_DONE)) {
|
||||
} else if ((g_vm->_choice[451]._flag & OBJFLAG_DONE) || (g_vm->_choice[481]._flag & OBJFLAG_DONE)) {
|
||||
if (g_vm->_room[g_vm->_curRoom]._flag & OBJFLAG_EXTRA) // va a destra
|
||||
PlayDialog(dF212B); // 451
|
||||
else // va a sinistra
|
||||
@ -690,11 +690,11 @@ void doMouseOperate(uint16 TheObj) {
|
||||
case oPASSAGE24:
|
||||
if (g_vm->_room[r24]._flag & OBJFLAG_EXTRA) {
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, a244, 0, 14, TheObj);
|
||||
SetRoom(r24, false);
|
||||
g_vm->setRoom(r24, false);
|
||||
printsent = false;
|
||||
} else {
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, a243, 0, 13, TheObj);
|
||||
SetRoom(r24, true);
|
||||
g_vm->setRoom(r24, true);
|
||||
printsent = false;
|
||||
}
|
||||
break;
|
||||
@ -891,7 +891,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oCOMPUTER36:
|
||||
if (!(_choice[646]._flag & OBJFLAG_DONE)) {
|
||||
if (!(g_vm->_choice[646]._flag & OBJFLAG_DONE)) {
|
||||
PlayDialog(dF361);
|
||||
g_vm->_obj[oCOMPUTER36]._action = 2004;
|
||||
printsent = false;
|
||||
@ -1100,8 +1100,8 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oPORTAC4A:
|
||||
if (!(_choice[245]._flag & OBJFLAG_DONE) && !(_choice[766]._flag & OBJFLAG_DONE)) {
|
||||
_choice[245]._flag &= ~DLGCHOICE_HIDE;
|
||||
if (!(g_vm->_choice[245]._flag & OBJFLAG_DONE) && !(g_vm->_choice[766]._flag & OBJFLAG_DONE)) {
|
||||
g_vm->_choice[245]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dC4A1);
|
||||
setPosition(14);
|
||||
g_vm->_obj[oPORTAC4A]._action = 1117;
|
||||
@ -1114,8 +1114,8 @@ void doMouseOperate(uint16 TheObj) {
|
||||
case oPULSANTE4A:
|
||||
if (g_vm->_obj[TheObj]._anim)
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, g_vm->_obj[TheObj]._anim, 0, 0, TheObj);
|
||||
else if (!(_choice[244]._flag & OBJFLAG_DONE)) {
|
||||
_choice[244]._flag &= ~DLGCHOICE_HIDE;
|
||||
else if (!(g_vm->_choice[244]._flag & OBJFLAG_DONE)) {
|
||||
g_vm->_choice[244]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dC4A1);
|
||||
g_vm->_obj[oPULSANTE4A]._examine = 1108;
|
||||
g_vm->_obj[oPULSANTE4A]._action = 1109;
|
||||
@ -1152,7 +1152,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oPORTAC54:
|
||||
if (!(_choice[826]._flag & OBJFLAG_DONE)) {
|
||||
if (!(g_vm->_choice[826]._flag & OBJFLAG_DONE)) {
|
||||
PlayDialog(dF541);
|
||||
printsent = false;
|
||||
} else
|
||||
@ -1160,7 +1160,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oLAVATRICEL54:
|
||||
if ((g_vm->_obj[TheObj]._anim) && (g_vm->_obj[oSECCHIOS54]._flag & OBJFLAG_EXTRA) && (g_vm->_obj[oGRATAC54]._mode & OBJMODE_OBJSTATUS) && !(_choice[841]._flag & OBJFLAG_DONE))
|
||||
if ((g_vm->_obj[TheObj]._anim) && (g_vm->_obj[oSECCHIOS54]._flag & OBJFLAG_EXTRA) && (g_vm->_obj[oGRATAC54]._mode & OBJMODE_OBJSTATUS) && !(g_vm->_choice[841]._flag & OBJFLAG_DONE))
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, g_vm->_obj[TheObj]._anim, 0, 0, TheObj);
|
||||
else
|
||||
printsent = true;
|
||||
@ -1175,7 +1175,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oTASTIERA56:
|
||||
if (_choice[262]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[262]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_obj[od56ALLA59]._mode & OBJMODE_OBJSTATUS)
|
||||
CharacterSay(g_vm->_obj[TheObj]._action);
|
||||
else
|
||||
@ -1210,7 +1210,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oFINESTRAA5A:
|
||||
if ((_choice[871]._flag & OBJFLAG_DONE) && !(_choice[286]._flag & OBJFLAG_DONE)) {
|
||||
if ((g_vm->_choice[871]._flag & OBJFLAG_DONE) && !(g_vm->_choice[286]._flag & OBJFLAG_DONE)) {
|
||||
PlayDialog(dC5A1);
|
||||
printsent = false;
|
||||
} else
|
||||
@ -1218,7 +1218,7 @@ void doMouseOperate(uint16 TheObj) {
|
||||
break;
|
||||
|
||||
case oFINESTRAB5A:
|
||||
if (!(_choice[256]._flag & OBJFLAG_DONE)) {
|
||||
if (!(g_vm->_choice[256]._flag & OBJFLAG_DONE)) {
|
||||
CharacterSay(1999);
|
||||
printsent = false;
|
||||
} else
|
||||
@ -1361,24 +1361,24 @@ void doMouseTalk(uint16 TheObj) {
|
||||
|
||||
switch (TheObj) {
|
||||
case oTICKETOFFICE16:
|
||||
if ((g_vm->_obj[oFINGERPADP16]._flag & OBJFLAG_ROOMOUT) && (_choice[50]._flag & OBJFLAG_DONE)) {
|
||||
if ((g_vm->_obj[oFINGERPADP16]._flag & OBJFLAG_ROOMOUT) && (g_vm->_choice[50]._flag & OBJFLAG_DONE)) {
|
||||
CharacterSay(147);
|
||||
return ;
|
||||
}
|
||||
|
||||
if ((_choice[49]._flag & DLGCHOICE_HIDE) && (_choice[50]._flag & DLGCHOICE_HIDE)) {
|
||||
if ((g_vm->_choice[49]._flag & DLGCHOICE_HIDE) && (g_vm->_choice[50]._flag & DLGCHOICE_HIDE)) {
|
||||
if (g_vm->_obj[oMAPPA16]._flag & OBJFLAG_EXTRA) {
|
||||
_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
_choice[48]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[48]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_obj[oTICKETOFFICE16]._flag |= OBJFLAG_EXTRA;
|
||||
} else {
|
||||
if (_choice[46]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[46]._flag & OBJFLAG_DONE) {
|
||||
CharacterSay(g_vm->_obj[oTICKETOFFICE16]._action);
|
||||
return ;
|
||||
}
|
||||
|
||||
_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
_choice[47]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[47]._flag &= ~DLGCHOICE_HIDE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1392,7 +1392,7 @@ void doMouseTalk(uint16 TheObj) {
|
||||
case ocNEGOZIANTE1A: {
|
||||
int c;
|
||||
for (c = _dialog[dNEGOZIANTE1A]._firstChoice; c < (_dialog[dNEGOZIANTE1A]._firstChoice + _dialog[dNEGOZIANTE1A]._choiceNumb); c++)
|
||||
if (!(_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
PlayDialog(g_vm->_obj[TheObj]._goRoom);
|
||||
return;
|
||||
}
|
||||
@ -1447,7 +1447,7 @@ void doScrScrUseWith() {
|
||||
case oRAMPINO21:
|
||||
if (g_vm->_useWith[WITH] == oTUBO21) {
|
||||
PlayDialog(dF211);
|
||||
SetRoom(r21, true);
|
||||
g_vm->setRoom(r21, true);
|
||||
g_vm->_animMgr->_animTab[aBKG21]._flag &= ~SMKANIM_OFF1;
|
||||
g_vm->_obj[oRAMPINO21]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oTUBO21]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
@ -1555,59 +1555,59 @@ void doInvOperate() {
|
||||
|
||||
switch (g_vm->_curInventory) {
|
||||
case iSAM:
|
||||
if ((_choice[166]._flag & OBJFLAG_DONE) && ((g_vm->_curRoom == r17) || (g_vm->_curRoom == r1B) || (g_vm->_curRoom == r1C) || (g_vm->_curRoom == r1D))) {
|
||||
if ((g_vm->_choice[166]._flag & OBJFLAG_DONE) && ((g_vm->_curRoom == r17) || (g_vm->_curRoom == r1B) || (g_vm->_curRoom == r1C) || (g_vm->_curRoom == r1D))) {
|
||||
if (g_vm->_obj[oNUMERO17]._mode & OBJMODE_OBJSTATUS) {
|
||||
if (!(_choice[196]._flag & OBJFLAG_DONE)) {
|
||||
if (!(g_vm->_choice[196]._flag & OBJFLAG_DONE)) {
|
||||
if (g_vm->_curRoom == r17) {
|
||||
if (_choice[198]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[198]._flag & OBJFLAG_DONE) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1787;
|
||||
printsent = true;
|
||||
} else {
|
||||
_choice[197]._flag |= DLGCHOICE_HIDE;
|
||||
_choice[198]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[197]._flag |= DLGCHOICE_HIDE;
|
||||
g_vm->_choice[198]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dSAM17);
|
||||
printsent = false;
|
||||
g_vm->_obj[oFAX17]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
} else {
|
||||
if (_choice[199]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[199]._flag & OBJFLAG_DONE) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1787;
|
||||
printsent = true;
|
||||
} else {
|
||||
_choice[197]._flag |= DLGCHOICE_HIDE;
|
||||
_choice[199]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[197]._flag |= DLGCHOICE_HIDE;
|
||||
g_vm->_choice[199]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dSAM17);
|
||||
printsent = false;
|
||||
g_vm->_obj[oFAX17]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ((_choice[198]._flag & OBJFLAG_DONE) || (_choice[199]._flag & OBJFLAG_DONE)) {
|
||||
if ((g_vm->_choice[198]._flag & OBJFLAG_DONE) || (g_vm->_choice[199]._flag & OBJFLAG_DONE)) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1787;
|
||||
printsent = true;
|
||||
} else if (g_vm->_curRoom == r17) {
|
||||
if (_choice[201]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[201]._flag & OBJFLAG_DONE) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1787;
|
||||
printsent = true;
|
||||
} else {
|
||||
_choice[201]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[201]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dSAM17);
|
||||
printsent = false;
|
||||
g_vm->_obj[oFAX17]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
} else {
|
||||
if (_choice[200]._flag & OBJFLAG_DONE) {
|
||||
if (g_vm->_choice[200]._flag & OBJFLAG_DONE) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1787;
|
||||
printsent = true;
|
||||
} else {
|
||||
_choice[200]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[200]._flag &= ~DLGCHOICE_HIDE;
|
||||
PlayDialog(dSAM17);
|
||||
printsent = false;
|
||||
g_vm->_obj[oFAX17]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (_choice[197]._flag & OBJFLAG_DONE) {
|
||||
} else if (g_vm->_choice[197]._flag & OBJFLAG_DONE) {
|
||||
g_vm->_inventoryObj[iSAM]._action = 1786;
|
||||
printsent = true;
|
||||
} else {
|
||||
@ -2375,7 +2375,7 @@ void ExecuteATFDO(ATFHandle *h, int doit, int obj) {
|
||||
doEvent(MC_MOUSE, ME_MLEFT, MP_DEFAULT, 336, 263 + TOP, true, 0);
|
||||
break;
|
||||
case fVALVOLAON34:
|
||||
if (!(_choice[616]._flag & OBJFLAG_DONE) && // if the fmv is not done
|
||||
if (!(g_vm->_choice[616]._flag & OBJFLAG_DONE) && // if the fmv is not done
|
||||
(g_vm->_obj[oTUBOA34]._mode & OBJMODE_OBJSTATUS) && // if there's a cut pipe
|
||||
!(g_vm->_obj[oTUBOFT34]._mode & OBJMODE_OBJSTATUS)) // if there's not tube outside
|
||||
g_vm->_animMgr->smkVolumePan(0, 2, 1);
|
||||
@ -2530,10 +2530,10 @@ void ProcessATF(ATFHandle *h, int type, int atf) {
|
||||
RegenRoom();
|
||||
break;
|
||||
case ATFSETROOMT:
|
||||
SetRoom(h->curanim->_atFrame[atf]._index, true);
|
||||
g_vm->setRoom(h->curanim->_atFrame[atf]._index, true);
|
||||
break;
|
||||
case ATFSETROOMF:
|
||||
SetRoom(h->curanim->_atFrame[atf]._index, false);
|
||||
g_vm->setRoom(h->curanim->_atFrame[atf]._index, false);
|
||||
break;
|
||||
case ATFREADBOX:
|
||||
if (h->curanim->_atFrame[atf]._index == 1) {
|
||||
|
@ -84,7 +84,6 @@ extern uint32 SomeOneSpeakTime;
|
||||
/* DIALOGHI */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
extern Dialog _dialog[];
|
||||
extern DialogChoice _choice [];
|
||||
extern DialogSubTitle _subTitles[];
|
||||
|
||||
extern uint16 _curDialog, _curChoice, _curSubTitle;
|
||||
|
@ -83,7 +83,6 @@ uint32 SomeOneSpeakTime;
|
||||
/* DIALOGHI */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
Dialog _dialog[MAXDIALOG];
|
||||
DialogChoice _choice [MAXCHOICE];
|
||||
DialogSubTitle _subTitles[MAXSUBTITLES];
|
||||
|
||||
uint16 _curDialog, _curChoice, _curSubTitle;
|
||||
|
@ -645,7 +645,7 @@ insave:
|
||||
fwrite(&GSample[a]._flag, sizeof(uint8), 1, fh);
|
||||
}
|
||||
for (int a = 0; a < MAXCHOICE; a++)
|
||||
fwrite(&_choice[a], sizeof(DialogChoice), 1, fh);
|
||||
fwrite(&g_vm->_choice[a], sizeof(DialogChoice), 1, fh);
|
||||
|
||||
for (int a = 0; a < MAXDIALOG; a++)
|
||||
fwrite(&_dialog[a], sizeof(Dialog), 1, fh);
|
||||
@ -901,7 +901,7 @@ bool DataLoad() {
|
||||
}
|
||||
|
||||
for (int a = 0; a < MAXCHOICE; a++)
|
||||
fread(&_choice[a], sizeof(DialogChoice), 1, fh);
|
||||
fread(&g_vm->_choice[a], sizeof(DialogChoice), 1, fh);
|
||||
|
||||
for (int a = 0; a < MAXDIALOG; a++)
|
||||
fread(&_dialog[a], sizeof(Dialog), 1, fh);
|
||||
|
@ -187,7 +187,6 @@ void SomeOneContinueTalk();
|
||||
void SomeOneMute();
|
||||
void doString();
|
||||
void DoSys(uint16 curObj);
|
||||
void SetRoom(uint16 r, bool b);
|
||||
char GetKey();
|
||||
char waitKey();
|
||||
void FreeKey();
|
||||
|
@ -191,7 +191,7 @@ struct StackText {
|
||||
char sign[256];
|
||||
bool Clear;
|
||||
|
||||
void DoText();
|
||||
void doText();
|
||||
};
|
||||
|
||||
struct SSound {
|
||||
|
@ -141,7 +141,7 @@ Management of cards for Regen
|
||||
/* MACROS */
|
||||
#define BETWEEN(a,x,b) ((x>=a) && (x<=b))
|
||||
#define GAMEAREA(my) BETWEEN(VideoCent.y0,my,VideoCent.y1)
|
||||
#define INVAREA(my) (my>=VideoBott.y0)
|
||||
#define isInventoryArea(my) (my>=VideoBott.y0)
|
||||
#define ICONAREA(mx,my) ((my>=VideoBott.y0) && (my</*=VideoBott.y0+ICONDY*/MAXY) && (mx>=ICONMARGSX) && (mx<=SCREENLEN-ICONMARGDX))
|
||||
#define REEVENT doEvent(g_vm->_curMessage->_class, g_vm->_curMessage->_event, g_vm->_curMessage->_priority, g_vm->_curMessage->_u16Param1, g_vm->_curMessage->_u16Param2, g_vm->_curMessage->_u8Param, g_vm->_curMessage->_u32Param)
|
||||
|
||||
|
@ -178,159 +178,4 @@ void DoSys(uint16 curObj) {
|
||||
ConfMan.flushToDisk();
|
||||
}
|
||||
|
||||
/* -----------------09/02/98 15.44-------------------
|
||||
* SetRoom
|
||||
* --------------------------------------------------*/
|
||||
void SetRoom(unsigned short r, bool b) {
|
||||
switch (r) {
|
||||
case r21:
|
||||
if (!b) {
|
||||
read3D("21.3d");
|
||||
g_vm->_room[r21]._flag &= ~OBJFLAG_EXTRA;
|
||||
setPosition(14);
|
||||
g_vm->_obj[oCATENAT21]._position = 5;
|
||||
g_vm->_obj[oUSCITA21]._position = 11;
|
||||
|
||||
// if we can go beyond
|
||||
if (((g_vm->iconPos(iSBARRA21) != MAXICON) && ((_choice[436]._flag & OBJFLAG_DONE) || (_choice[466]._flag & OBJFLAG_DONE)))
|
||||
|| ((_choice[451]._flag & OBJFLAG_DONE) || (_choice[481]._flag & OBJFLAG_DONE))) {
|
||||
g_vm->_obj[od21TO23]._flag |= OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO23]._flag &= ~OBJFLAG_EXAMINE;
|
||||
} else {
|
||||
g_vm->_obj[od21TO23]._flag &= ~OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO23]._flag |= OBJFLAG_EXAMINE;
|
||||
}
|
||||
g_vm->_obj[od21TO23]._anim = 0;
|
||||
g_vm->_obj[oUSCITA21]._mode |= OBJMODE_OBJSTATUS;
|
||||
|
||||
g_vm->_obj[od21TO22]._flag |= OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO22]._flag &= ~OBJFLAG_EXAMINE;
|
||||
g_vm->_obj[od21TO22]._anim = aWALKOUT;
|
||||
g_vm->_obj[oPORTAA21]._anim = a212;
|
||||
g_vm->_obj[oDOORC21]._anim = a219;
|
||||
|
||||
g_vm->_obj[oCUNICOLO21]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCARTELLONE21]._mode |= OBJMODE_OBJSTATUS;
|
||||
} else {
|
||||
read3D("212.3d");
|
||||
g_vm->_room[r21]._flag |= OBJFLAG_EXTRA;
|
||||
setPosition(15);
|
||||
g_vm->_obj[oCATENAT21]._position = 6;
|
||||
g_vm->_obj[oUSCITA21]._position = 21;
|
||||
|
||||
g_vm->_obj[od21TO23]._flag |= OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO23]._flag &= ~OBJFLAG_EXAMINE;
|
||||
g_vm->_obj[od21TO23]._anim = aWALKOUT;
|
||||
g_vm->_obj[oUSCITA21]._mode |= OBJMODE_OBJSTATUS;
|
||||
|
||||
// If we can go beyond
|
||||
if (((g_vm->iconPos(iSBARRA21) != MAXICON) && ((_choice[436]._flag & OBJFLAG_DONE) || (_choice[466]._flag & OBJFLAG_DONE)))
|
||||
|| ((_choice[451]._flag & OBJFLAG_DONE) || (_choice[481]._flag & OBJFLAG_DONE))) {
|
||||
g_vm->_obj[od21TO22]._flag |= OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO22]._flag &= ~OBJFLAG_EXAMINE;
|
||||
} else {
|
||||
g_vm->_obj[od21TO22]._flag &= ~OBJFLAG_ROOMOUT;
|
||||
g_vm->_obj[od21TO22]._flag |= OBJFLAG_EXAMINE;
|
||||
}
|
||||
g_vm->_obj[od21TO22]._anim = 0;
|
||||
g_vm->_obj[od21TO22]._examine = 335;
|
||||
g_vm->_obj[od21TO22]._action = 335;
|
||||
g_vm->_obj[oPORTAA21]._anim = 0;
|
||||
g_vm->_obj[oDOORC21]._anim = 0;
|
||||
|
||||
g_vm->_obj[oCUNICOLO21]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCARTELLONE21]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
}
|
||||
break;
|
||||
case r24:
|
||||
if (!b) {
|
||||
read3D("24.3d");
|
||||
g_vm->_room[r24]._flag &= ~OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oPASSAGE24]._position = 3;
|
||||
g_vm->_obj[oMACERIE24]._position = 3;
|
||||
g_vm->_obj[oDUMMY24]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oDUMMY24A]._mode |= OBJMODE_OBJSTATUS;
|
||||
} else {
|
||||
read3D("242.3d");
|
||||
g_vm->_room[r24]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[od24TO26]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oPASSAGE24]._position = 4;
|
||||
g_vm->_obj[oMACERIE24]._position = 4;
|
||||
g_vm->_obj[oDUMMY24A]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oDUMMY24]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
break;
|
||||
|
||||
case r2A:
|
||||
if (!b) {
|
||||
read3D("2A.3d");
|
||||
g_vm->_room[r2A]._flag &= ~OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oDUMMY2A2]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oDUMMY2A]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
} else {
|
||||
read3D("2A2.3d");
|
||||
g_vm->_room[r2A]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oDUMMY2A]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oDUMMY2A2]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
}
|
||||
break;
|
||||
case r2B:
|
||||
if (!b) {
|
||||
read3D("2B.3d");
|
||||
g_vm->_room[r2B]._flag &= ~OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oPORTA2B]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[od2BALLA28]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
} else {
|
||||
read3D("2B2.3d");
|
||||
g_vm->_room[r2B]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oPORTA2B]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[od2BALLA28]._mode |= OBJMODE_OBJSTATUS;
|
||||
}
|
||||
break;
|
||||
case r2E:
|
||||
if (!b) {
|
||||
g_vm->_obj[oCATWALKA2E]._nbox = BACKGROUND;
|
||||
g_vm->_obj[oCATWALKA2E]._position = 2;
|
||||
g_vm->_obj[oCATWALKA2E]._anim = a2E2PRIMAPALLONTANANDO;
|
||||
read3D("2E.3d");
|
||||
g_vm->_room[r2E]._flag &= ~OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oDUMMY2E]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oENTRANCE2E]._flag &= ~OBJFLAG_EXAMINE;
|
||||
g_vm->_obj[oPASSERELLAB2E]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCRATERE2E]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oARBUSTI2E]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCREPACCIO2E]._position = 6;
|
||||
} else {
|
||||
g_vm->_obj[oCATWALKA2E]._position = 3;
|
||||
g_vm->_obj[oCATWALKA2E]._anim = a2E3PRIMAPAVVICINANDO;
|
||||
read3D("2E2.3d");
|
||||
g_vm->_room[r2E]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oDUMMY2E]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oENTRANCE2E]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oENTRANCE2E]._flag |= OBJFLAG_EXAMINE;
|
||||
g_vm->_obj[oPASSERELLAB2E]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCRATERE2E]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oARBUSTI2E]._mode |= OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCREPACCIO2E]._position = 7;
|
||||
g_vm->_obj[oCATWALKA2E]._nbox = FOREGROUND;
|
||||
}
|
||||
break;
|
||||
case r2GV:
|
||||
if (!b) {
|
||||
g_vm->_obj[oVIADOTTO2GV]._position = 7;
|
||||
g_vm->_obj[oVIADOTTO2GV]._anim = a2G7ATTRAVERSAPONTICELLO;
|
||||
read3D("2GV.3d");
|
||||
g_vm->_room[r2GV]._flag &= ~OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oDUMMY2GV]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oRAGAZZOS2GV]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[oCOCCODRILLO2GV]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
RegenRoom();
|
||||
}
|
||||
|
||||
} // End of namespace Trecision
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "common/config-manager.h"
|
||||
#include "common/file.h"
|
||||
#include "common/fs.h"
|
||||
#include "logic.h"
|
||||
|
||||
namespace Common {
|
||||
class File;
|
||||
@ -120,8 +121,9 @@ TrecisionEngine::TrecisionEngine(OSystem *syst) : Engine(syst) {
|
||||
}
|
||||
|
||||
_video2 = nullptr;
|
||||
_graphicsMgr = nullptr;
|
||||
_animMgr = nullptr;
|
||||
_graphicsMgr = nullptr;
|
||||
_logicMgr = nullptr;
|
||||
|
||||
for (int i = 0; i < 50; ++i) {
|
||||
for (int j = 0; j < 4; ++j) {
|
||||
@ -160,6 +162,7 @@ TrecisionEngine::TrecisionEngine(OSystem *syst) : Engine(syst) {
|
||||
TrecisionEngine::~TrecisionEngine() {
|
||||
delete _animMgr;
|
||||
delete _graphicsMgr;
|
||||
delete _logicMgr;
|
||||
}
|
||||
|
||||
Common::Error TrecisionEngine::run() {
|
||||
@ -169,6 +172,7 @@ Common::Error TrecisionEngine::run() {
|
||||
if (!_graphicsMgr->initScreen())
|
||||
return Common::kUnsupportedColorMode;
|
||||
_animMgr = new AnimManager(this);
|
||||
_logicMgr = new LogicManager(this);
|
||||
|
||||
initMain();
|
||||
|
||||
@ -250,13 +254,13 @@ void TrecisionEngine::initMain() {
|
||||
_obj[c]._position = -1;
|
||||
|
||||
initNames();
|
||||
initScript();
|
||||
_logicMgr->initScript();
|
||||
openSys();
|
||||
|
||||
LoadAll();
|
||||
|
||||
initMessageSystem();
|
||||
initInventory();
|
||||
_logicMgr->initInventory();
|
||||
|
||||
_curRoom = rINTRO;
|
||||
|
||||
@ -279,38 +283,6 @@ void TrecisionEngine::initMessageSystem() {
|
||||
}
|
||||
}
|
||||
|
||||
void TrecisionEngine::initNames() {
|
||||
_sysText[1] = "NightLong was not properly installed!\nRun Autorun.exe from the CD-Rom.";
|
||||
_sysText[2] = "Not enough memory!\nYou need %d bytes more.\n";
|
||||
_sysText[3] = "Unknown error\n";
|
||||
_sysText[4] = "Please insert CD number %c and press return.";
|
||||
_sysText[5] = "Unknown error";
|
||||
_sysText[6] = "VESA Not Supported.\n";
|
||||
_sysText[7] = "Error reading file.";
|
||||
_sysText[8] = "Mouse not found error!\n";
|
||||
_sysText[9] = "SAVE POSITION";
|
||||
_sysText[10] = "EMPTY SLOT";
|
||||
_sysText[11] = "LOAD POSITION";
|
||||
_sysText[12] = "Error reading saved-game";
|
||||
_sysText[13] = "Are you sure that you want to quit (y/n)?";
|
||||
_sysText[14] = "Unknown error\n";
|
||||
_sysText[15] = "Sample handle not available\n";
|
||||
_sysText[16] = "Run NL to select an appropriate digital audio driver\n";
|
||||
_sysText[17] = "This demo is over.";
|
||||
_sysText[18] = "NightLong";
|
||||
_sysText[19] = "ERROR!";
|
||||
_sysText[20] = "Unsupported pixel format.";
|
||||
_sysText[21] = "DirectX Error";
|
||||
_sysText[22] = "NightLong Warning";
|
||||
_sysText[23] = "Use ";
|
||||
_sysText[24] = " with ";
|
||||
_sysText[25] = "Go to ";
|
||||
_sysText[26] = "Go to ... ";
|
||||
|
||||
_sentence[0] = " "; // Use it like a buffer !!!!
|
||||
_objName[0] = " ";
|
||||
}
|
||||
|
||||
/* --------------------------------------------------
|
||||
* LoadAll
|
||||
* --------------------------------------------------*/
|
||||
|
@ -31,16 +31,15 @@
|
||||
#include "trecision/nl/ll/llinc.h"
|
||||
|
||||
namespace Trecision {
|
||||
class GraphicsManager;
|
||||
class AnimManager;
|
||||
class GraphicsManager;
|
||||
class LogicManager;
|
||||
|
||||
class TrecisionEngine : public Engine {
|
||||
private:
|
||||
void initMain();
|
||||
void initMessageSystem();
|
||||
void initNames();
|
||||
void initInventory();
|
||||
void initScript();
|
||||
void LoadAll();
|
||||
|
||||
public:
|
||||
@ -72,6 +71,7 @@ public:
|
||||
|
||||
// Utils
|
||||
char *getNextSentence();
|
||||
void setRoom(uint16 r, bool b);
|
||||
|
||||
// Text
|
||||
void addText(uint16 x, uint16 y, const char *sign, uint16 tcol, uint16 scol);
|
||||
@ -180,10 +180,15 @@ public:
|
||||
// SlotMachine41
|
||||
uint16 _slotMachine41Counter;
|
||||
|
||||
//Dialogs
|
||||
DialogChoice _choice[MAXCHOICE];
|
||||
|
||||
bool _flagScreenRefreshed;
|
||||
|
||||
GraphicsManager *_graphicsMgr;
|
||||
AnimManager *_animMgr;
|
||||
GraphicsManager *_graphicsMgr;
|
||||
LogicManager *_logicMgr;
|
||||
|
||||
};
|
||||
|
||||
extern TrecisionEngine *g_vm;
|
||||
|
@ -21,12 +21,47 @@
|
||||
*/
|
||||
|
||||
#include "trecision/trecision.h"
|
||||
#include "trecision/nl/struct.h"
|
||||
#include "trecision/nl/extern.h"
|
||||
#include "trecision/nl/message.h"
|
||||
|
||||
#include "common/textconsole.h"
|
||||
#include "nl/extern.h"
|
||||
#include "nl/message.h"
|
||||
#include "logic.h"
|
||||
|
||||
namespace Trecision {
|
||||
|
||||
void TrecisionEngine::initNames() {
|
||||
_sysText[1] = "NightLong was not properly installed!\nRun Autorun.exe from the CD-Rom.";
|
||||
_sysText[2] = "Not enough memory!\nYou need %d bytes more.\n";
|
||||
_sysText[3] = "Unknown error\n";
|
||||
_sysText[4] = "Please insert CD number %c and press return.";
|
||||
_sysText[5] = "Unknown error";
|
||||
_sysText[6] = "VESA Not Supported.\n";
|
||||
_sysText[7] = "Error reading file.";
|
||||
_sysText[8] = "Mouse not found error!\n";
|
||||
_sysText[9] = "SAVE POSITION";
|
||||
_sysText[10] = "EMPTY SLOT";
|
||||
_sysText[11] = "LOAD POSITION";
|
||||
_sysText[12] = "Error reading saved-game";
|
||||
_sysText[13] = "Are you sure that you want to quit (y/n)?";
|
||||
_sysText[14] = "Unknown error\n";
|
||||
_sysText[15] = "Sample handle not available\n";
|
||||
_sysText[16] = "Run NL to select an appropriate digital audio driver\n";
|
||||
_sysText[17] = "This demo is over.";
|
||||
_sysText[18] = "NightLong";
|
||||
_sysText[19] = "ERROR!";
|
||||
_sysText[20] = "Unsupported pixel format.";
|
||||
_sysText[21] = "DirectX Error";
|
||||
_sysText[22] = "NightLong Warning";
|
||||
_sysText[23] = "Use ";
|
||||
_sysText[24] = " with ";
|
||||
_sysText[25] = "Go to ";
|
||||
_sysText[26] = "Go to ... ";
|
||||
|
||||
_sentence[0] = " "; // Use it like a buffer !!!!
|
||||
_objName[0] = " ";
|
||||
}
|
||||
|
||||
/* --------------------------------------------------
|
||||
* getNextSentence
|
||||
* --------------------------------------------------*/
|
||||
@ -41,7 +76,7 @@ char *TrecisionEngine::getNextSentence() {
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* TEXT */
|
||||
/* addText */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void TrecisionEngine::addText(uint16 x, uint16 y, const char *sign, uint16 tcol, uint16 scol) {
|
||||
_textStackTop++;
|
||||
@ -58,7 +93,7 @@ void TrecisionEngine::addText(uint16 x, uint16 y, const char *sign, uint16 tcol,
|
||||
strcpy(_textStack[_textStackTop].sign, sign);
|
||||
}
|
||||
|
||||
/* -----------------08/07/97 22.13-------------------
|
||||
/* ------------------------------------------------
|
||||
clearText
|
||||
--------------------------------------------------*/
|
||||
void TrecisionEngine::clearText() {
|
||||
@ -74,7 +109,7 @@ void TrecisionEngine::clearText() {
|
||||
}
|
||||
}
|
||||
|
||||
/* -----------------08/07/97 22.14-------------------
|
||||
/* ------------------------------------------------
|
||||
drawString
|
||||
--------------------------------------------------*/
|
||||
void TrecisionEngine::drawString() {
|
||||
@ -82,7 +117,7 @@ void TrecisionEngine::drawString() {
|
||||
if (_textStack[i].Clear)
|
||||
doClearText();
|
||||
else
|
||||
_textStack[i].DoText();
|
||||
_textStack[i].doText();
|
||||
}
|
||||
}
|
||||
|
||||
@ -91,7 +126,7 @@ void TrecisionEngine::drawString() {
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void TrecisionEngine::redrawString() {
|
||||
if (!FlagDialogActive && !FlagDialogMenuActive && !FlagSomeOneSpeak && !_flagscriptactive && _flagMouseEnabled) {
|
||||
if (INVAREA(my))
|
||||
if (isInventoryArea(my))
|
||||
doEvent(MC_INVENTORY, ME_SHOWICONNAME, MP_DEFAULT, 0, 0, 0, 0);
|
||||
else {
|
||||
CheckMask(mx, my);
|
||||
@ -100,10 +135,10 @@ void TrecisionEngine::redrawString() {
|
||||
}
|
||||
}
|
||||
|
||||
/* -----------------08/07/97 22.15-------------------
|
||||
DoText
|
||||
/* ------------------------------------------------
|
||||
doText
|
||||
--------------------------------------------------*/
|
||||
void StackText::DoText() {
|
||||
void StackText::doText() {
|
||||
curString.x = x;
|
||||
curString.y = y;
|
||||
curString.dx = TextLength(sign, 0);
|
||||
@ -135,8 +170,8 @@ void StackText::DoText() {
|
||||
TextStatus |= TEXT_DRAW;
|
||||
}
|
||||
|
||||
/* -----------------08/07/97 22.15-------------------
|
||||
DoClearString
|
||||
/* ------------------------------------------------
|
||||
doClearText
|
||||
--------------------------------------------------*/
|
||||
void TrecisionEngine::doClearText() {
|
||||
if ((oldString.sign == nullptr) && (curString.sign)) {
|
||||
@ -147,4 +182,13 @@ void TrecisionEngine::doClearText() {
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------
|
||||
* setRoom
|
||||
* --------------------------------------------------*/
|
||||
void TrecisionEngine::setRoom(uint16 r, bool b) {
|
||||
_logicMgr->setRoom(r, b);
|
||||
RegenRoom();
|
||||
}
|
||||
|
||||
|
||||
} // End of namespace Trecision
|
||||
|
@ -249,10 +249,10 @@ void AnimManager::startSmkAnim(uint16 num) {
|
||||
smkVolumePan(0, 1, 0);
|
||||
else if ((num == aBKG2E) && (_animTab[num]._flag & SMKANIM_OFF2))
|
||||
smkVolumePan(0, 2, 0);
|
||||
else if ((num == aBKG2G) && (_choice[556]._flag & OBJFLAG_DONE))
|
||||
else if ((num == aBKG2G) && (g_vm->_choice[556]._flag & OBJFLAG_DONE))
|
||||
smkVolumePan(0, 2, 0);
|
||||
else if ((num == aBKG34) && // If it's BKG 34 and
|
||||
((_choice[616]._flag & OBJFLAG_DONE) || // if the FMV is already done or
|
||||
((g_vm->_choice[616]._flag & OBJFLAG_DONE) || // if the FMV is already done or
|
||||
(_vm->_obj[oTUBOT34]._mode & OBJMODE_OBJSTATUS) || // if the whole tube is available or
|
||||
(_vm->_obj[oTUBOFT34]._mode & OBJMODE_OBJSTATUS) || // if the outside of the tube is available or
|
||||
(_vm->_obj[oVALVOLAC34]._mode & OBJMODE_OBJSTATUS))) // if the valve is closed
|
||||
@ -384,7 +384,7 @@ void AnimManager::stopFullMotion() {
|
||||
|
||||
if (!((_curDialog == dNEGOZIANTE1A) && (_curChoice == 185))) {
|
||||
if ((_curDialog == dF582) || (_curDialog == dFLOG) || (_curDialog == dINTRO) || (_curDialog == dF362) || (_curDialog == dC381) || (_curDialog == dF381) ||
|
||||
(_curDialog == dF491) || ((_curDialog == dC581) && !(_choice[886]._flag & OBJFLAG_DONE) && (_choice[258]._flag & OBJFLAG_DONE)) ||
|
||||
(_curDialog == dF491) || ((_curDialog == dC581) && !(g_vm->_choice[886]._flag & OBJFLAG_DONE) && (g_vm->_choice[258]._flag & OBJFLAG_DONE)) ||
|
||||
((_curDialog == dC5A1) && (_vm->_room[r5A]._flag & OBJFLAG_EXTRA)))
|
||||
FlagShowCharacter = false;
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user