diff options
-rw-r--r-- | engines/titanic/npcs/bellbot.cpp | 8 | ||||
-rw-r--r-- | engines/titanic/npcs/deskbot.cpp | 12 | ||||
-rw-r--r-- | engines/titanic/npcs/doorbot.cpp | 24 | ||||
-rw-r--r-- | engines/titanic/npcs/parrot.cpp | 64 | ||||
-rw-r--r-- | engines/titanic/npcs/true_talk_npc.h | 8 |
5 files changed, 62 insertions, 54 deletions
diff --git a/engines/titanic/npcs/bellbot.cpp b/engines/titanic/npcs/bellbot.cpp index 7fc8bfa9fb..ff9f865773 100644 --- a/engines/titanic/npcs/bellbot.cpp +++ b/engines/titanic/npcs/bellbot.cpp @@ -91,13 +91,13 @@ bool CBellBot::OnSummonBotMsg(COnSummonBotMsg *msg) { playClip("Walk On", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); - _npcFlags |= NPCFLAG_10000; + _npcFlags |= NPCFLAG_MOVING; return true; } bool CBellBot::LeaveViewMsg(CLeaveViewMsg *msg) { - if (_npcFlags & NPCFLAG_10000) { + if (_npcFlags & NPCFLAG_MOVING) { performAction(1); _npcFlags &= ~NPCFLAG_START_IDLING; CDismissBotMsg dismissMsg; @@ -108,7 +108,7 @@ bool CBellBot::LeaveViewMsg(CLeaveViewMsg *msg) { } bool CBellBot::MovieEndMsg(CMovieEndMsg *msg) { - if (!(_npcFlags & NPCFLAG_10000)) { + if (!(_npcFlags & NPCFLAG_MOVING)) { CTrueTalkNPC::MovieEndMsg(msg); } else if (clipExistsByEnd("Walk On", msg->_endFrame)) { setPosition(Point(80, 10)); @@ -140,7 +140,7 @@ bool CBellBot::Use(CUse *msg) { } bool CBellBot::DismissBotMsg(CDismissBotMsg *msg) { - if (_npcFlags & NPCFLAG_10000) { + if (_npcFlags & NPCFLAG_MOVING) { playClip("Walk Off", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); if (_npcFlags & NPCFLAG_START_IDLING) { _npcFlags &= ~NPCFLAG_START_IDLING; diff --git a/engines/titanic/npcs/deskbot.cpp b/engines/titanic/npcs/deskbot.cpp index 20dc3af39b..e822ae9ee1 100644 --- a/engines/titanic/npcs/deskbot.cpp +++ b/engines/titanic/npcs/deskbot.cpp @@ -113,7 +113,7 @@ bool CDeskbot::ActMsg(CActMsg *msg) { bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) { bool flag = false; - if (_npcFlags & NPCFLAG_10000) { + if (_npcFlags & NPCFLAG_MOVING) { if (_classNum) { petSetArea(PET_ROOMS); decTransitions(); @@ -122,7 +122,7 @@ bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) { _classNum = NO_CLASS; } - _npcFlags &= ~NPCFLAG_10000; + _npcFlags &= ~NPCFLAG_MOVING; flag = true; } @@ -135,14 +135,14 @@ bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) { turnOn.execute("EmbBellbotTrigger"); unlockMouse(); changeView("EmbLobby.Node 4.N", ""); - } else if (_npcFlags & NPCFLAG_100000) { + } else if (_npcFlags & NPCFLAG_MOVE_LEFT) { CTurnOn turnOn; turnOn.execute("EmbDoorBotTrigger"); unlockMouse(); changeView("EmbLobby.Node 4.N", ""); } - _npcFlags &= ~(NPCFLAG_80000 | NPCFLAG_100000); + _npcFlags &= ~(NPCFLAG_80000 | NPCFLAG_MOVE_LEFT); flag = true; } @@ -176,7 +176,7 @@ bool CDeskbot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { lockMouse(); petSetArea(PET_CONVERSATION); playClip("ReprogramPETInHand", MOVIE_NOTIFY_OBJECT); - _npcFlags |= NPCFLAG_10000; + _npcFlags |= NPCFLAG_MOVING; _classNum = (PassengerClass)msg->_param1; switch (_classNum) { @@ -289,7 +289,7 @@ bool CDeskbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg) turnOff.execute(this); case 41686: - _npcFlags |= NPCFLAG_100000; + _npcFlags |= NPCFLAG_MOVE_LEFT; turnOff.execute(this); break; diff --git a/engines/titanic/npcs/doorbot.cpp b/engines/titanic/npcs/doorbot.cpp index ae59497ee8..50c8df2a6d 100644 --- a/engines/titanic/npcs/doorbot.cpp +++ b/engines/titanic/npcs/doorbot.cpp @@ -120,7 +120,7 @@ bool CDoorbot::MovieEndMsg(CMovieEndMsg *msg) { } CTrueTalkNPC::MovieEndMsg(msg); - } else if (_npcFlags & NPCFLAG_100000) { + } else if (_npcFlags & NPCFLAG_MOVE_LEFT) { if (clipExistsByEnd("Cloak Off", msg->_endFrame)) { _npcFlags = (_npcFlags & ~NPCFLAG_8) | NPCFLAG_START_IDLING; setTalking(this, false); @@ -134,7 +134,7 @@ bool CDoorbot::MovieEndMsg(CMovieEndMsg *msg) { } else { CTrueTalkNPC::MovieEndMsg(msg); } - } else if (_npcFlags & NPCFLAG_400000) { + } else if (_npcFlags & NPCFLAG_MOVE_END) { if (clipExistsByEnd("Whizz On Left", msg->_endFrame) || clipExistsByEnd("Whizz On Right", msg->_endFrame)) { setPosition(Point((600 - _bounds.width()) / 2 + 18, 42)); @@ -187,7 +187,7 @@ bool CDoorbot::OnSummonBotMsg(COnSummonBotMsg *msg) { playClip(getRandomNumber(1) ? "Whizz On Left" : "Whizz On Right", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); - _npcFlags |= NPCFLAG_400000; + _npcFlags |= NPCFLAG_MOVE_END; return true; } @@ -217,7 +217,7 @@ bool CDoorbot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { bool CDoorbot::DoorbotNeededInHomeMsg(CDoorbotNeededInHomeMsg *msg) { moveToView(); setPosition(Point(90, 42)); - _npcFlags = NPCFLAG_100000; + _npcFlags = NPCFLAG_MOVE_LEFT; stopMovie(); playClip("Cloak Off", MOVIE_NOTIFY_OBJECT); @@ -232,7 +232,7 @@ bool CDoorbot::DoorbotNeededInElevatorMsg(CDoorbotNeededInElevatorMsg *msg) { if (_npcFlags & NPCFLAG_DOORBOT_INTRO) { _introMovieNum = 7; - _npcFlags |= NPCFLAG_200000; + _npcFlags |= NPCFLAG_MOVE_RIGHT; loadFrame(797); } else { _npcFlags = 0; @@ -244,7 +244,7 @@ bool CDoorbot::DoorbotNeededInElevatorMsg(CDoorbotNeededInElevatorMsg *msg) { } bool CDoorbot::LeaveViewMsg(CLeaveViewMsg *msg) { - if (!(_npcFlags & NPCFLAG_DOORBOT_INTRO) && (_npcFlags & NPCFLAG_400000)) { + if (!(_npcFlags & NPCFLAG_DOORBOT_INTRO) && (_npcFlags & NPCFLAG_MOVE_END)) { performAction(true); _npcFlags &= ~NPCFLAG_START_IDLING; } @@ -342,7 +342,7 @@ bool CDoorbot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) { }; if (msg->_value2 != 2) { - if (_npcFlags & NPCFLAG_200000) { + if (_npcFlags & NPCFLAG_MOVE_RIGHT) { switch (_introMovieNum) { case 8: case 10: @@ -355,7 +355,7 @@ bool CDoorbot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) { default: break; } - } else if (_npcFlags & (NPCFLAG_100000 | NPCFLAG_400000)) { + } else if (_npcFlags & (NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_END)) { msg->_names = NAMES1; } } @@ -368,8 +368,8 @@ bool CDoorbot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) { "Hand swivel", "Prompt Push", "Eye Roll", "Say something", nullptr }; - if (!(_npcFlags & (NPCFLAG_100000 | NPCFLAG_200000)) - && (_npcFlags & NPCFLAG_400000)) + if (!(_npcFlags & (NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT)) + && (_npcFlags & NPCFLAG_MOVE_END)) msg->_names = NAMES; return true; @@ -377,7 +377,7 @@ bool CDoorbot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) { bool CDoorbot::PutBotBackInHisBoxMsg(CPutBotBackInHisBoxMsg *msg) { petMoveToHiddenRoom(); - _npcFlags &= ~(NPCFLAG_START_IDLING | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_DOORBOT_INTRO); + _npcFlags &= ~(NPCFLAG_START_IDLING | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_DOORBOT_INTRO); if (msg->_value) performAction(true); @@ -385,7 +385,7 @@ bool CDoorbot::PutBotBackInHisBoxMsg(CPutBotBackInHisBoxMsg *msg) { } bool CDoorbot::DismissBotMsg(CDismissBotMsg *msg) { - if (_npcFlags & NPCFLAG_400000) { + if (_npcFlags & NPCFLAG_MOVE_END) { playClip(getRandomNumber(1) ? "Whizz Off Left" : "Whizz Off Right", MOVIE_STOP_PREVIOUS | MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp index e17906e0de..0a067d07a8 100644 --- a/engines/titanic/npcs/parrot.cpp +++ b/engines/titanic/npcs/parrot.cpp @@ -202,7 +202,7 @@ bool CParrot::ActMsg(CActMsg *msg) { } bool CParrot::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { - if (!(_npcFlags & NPCFLAG_2000000) && _speechCounter == 0) { + if (!(_npcFlags & NPCFLAG_TAKE_OFF) && _speechCounter == 0) { CTrueTalkTriggerActionMsg triggerMsg(280250, 280250, 1); triggerMsg.execute(this); } @@ -211,7 +211,7 @@ bool CParrot::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { } bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { - if ((_npcFlags & NPCFLAG_2000000) && clipExistsByEnd("Take Off", msg->_endFrame)) { + if ((_npcFlags & NPCFLAG_TAKE_OFF) && clipExistsByEnd("Take Off", msg->_endFrame)) { setVisible(false); moveUnder(findRoom()); stopMovie(); @@ -228,12 +228,12 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { actMsg2.execute("ParrotCage"); } - _npcFlags &= ~NPCFLAG_2000000; + _npcFlags &= ~NPCFLAG_TAKE_OFF; _state = PARROT_ESCAPED; - } else if (_npcFlags & NPCFLAG_10000) { + } else if (_npcFlags & NPCFLAG_MOVING) { if (_npcFlags & NPCFLAG_20000) { _npcFlags = (_npcFlags & ~NPCFLAG_20000) | NPCFLAG_40000; - if (_npcFlags & NPCFLAG_100000) { + if (_npcFlags & NPCFLAG_MOVE_LEFT) { playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); } else { @@ -242,7 +242,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { } else if (_npcFlags & NPCFLAG_40000) { int xp = _bounds.left + _bounds.width() / 2; - if (_npcFlags & NPCFLAG_100000) { + if (_npcFlags & NPCFLAG_MOVE_LEFT) { if ((xp - _newXc) > 32) { setPosition(Point(_bounds.left - 40, _bounds.top)); playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); @@ -263,20 +263,20 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { } } else if (_npcFlags & NPCFLAG_80000) { loadFrame(0); - if (_npcFlags & NPCFLAG_100000) + if (_npcFlags & NPCFLAG_MOVE_LEFT) setPosition(Point(_bounds.left - 30, _bounds.top)); else setPosition(Point(_bounds.left + 14, _bounds.top)); - _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000); + _npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_80000 | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT); CTrueTalkNPC::MovieEndMsg(msg); } else { - if (_npcFlags & NPCFLAG_1000000) { + if (_npcFlags & NPCFLAG_MOVE_LEFT0) { Point pt = getMousePos(); if (pt.x > 70 || pt.y < 90 || pt.y > 280) { stopMovie(); loadFrame(0); - _npcFlags &= ~NPCFLAG_1000000; + _npcFlags &= ~NPCFLAG_MOVE_LEFT0; } if (clipExistsByEnd("Walk Left Loop", msg->_endFrame)) { @@ -291,6 +291,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { return true; } else if (clipExistsByEnd("Lean Over To Chicken", msg->_endFrame)) { + // Leaning left out of cage to eat the chicken playClip("Eat Chicken"); playClip("Eat Chicken 2", MOVIE_NOTIFY_OBJECT); _eatingChicken = true; @@ -310,12 +311,13 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { actMsg.execute(chicken); } - _npcFlags &= ~NPCFLAG_1000000; + _npcFlags &= ~NPCFLAG_MOVE_LEFT0; return true; } } if (clipExistsByEnd("Eat Chicken 2", msg->_endFrame)) { + // Parrot has finished eating Chicken _eatingChicken = false; CStatusChangeMsg statusMsg; @@ -323,13 +325,16 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { statusMsg.execute("PerchCoreHolder"); if (_takeOff) { + // Perch has been taken, so take off loadMovie("z168.avi", false); playClip("Take Off", MOVIE_NOTIFY_OBJECT); setPosition(Point(20, 10)); - _npcFlags |= NPCFLAG_2000000; + _npcFlags |= NPCFLAG_TAKE_OFF; } else { - _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000); - _npcFlags |= NPCFLAG_400000; + // Resetting back to standing + _npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_20000 | NPCFLAG_40000 + | NPCFLAG_80000 | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT); + _npcFlags |= NPCFLAG_MOVE_END; stopMovie(); loadFrame(0); setPosition(Point(-90, _bounds.top)); @@ -352,7 +357,8 @@ bool CParrot::EnterViewMsg(CEnterViewMsg *msg) { if (_state == PARROT_IN_CAGE) { setPosition(Point(_newXp, _bounds.top)); _field118 = 1; - _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000); + _npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_20000 | NPCFLAG_40000 + | NPCFLAG_80000 | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_MOVE_END); loadFrame(0); setTalking(this, true, findView()); @@ -485,7 +491,8 @@ bool CParrot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) { "Talking5", "Talking6", "Talking7", nullptr }; - if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000)) + if (!(_npcFlags & (NPCFLAG_MOVING | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 + | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_MOVE_END)) && _visible && _state == PARROT_IN_CAGE) { if (!compareViewNameTo("ParrotLobby.Node 1.N")) msg->_names = NAMES; @@ -500,7 +507,8 @@ bool CParrot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) { "Peck At Feet Right", nullptr }; - if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000)) + if (!(_npcFlags & (NPCFLAG_MOVING | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 + | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_MOVE_END)) && _visible && _state == PARROT_IN_CAGE && !compareViewNameTo("ParrotLobby.Node 1.N")) { CGameObject *dragItem = getDraggingObject(); if (!dragItem || dragItem->getName() == "Chicken") { @@ -576,7 +584,7 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { int xp = _bounds.left + _bounds.width() / 2; bool chickenFlag = false; - if ((_npcFlags & NPCFLAG_400000) && !hasActiveMovie()) { + if ((_npcFlags & NPCFLAG_MOVE_END) && !hasActiveMovie()) { _newXc = _newXp + _bounds.width() / 2; int xDiff = ABS(xp - _newXc); @@ -587,15 +595,15 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { _panTarget = nullptr; } - _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 - | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000); + _npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_20000 | NPCFLAG_40000 + | NPCFLAG_80000 | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_MOVE_END); return true; } } else { if (dragObject) chickenFlag = dragObject && dragObject->isEquals("Chicken"); - if (_npcFlags & NPCFLAG_1000000) { + if (_npcFlags & NPCFLAG_MOVE_LEFT0) { if (!chickenFlag || pt.x > 70 || pt.y < 90 || pt.y > 280) { stopMovie(); loadFrame(0); @@ -609,18 +617,18 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { _newXc = CLIP((int)pt.x, 230, 480); } - if ((_npcFlags & NPCFLAG_10000) || hasActiveMovie()) + if ((_npcFlags & NPCFLAG_MOVING) || hasActiveMovie()) return true; if (ABS(_newXc - xp) > 64) { - _npcFlags |= NPCFLAG_10000 | NPCFLAG_20000; + _npcFlags |= NPCFLAG_MOVING | NPCFLAG_20000; if (_newXc >= xp) { setPosition(Point(_bounds.left + 30, _bounds.top)); - _npcFlags |= NPCFLAG_200000; + _npcFlags |= NPCFLAG_MOVE_RIGHT; playClip("Walk Right Intro", MOVIE_NOTIFY_OBJECT); } else { - _npcFlags |= NPCFLAG_100000; + _npcFlags |= NPCFLAG_MOVE_LEFT; playClip("Walk Left Intro", MOVIE_NOTIFY_OBJECT); } } else if (chickenFlag && pt.y >= 90 && pt.y <= 280 && !_field12C) { @@ -646,7 +654,7 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { if (action != 280266) { if (pt.x < 75) { - _npcFlags |= NPCFLAG_1000000; + _npcFlags |= NPCFLAG_MOVE_LEFT0; playClip("Walk Left Intro", MOVIE_STOP_PREVIOUS); playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); @@ -744,9 +752,9 @@ bool CParrot::PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg) { loadMovie("z168.avi", false); stopMovie(); playClip("Take Off", MOVIE_NOTIFY_OBJECT); - _npcFlags |= NPCFLAG_2000000; + _npcFlags |= NPCFLAG_TAKE_OFF; } else { - _npcFlags |= NPCFLAG_400000; + _npcFlags |= NPCFLAG_MOVE_END; _panTarget = msg->_target; stopMovie(); } diff --git a/engines/titanic/npcs/true_talk_npc.h b/engines/titanic/npcs/true_talk_npc.h index d9ea037a72..35d6690887 100644 --- a/engines/titanic/npcs/true_talk_npc.h +++ b/engines/titanic/npcs/true_talk_npc.h @@ -31,11 +31,11 @@ namespace Titanic { enum NpcFlag { NPCFLAG_SPEAKING = 1, NPCFLAG_IDLING = 2, NPCFLAG_START_IDLING = 4, - NPCFLAG_8 = 8, NPCFLAG_10000 = 0x10000, NPCFLAG_20000 = 0x20000, + NPCFLAG_8 = 8, NPCFLAG_MOVING = 0x10000, NPCFLAG_20000 = 0x20000, NPCFLAG_40000 = 0x40000, NPCFLAG_80000 = 0x80000, - NPCFLAG_100000 = 0x100000, NPCFLAG_200000 = 0x200000, - NPCFLAG_400000 = 0x400000, NPCFLAG_800000 = 0x800000, - NPCFLAG_1000000 = 0x1000000, NPCFLAG_2000000 = 0x2000000, + NPCFLAG_MOVE_LEFT = 0x100000, NPCFLAG_MOVE_RIGHT = 0x200000, + NPCFLAG_MOVE_END = 0x400000, NPCFLAG_800000 = 0x800000, + NPCFLAG_MOVE_LEFT0 = 0x1000000, NPCFLAG_TAKE_OFF = 0x2000000, NPCFLAG_4000000 = 0x4000000, NPCFLAG_DOORBOT_INTRO = 0x8000000 }; |