mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 07:14:59 +00:00
TRECISION: move more logic to its class, rewrite doMouseTalk so its similar to the other doMouse functions
This commit is contained in:
parent
07b7196826
commit
e7219a9c45
@ -59,6 +59,8 @@ public:
|
||||
void roomOut(uint16 curObj, uint16 *action, uint16 *pos);
|
||||
bool mouseExamine(uint16 curObj);
|
||||
bool mouseOperate(uint16 curObj);
|
||||
bool mouseTake(uint16 curObj);
|
||||
bool mouseTalk(uint16 curObj);
|
||||
};
|
||||
; // end of class
|
||||
|
||||
|
@ -2975,4 +2975,104 @@ bool LogicManager::mouseOperate(uint16 curObj) {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool LogicManager::mouseTake(uint16 curObj) {
|
||||
bool retVal;
|
||||
|
||||
switch (curObj) {
|
||||
case oTINFOIL11:
|
||||
retVal = false;
|
||||
break;
|
||||
case oNASTRO15:
|
||||
g_vm->_obj[oNASTRO15]._flag |= OBJFLAG_EXTRA;
|
||||
retVal = false;
|
||||
break;
|
||||
case oMONETA13:
|
||||
if (!(g_vm->_obj[oLATTINA13]._mode & OBJMODE_OBJSTATUS))
|
||||
g_vm->_obj[curObj]._anim = a133CPRENDEMONETA;
|
||||
retVal = true;
|
||||
break;
|
||||
case oFOGLIETTO14:
|
||||
g_vm->_obj[oFOGLIETTO14]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oMAPPA16]._examine = 152;
|
||||
retVal = false;
|
||||
break;
|
||||
case oPOSTERC22:
|
||||
g_vm->_obj[oARMADIETTOCC22]._anim = a221;
|
||||
g_vm->_obj[oARMADIETTOCA22]._anim = a222;
|
||||
retVal = true;
|
||||
break;
|
||||
case oKEY22:
|
||||
g_vm->_obj[oARMADIETTORA22]._examine = 2013;
|
||||
retVal = true;
|
||||
break;
|
||||
default:
|
||||
retVal = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool LogicManager::mouseTalk(uint16 curObj) {
|
||||
bool retVal = true;
|
||||
|
||||
switch (curObj) {
|
||||
case oTICKETOFFICE16:
|
||||
if ((g_vm->_obj[oFINGERPADP16]._flag & OBJFLAG_ROOMOUT) && (g_vm->_choice[50]._flag & OBJFLAG_DONE)) {
|
||||
CharacterSay(147);
|
||||
retVal = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((g_vm->_choice[49]._flag & DLGCHOICE_HIDE) && (g_vm->_choice[50]._flag & DLGCHOICE_HIDE)) {
|
||||
if (g_vm->_obj[oMAPPA16]._flag & OBJFLAG_EXTRA) {
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[48]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_obj[oTICKETOFFICE16]._flag |= OBJFLAG_EXTRA;
|
||||
}
|
||||
else {
|
||||
if (g_vm->_choice[46]._flag & OBJFLAG_DONE) {
|
||||
CharacterSay(g_vm->_obj[oTICKETOFFICE16]._action);
|
||||
retVal = false;
|
||||
break;
|
||||
}
|
||||
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[47]._flag &= ~DLGCHOICE_HIDE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ocGUARD18:
|
||||
g_vm->_obj[ocGUARD18]._flag &= ~OBJFLAG_PERSON;
|
||||
g_vm->_obj[ocGUARD18]._action = 227;
|
||||
g_vm->_obj[oPORTAC18]._action = 220;
|
||||
break;
|
||||
|
||||
case ocNEGOZIANTE1A:
|
||||
for (int c = _dialog[dNEGOZIANTE1A]._firstChoice; c < (_dialog[dNEGOZIANTE1A]._firstChoice + _dialog[dNEGOZIANTE1A]._choiceNumb); c++) {
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
PlayDialog(g_vm->_obj[curObj]._goRoom);
|
||||
retVal = false;
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_vm->_obj[ocNEGOZIANTE1A]._action) {
|
||||
CharacterSay(g_vm->_obj[ocNEGOZIANTE1A]._action);
|
||||
retVal = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case ocEVA19:
|
||||
g_vm->_inventoryObj[iSAM]._action = 1415;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
} // End of namespace Trecision
|
||||
|
@ -34,7 +34,7 @@
|
||||
namespace Trecision {
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* ROOMIN */
|
||||
/* doRoomIn */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doRoomIn(uint16 curObj) {
|
||||
g_vm->_flagMouseEnabled = false;
|
||||
@ -48,7 +48,7 @@ void doRoomIn(uint16 curObj) {
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* ROOMOUT */
|
||||
/* doRoomOut */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doRoomOut(uint16 curObj) {
|
||||
g_vm->_flagMouseEnabled = false;
|
||||
@ -63,92 +63,64 @@ void doRoomOut(uint16 curObj) {
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* EXAMINE */
|
||||
/* doMouseExamine */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doMouseExamine(uint16 curObj) {
|
||||
if (!curObj)
|
||||
warning("doMouseExamine");
|
||||
warning("doMouseExamine - curObj not set");
|
||||
|
||||
bool printSentence = g_vm->_logicMgr->mouseExamine(curObj);
|
||||
|
||||
if ((printSentence) && (g_vm->_obj[curObj]._examine))
|
||||
if (printSentence && (g_vm->_obj[curObj]._examine))
|
||||
CharacterSay(g_vm->_obj[curObj]._examine);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* OPERATE */
|
||||
/* doMouseOperate */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doMouseOperate(uint16 TheObj) {
|
||||
if (!TheObj)
|
||||
warning("doMouseOperate");
|
||||
void doMouseOperate(uint16 curObj) {
|
||||
if (!curObj)
|
||||
warning("doMouseOperate - curObj not set");
|
||||
|
||||
bool printSentence = g_vm->_logicMgr->mouseOperate(TheObj);
|
||||
bool printSentence = g_vm->_logicMgr->mouseOperate(curObj);
|
||||
|
||||
if ((printSentence) && (g_vm->_obj[TheObj]._action))
|
||||
CharacterSay(g_vm->_obj[TheObj]._action);
|
||||
if (printSentence && (g_vm->_obj[curObj]._action))
|
||||
CharacterSay(g_vm->_obj[curObj]._action);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* TAKE */
|
||||
/* doMouseTake */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doMouseTake(uint16 TheObj) {
|
||||
bool del = true;
|
||||
void doMouseTake(uint16 curObj) {
|
||||
if (!curObj)
|
||||
warning("doMouseTake - curObj not set");
|
||||
|
||||
if (!TheObj)
|
||||
warning("doMouseTake");
|
||||
// _flagMouseEnabled = false;
|
||||
|
||||
// _flagMouseEnabled = false;
|
||||
switch (TheObj) {
|
||||
case oTINFOIL11:
|
||||
del = false;
|
||||
break;
|
||||
case oNASTRO15:
|
||||
g_vm->_obj[oNASTRO15]._flag |= OBJFLAG_EXTRA;
|
||||
del = false;
|
||||
break;
|
||||
case oMONETA13:
|
||||
if (!(g_vm->_obj[oLATTINA13]._mode & OBJMODE_OBJSTATUS))
|
||||
g_vm->_obj[TheObj]._anim = a133CPRENDEMONETA;
|
||||
break;
|
||||
case oFOGLIETTO14:
|
||||
g_vm->_obj[oFOGLIETTO14]._flag |= OBJFLAG_EXTRA;
|
||||
g_vm->_obj[oMAPPA16]._examine = 152;
|
||||
del = false;
|
||||
break;
|
||||
case oPOSTERC22:
|
||||
g_vm->_obj[oARMADIETTOCC22]._anim = a221;
|
||||
g_vm->_obj[oARMADIETTOCA22]._anim = a222;
|
||||
break;
|
||||
case oKEY22:
|
||||
g_vm->_obj[oARMADIETTORA22]._examine = 2013;
|
||||
del = true;
|
||||
break;
|
||||
default:
|
||||
del = true;
|
||||
break;
|
||||
}
|
||||
uint16 TheAction = g_vm->_obj[TheObj]._anim;
|
||||
bool del = g_vm->_logicMgr->mouseTake(curObj);
|
||||
|
||||
uint16 curAction = g_vm->_obj[curObj]._anim;
|
||||
|
||||
if (TheAction)
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, TheAction, 0, 0, TheObj);
|
||||
if (curAction)
|
||||
doEvent(MC_CHARACTER, ME_CHARACTERACTION, MP_DEFAULT, curAction, 0, 0, curObj);
|
||||
|
||||
// spegne oggetto che viene preso
|
||||
// Remove object being taken
|
||||
if (del) {
|
||||
if (TheAction) {
|
||||
if (curAction) {
|
||||
for (uint16 j = 0; j < MAXATFRAME; j++) {
|
||||
if ((g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._type == ATFCLR) && (g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._index == TheObj))
|
||||
if ((g_vm->_animMgr->_animTab[curAction]._atFrame[j]._type == ATFCLR) && (g_vm->_animMgr->_animTab[curAction]._atFrame[j]._index == curObj))
|
||||
break;
|
||||
|
||||
if (g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._type == 0) {
|
||||
g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._child = 0;
|
||||
g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._numFrame = 1;
|
||||
g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._type = ATFCLR;
|
||||
g_vm->_animMgr->_animTab[TheAction]._atFrame[j]._index = TheObj;
|
||||
if (g_vm->_animMgr->_animTab[curAction]._atFrame[j]._type == 0) {
|
||||
g_vm->_animMgr->_animTab[curAction]._atFrame[j]._child = 0;
|
||||
g_vm->_animMgr->_animTab[curAction]._atFrame[j]._numFrame = 1;
|
||||
g_vm->_animMgr->_animTab[curAction]._atFrame[j]._type = ATFCLR;
|
||||
g_vm->_animMgr->_animTab[curAction]._atFrame[j]._index = curObj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
g_vm->_obj[TheObj]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
g_vm->_obj[curObj]._mode &= ~OBJMODE_OBJSTATUS;
|
||||
RegenRoom();
|
||||
}
|
||||
}
|
||||
@ -158,62 +130,14 @@ void doMouseTake(uint16 TheObj) {
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* TALK */
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void doMouseTalk(uint16 TheObj) {
|
||||
extern int16 TextStackTop;
|
||||
void doMouseTalk(uint16 curObj) {
|
||||
if (!curObj)
|
||||
warning("doMouseTalk - curObj not set");
|
||||
|
||||
if (!TheObj)
|
||||
warning("doMouseTalk");
|
||||
bool printSentence = g_vm->_logicMgr->mouseTalk(curObj);
|
||||
|
||||
switch (TheObj) {
|
||||
case oTICKETOFFICE16:
|
||||
if ((g_vm->_obj[oFINGERPADP16]._flag & OBJFLAG_ROOMOUT) && (g_vm->_choice[50]._flag & OBJFLAG_DONE)) {
|
||||
CharacterSay(147);
|
||||
return ;
|
||||
}
|
||||
|
||||
if ((g_vm->_choice[49]._flag & DLGCHOICE_HIDE) && (g_vm->_choice[50]._flag & DLGCHOICE_HIDE)) {
|
||||
if (g_vm->_obj[oMAPPA16]._flag & OBJFLAG_EXTRA) {
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[48]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_obj[oTICKETOFFICE16]._flag |= OBJFLAG_EXTRA;
|
||||
} else {
|
||||
if (g_vm->_choice[46]._flag & OBJFLAG_DONE) {
|
||||
CharacterSay(g_vm->_obj[oTICKETOFFICE16]._action);
|
||||
return ;
|
||||
}
|
||||
|
||||
g_vm->_choice[46]._flag &= ~DLGCHOICE_HIDE;
|
||||
g_vm->_choice[47]._flag &= ~DLGCHOICE_HIDE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ocGUARD18:
|
||||
g_vm->_obj[ocGUARD18]._flag &= ~OBJFLAG_PERSON;
|
||||
g_vm->_obj[ocGUARD18]._action = 227;
|
||||
g_vm->_obj[oPORTAC18]._action = 220;
|
||||
break;
|
||||
|
||||
case ocNEGOZIANTE1A: {
|
||||
int c;
|
||||
for (c = _dialog[dNEGOZIANTE1A]._firstChoice; c < (_dialog[dNEGOZIANTE1A]._firstChoice + _dialog[dNEGOZIANTE1A]._choiceNumb); c++)
|
||||
if (!(g_vm->_choice[c]._flag & DLGCHOICE_HIDE)) {
|
||||
PlayDialog(g_vm->_obj[TheObj]._goRoom);
|
||||
return;
|
||||
}
|
||||
if (g_vm->_obj[ocNEGOZIANTE1A]._action) {
|
||||
CharacterSay(g_vm->_obj[ocNEGOZIANTE1A]._action);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ocEVA19:
|
||||
g_vm->_inventoryObj[iSAM]._action = 1415;
|
||||
break;
|
||||
}
|
||||
|
||||
PlayDialog(g_vm->_obj[TheObj]._goRoom);
|
||||
if (printSentence)
|
||||
PlayDialog(g_vm->_obj[curObj]._goRoom);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
@ -141,11 +141,11 @@ void DialogHandler(int numframe);
|
||||
void PlayScelta(uint16 i);
|
||||
void doDialog();
|
||||
void doRoomIn(uint16 curObj);
|
||||
void doRoomOut(uint16 TheObj);
|
||||
void doMouseExamine(uint16 TheObj);
|
||||
void doMouseOperate(uint16 TheObj);
|
||||
void doMouseTake(uint16 TheObj);
|
||||
void doMouseTalk(uint16 TheObj);
|
||||
void doRoomOut(uint16 curObj);
|
||||
void doMouseExamine(uint16 curObj);
|
||||
void doMouseOperate(uint16 curObj);
|
||||
void doMouseTake(uint16 curObj);
|
||||
void doMouseTalk(uint16 curObj);
|
||||
void doUseWith();
|
||||
void doScrScrUseWith();
|
||||
void doInvExamine();
|
||||
|
Loading…
x
Reference in New Issue
Block a user