[Scummvm-cvs-logs] scummvm master -> cbf5fb0beee0e0157c2d9a8e4cac2d35106e5c34
dreammaster
dreammaster at scummvm.org
Mon Aug 15 05:07:34 CEST 2016
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
cbf5fb0bee TITANIC: Move BilgeSuccUBus & ParrotSuccUBus to npcs/ folder
Commit: cbf5fb0beee0e0157c2d9a8e4cac2d35106e5c34
https://github.com/scummvm/scummvm/commit/cbf5fb0beee0e0157c2d9a8e4cac2d35106e5c34
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-14T23:07:24-04:00
Commit Message:
TITANIC: Move BilgeSuccUBus & ParrotSuccUBus to npcs/ folder
Changed paths:
A engines/titanic/npcs/bilge_succubus.cpp
A engines/titanic/npcs/bilge_succubus.h
A engines/titanic/npcs/parrot_succubus.cpp
A engines/titanic/npcs/parrot_succubus.h
R engines/titanic/game/bilge_succubus.cpp
R engines/titanic/game/bilge_succubus.h
R engines/titanic/game/parrot/parrot_succubus.cpp
R engines/titanic/game/parrot/parrot_succubus.h
engines/titanic/core/saveable_object.cpp
engines/titanic/module.mk
diff --git a/engines/titanic/core/saveable_object.cpp b/engines/titanic/core/saveable_object.cpp
index 62cee47..080c34b 100644
--- a/engines/titanic/core/saveable_object.cpp
+++ b/engines/titanic/core/saveable_object.cpp
@@ -92,7 +92,7 @@
#include "titanic/game/bar_menu.h"
#include "titanic/game/bar_menu_button.h"
#include "titanic/game/belbot_get_light.h"
-#include "titanic/game/bilge_succubus.h"
+#include "titanic/npcs/bilge_succubus.h"
#include "titanic/game/bomb.h"
#include "titanic/game/bottom_of_well_monitor.h"
#include "titanic/game/bowl_unlocker.h"
@@ -228,7 +228,7 @@
#include "titanic/game/parrot/parrot_nut_bowl_actor.h"
#include "titanic/game/parrot/parrot_nut_eater.h"
#include "titanic/game/parrot/parrot_perch_holder.h"
-#include "titanic/game/parrot/parrot_succubus.h"
+#include "titanic/npcs/parrot_succubus.h"
#include "titanic/game/parrot/parrot_trigger.h"
#include "titanic/game/parrot/player_meets_parrot.h"
#include "titanic/game/pet/pet.h"
diff --git a/engines/titanic/game/bilge_succubus.cpp b/engines/titanic/game/bilge_succubus.cpp
deleted file mode 100644
index 88ddf70..0000000
--- a/engines/titanic/game/bilge_succubus.cpp
+++ /dev/null
@@ -1,467 +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.
- *
- */
-
-#include "titanic/game/bilge_succubus.h"
-#include "titanic/carry/chicken.h"
-#include "titanic/core/view_item.h"
-#include "titanic/pet_control/pet_control.h"
-
-namespace Titanic {
-
-BEGIN_MESSAGE_MAP(CBilgeSuccUBus, CSuccUBus)
- ON_MESSAGE(FrameMsg)
- ON_MESSAGE(PETReceiveMsg)
- ON_MESSAGE(PETDeliverMsg)
- ON_MESSAGE(MovieEndMsg)
- ON_MESSAGE(MouseButtonDownMsg)
- ON_MESSAGE(SubAcceptCCarryMsg)
- ON_MESSAGE(EnterViewMsg)
- ON_MESSAGE(LeaveViewMsg)
- ON_MESSAGE(TrueTalkGetStateValueMsg)
- ON_MESSAGE(TurnOn)
- ON_MESSAGE(TurnOff)
-END_MESSAGE_MAP()
-
-CBilgeSuccUBus::CBilgeSuccUBus() : CSuccUBus(),
- _bilgeStartFrame1(-1), _bilgeEndFrame1(-1),
- _bilgeStartFrame2(-1), _bilgeEndFrame2(-1) {
-}
-
-void CBilgeSuccUBus::save(SimpleFile *file, int indent) {
- file->writeNumberLine(1, indent);
- file->writeNumberLine(_bilgeStartFrame1, indent);
- file->writeNumberLine(_bilgeEndFrame1, indent);
- file->writeNumberLine(_bilgeStartFrame2, indent);
- file->writeNumberLine(_bilgeEndFrame2, indent);
-
- CSuccUBus::save(file, indent);
-}
-
-void CBilgeSuccUBus::load(SimpleFile *file) {
- file->readNumber();
- _bilgeStartFrame1 = file->readNumber();
- _bilgeEndFrame1 = file->readNumber();
- _bilgeStartFrame2 = file->readNumber();
- _bilgeEndFrame2 = file->readNumber();
-
- CSuccUBus::load(file);
-}
-
-bool CBilgeSuccUBus::FrameMsg(CFrameMsg *msg) {
- return true;
-}
-
-bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
- CPetControl *pet = getPetControl();
-
- if (_v2) {
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
-
- playSound("z#28.wav", 70);
- } else if (!_enabled) {
- petDisplayMessage(2, "The Succ-U-Bus is in Standby, or \"Off\" mode at present.");
- return false;
- } else if (!pet) {
- return false;
- } else {
- uint roomFlags = pet->getRoomFlags();
- CGameObject *mailObject = findMailByFlags(
- _v3 && compareRoomNameTo("Titania") ? 3 : _field140,
- roomFlags);
-
- if (mailObject) {
- _mailP = mailObject;
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
- } else {
- petDisplayMessage(2, "There is currently nothing to deliver.");
- }
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
- CPetControl *pet = getPetControl();
- if (!_enabled || !pet)
- return true;
-
- uint petRoomFlags = pet->getRoomFlags();
- CGameObject *mailObject = findMail(petRoomFlags);
-
- if (!mailObject) {
- petDisplayMessage(2, "There is currently nothing in the tray to send.");
- return true;
- }
-
- _field19C = 0;
- _mailP = mailObject;
-
- uint roomFlags = _roomFlags;
- if (!pet->testRooms5(roomFlags) ||
- getPassengerClass() > pet->getMailDest(roomFlags)) {
- roomFlags = pet->getSpecialRoomFlags("BilgeRoom");
- _field19C = 1;
- }
-
- _isChicken = mailObject->getName() == "Chicken";
- _isFeathers = mailObject->getName() == "Feathers";
- _field158 = 0;
-
- if (_v2) {
- if (_isFeathers) {
- startTalking(this, 230022);
- _field158 = 1;
-
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
-
- if (_bilgeStartFrame1 >= 0) {
- playMovie(_startFrame12, _endFrame12, MOVIE_GAMESTATE);
- playMovie(_bilgeStartFrame2, _bilgeEndFrame2, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- playMovie(_bilgeStartFrame1, _bilgeEndFrame1, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- inc54();
- }
- } else {
- startTalking(this, 230012);
- _field158 = 2;
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
- }
- } else {
- if (_isFeathers) {
- startTalking(this, 230022);
- _field158 = 3;
-
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- } else {
- removeMail(petRoomFlags, roomFlags);
- startTalking(this, 230012);
- if (_startFrame3 >= 0) {
- _field158 = 4;
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- }
- }
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
- CPetControl *pet = getPetControl();
-
- if (msg->_endFrame == _endFrame12) {
- if (_startFrame10 >= 0)
- playSound("z#27.wav");
- } else if (msg->_endFrame == _endFrame10) {
- if (_startFrame11 >= 0)
- playSound("z#30.wav");
- } else {
- if (_endFrame9 == _endFrame10 && pet) {
- if (_v2) {
- startTalking(this, getRandomNumber(1) ? 230062 : 230063);
- } else if (!findMail(pet->getRoomFlags())) {
- switch (getRandomNumber(4)) {
- case 0:
- startTalking(this, 230001);
- break;
- case 1:
- startTalking(this, 230002);
- break;
- case 2:
- startTalking(this, 230003);
- break;
- default:
- break;
- }
- }
- }
-
- if (msg->_endFrame == _endFrame3) {
- switch (_field158) {
- case 1:
- stopSound(_soundHandle);
- _soundHandle = playSound("z#3.wav");
- break;
- case 2:
- stopSound(_soundHandle);
- _soundHandle = playSound("z#12.wav");
- break;
- case 3:
- if (_isChicken) {
- startTalking(this, 230018);
- _isChicken = false;
- } else {
- startTalking(this, 230013);
- }
- break;
- case 4:
- startTalking(this, 230017);
- break;
- default:
- break;
- }
-
- CSUBTransition transMsg;
- transMsg.execute(this);
-
- } else if (msg->_endFrame == _bilgeEndFrame2) {
- playSound("z#25.wav", 70);
- playSound("z#24.wav", 70);
-
- } else if (msg->_endFrame == _endFrame4) {
- if (_mailP) {
- _mailP->petAddToInventory();
- CVisibleMsg visibleMsg(true);
- visibleMsg.execute(_mailP);
-
- _mailP = nullptr;
- petSetArea(PET_INVENTORY);
-
- CSUBTransition transMsg;
- transMsg.execute(this);
- }
-
- } else if (msg->_endFrame == _bilgeEndFrame1) {
- changeView("BilgeRoomWith.Node 1.N", "");
- _v2 = 0;
- resetMail();
-
- if (_mailP) {
- _mailP->petAddToInventory();
- CVisibleMsg visibleMsg(true);
- visibleMsg.execute(_mailP);
-
- _mailP = nullptr;
- petSetArea(PET_INVENTORY);
- }
-
- startTalking(this, 150);
- CBodyInBilgeRoomMsg bodyMsg;
- bodyMsg.execute("Service Elevator Entity");
- dec54();
- _field158 = 0;
-
- } else {
- _field158 = 0;
- }
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
- if (_enabled) {
- switch (getRandomNumber(4)) {
- case 0:
- case 4: {
- _enabled = false;
- CTurnOff offMsg;
- offMsg.execute(this);
- break;
- }
-
- case 1:
- startTalking(this, 230055);
- break;
-
- case 2:
- startTalking(this, 230067);
- break;
-
- case 3:
- startTalking(this, 230045);
- break;
-
- default:
- break;
- }
- } else {
- CTurnOn onMsg;
- onMsg.execute(this);
- _enabled = true;
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
- CPetControl *pet = getPetControl();
- if (!msg->_item)
- return false;
-
- CCarry *item = dynamic_cast<CCarry *>(msg->_item);
- if (!_enabled || !pet || !item) {
- item->petAddToInventory();
- return true;
- }
-
- uint petRoomFlags = pet->getRoomFlags();
- if (mailExists(petRoomFlags)) {
- petDisplayMessage(2, "The Succ-U-Bus is a Single Entity Delivery Device.");
- item->petAddToInventory();
- return true;
- }
-
- petContainerRemove(item);
- pet->phonographAction("");
- playSound("z#23.wav");
-
- CChicken *chicken = dynamic_cast<CChicken *>(item);
- bool chickenFlag = chicken ? chicken->_string6 == "None" : false;
-
- if (chickenFlag) {
- if (_startFrame2 >= 0) {
- startTalking(this, 70219);
- playMovie(_startFrame2, _endFrame2, 0);
- }
-
- if (_startFrame3 >= 0) {
- _field158 = 5;
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
- }
-
- CViewItem *view = parseView(item->_fullViewName);
- if (view) {
- item->setVisible(false);
- setPosition(item->_origPos);
- item->moveUnder(view);
-
- CSUBTransition transMsg;
- transMsg.execute(this);
- } else {
- return false;
- }
- } else {
- item->addMail(petRoomFlags);
- if (_startFrame2 >= 0)
- playMovie(_startFrame2, _endFrame2, 0);
-
- petSetArea(PET_REMOTE);
- CSUBTransition transMsg;
- transMsg.execute(this);
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::EnterViewMsg(CEnterViewMsg *msg) {
- petSetRemoteTarget();
- _mailP = nullptr;
-
- if (_startFrame8 >= 0)
- loadFrame(_startFrame8);
-
- return true;
-}
-
-bool CBilgeSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
- petDisplayMessage(2, "");
- petClear();
-
- if (_soundHandle != -1) {
- stopSound(_soundHandle);
- _soundHandle = -1;
- }
-
- if (_enabled) {
- _enabled = false;
- if (_startFrame10 >= 0)
- playSound("z#27.wav");
- }
-
- performAction(true);
- CSUBTransition transMsg;
- transMsg.execute(this);
-
- return true;
-}
-
-bool CBilgeSuccUBus::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) {
- if (msg->_stateNum == 1)
- msg->_stateVal = _enabled;
-
- return true;
-}
-
-bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) {
- CPetControl *pet = getPetControl();
-
- if (pet) {
- if (_startFrame9 >= 0) {
- playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT);
- playSound("z#26.wav");
- }
-
- if (mailExists(pet->getRoomFlags()) && _startFrame2 >= 0)
- playMovie(_startFrame2, _endFrame2, 0);
-
- _enabled = true;
- CSUBTransition transMsg;
- transMsg.execute(this);
-
- endTalking(this, true);
- petSetArea(PET_REMOTE);
- petHighlightGlyph(16);
- }
-
- return true;
-}
-
-bool CBilgeSuccUBus::TurnOff(CTurnOff *msg) {
- CPetControl *pet = getPetControl();
-
- if (pet && mailExists(pet->getRoomFlags()) && _startFrame12 >= 0)
- playMovie(_startFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
- else if (_endFrame12 >= 0)
- playMovie(_endFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
-
- if (_soundHandle != -1) {
- stopSound(_soundHandle);
- _soundHandle = -1;
- }
-
- if (_startFrame10 >= 0)
- playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT);
-
- _enabled = false;
- performAction(true);
-
- CSUBTransition transMsg;
- transMsg.execute(this);
-
- return true;
-}
-
-} // End of namespace Titanic
diff --git a/engines/titanic/game/bilge_succubus.h b/engines/titanic/game/bilge_succubus.h
deleted file mode 100644
index 754949a..0000000
--- a/engines/titanic/game/bilge_succubus.h
+++ /dev/null
@@ -1,65 +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.
- *
- */
-
-#ifndef TITANIC_BILGE_SUCCUBUS_H
-#define TITANIC_BILGE_SUCCUBUS_H
-
-#include "titanic/npcs/succubus.h"
-
-namespace Titanic {
-
-class CBilgeSuccUBus : public CSuccUBus {
- DECLARE_MESSAGE_MAP;
- bool FrameMsg(CFrameMsg *msg);
- bool PETReceiveMsg(CPETReceiveMsg *msg);
- bool PETDeliverMsg(CPETDeliverMsg *msg);
- bool MovieEndMsg(CMovieEndMsg *msg);
- bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
- bool SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg);
- bool EnterViewMsg(CEnterViewMsg *msg);
- bool LeaveViewMsg(CLeaveViewMsg *msg);
- bool TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg);
- bool TurnOn(CTurnOn *msg);
- bool TurnOff(CTurnOff *msg);
-public:
- int _bilgeStartFrame1;
- int _bilgeEndFrame1;
- int _bilgeStartFrame2;
- int _bilgeEndFrame2;
-public:
- CLASSDEF;
- CBilgeSuccUBus();
-
- /**
- * Save the data for the class to file
- */
- virtual void save(SimpleFile *file, int indent);
-
- /**
- * Load the data for the class from file
- */
- virtual void load(SimpleFile *file);
-};
-
-} // End of namespace Titanic
-
-#endif /* TITANIC_BILGE_SUCCUBUS_H */
diff --git a/engines/titanic/game/parrot/parrot_succubus.cpp b/engines/titanic/game/parrot/parrot_succubus.cpp
deleted file mode 100644
index 02a29b7..0000000
--- a/engines/titanic/game/parrot/parrot_succubus.cpp
+++ /dev/null
@@ -1,49 +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.
- *
- */
-
-#include "titanic/game/parrot/parrot_succubus.h"
-
-namespace Titanic {
-
-CParrotSuccUBus::CParrotSuccUBus() : CSuccUBus(), _field1DC(0),
- _field1EC(0), _field1F0(376), _field1F4(393) {
-}
-
-void CParrotSuccUBus::save(SimpleFile *file, int indent) {
- file->writeNumberLine(1, indent);
- file->writeNumberLine(_field1DC, indent);
- file->writeQuotedLine(_string3, indent);
- file->writeNumberLine(_field1EC, indent);
-
- CSuccUBus::save(file, indent);
-}
-
-void CParrotSuccUBus::load(SimpleFile *file) {
- file->readNumber();
- _field1DC = file->readNumber();
- _string3 = file->readString();
- _field1EC = file->readNumber();
-
- CSuccUBus::load(file);
-}
-
-} // End of namespace Titanic
diff --git a/engines/titanic/game/parrot/parrot_succubus.h b/engines/titanic/game/parrot/parrot_succubus.h
deleted file mode 100644
index 6f5d9e6..0000000
--- a/engines/titanic/game/parrot/parrot_succubus.h
+++ /dev/null
@@ -1,54 +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.
- *
- */
-
-#ifndef TITANIC_PARROT_SUCCUBUS_H
-#define TITANIC_PARROT_SUCCUBUS_H
-
-#include "titanic/npcs/succubus.h"
-
-namespace Titanic {
-
-class CParrotSuccUBus : public CSuccUBus {
-public:
- int _field1DC;
- CString _string3;
- int _field1EC;
- int _field1F0;
- int _field1F4;
-public:
- CLASSDEF;
- CParrotSuccUBus();
-
- /**
- * Save the data for the class to file
- */
- virtual void save(SimpleFile *file, int indent);
-
- /**
- * Load the data for the class from file
- */
- virtual void load(SimpleFile *file);
-};
-
-} // End of namespace Titanic
-
-#endif /* TITANIC_PARROT_SUCCUBUS_H */
diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk
index 5c04117..34d93b6 100644
--- a/engines/titanic/module.mk
+++ b/engines/titanic/module.mk
@@ -81,7 +81,6 @@ MODULE_OBJS := \
game/arb_background.o \
game/arboretum_gate.o \
game/auto_animate.o \
- game/bilge_succubus.o \
game/bar_menu.o \
game/bar_menu_button.o \
game/bar_bell.o \
@@ -221,7 +220,6 @@ MODULE_OBJS := \
game/parrot/parrot_nut_bowl_actor.o \
game/parrot/parrot_nut_eater.o \
game/parrot/parrot_perch_holder.o \
- game/parrot/parrot_succubus.o \
game/parrot/parrot_trigger.o \
game/parrot/player_meets_parrot.o \
game/pet/pet.o \
@@ -343,6 +341,7 @@ MODULE_OBJS := \
moves/trip_down_canal.o \
npcs/barbot.o \
npcs/bellbot.o \
+ npcs/bilge_succubus.o \
npcs/callbot.o \
npcs/character.o \
npcs/deskbot.o \
@@ -351,6 +350,7 @@ MODULE_OBJS := \
npcs/maitre_d.o \
npcs/mobile.o \
npcs/parrot.o \
+ npcs/parrot_succubus.o \
npcs/robot_controller.o \
npcs/starlings.o \
npcs/succubus.o \
diff --git a/engines/titanic/npcs/bilge_succubus.cpp b/engines/titanic/npcs/bilge_succubus.cpp
new file mode 100644
index 0000000..16064bf
--- /dev/null
+++ b/engines/titanic/npcs/bilge_succubus.cpp
@@ -0,0 +1,467 @@
+/* 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.
+ *
+ */
+
+#include "titanic/npcs/bilge_succubus.h"
+#include "titanic/carry/chicken.h"
+#include "titanic/core/view_item.h"
+#include "titanic/pet_control/pet_control.h"
+
+namespace Titanic {
+
+BEGIN_MESSAGE_MAP(CBilgeSuccUBus, CSuccUBus)
+ ON_MESSAGE(FrameMsg)
+ ON_MESSAGE(PETReceiveMsg)
+ ON_MESSAGE(PETDeliverMsg)
+ ON_MESSAGE(MovieEndMsg)
+ ON_MESSAGE(MouseButtonDownMsg)
+ ON_MESSAGE(SubAcceptCCarryMsg)
+ ON_MESSAGE(EnterViewMsg)
+ ON_MESSAGE(LeaveViewMsg)
+ ON_MESSAGE(TrueTalkGetStateValueMsg)
+ ON_MESSAGE(TurnOn)
+ ON_MESSAGE(TurnOff)
+END_MESSAGE_MAP()
+
+CBilgeSuccUBus::CBilgeSuccUBus() : CSuccUBus(),
+ _bilgeStartFrame1(-1), _bilgeEndFrame1(-1),
+ _bilgeStartFrame2(-1), _bilgeEndFrame2(-1) {
+}
+
+void CBilgeSuccUBus::save(SimpleFile *file, int indent) {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_bilgeStartFrame1, indent);
+ file->writeNumberLine(_bilgeEndFrame1, indent);
+ file->writeNumberLine(_bilgeStartFrame2, indent);
+ file->writeNumberLine(_bilgeEndFrame2, indent);
+
+ CSuccUBus::save(file, indent);
+}
+
+void CBilgeSuccUBus::load(SimpleFile *file) {
+ file->readNumber();
+ _bilgeStartFrame1 = file->readNumber();
+ _bilgeEndFrame1 = file->readNumber();
+ _bilgeStartFrame2 = file->readNumber();
+ _bilgeEndFrame2 = file->readNumber();
+
+ CSuccUBus::load(file);
+}
+
+bool CBilgeSuccUBus::FrameMsg(CFrameMsg *msg) {
+ return true;
+}
+
+bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
+ CPetControl *pet = getPetControl();
+
+ if (_v2) {
+ if (_startFrame4 >= 0)
+ playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
+ if (_startFrame5 >= 0)
+ playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
+
+ playSound("z#28.wav", 70);
+ } else if (!_enabled) {
+ petDisplayMessage(2, "The Succ-U-Bus is in Standby, or \"Off\" mode at present.");
+ return false;
+ } else if (!pet) {
+ return false;
+ } else {
+ uint roomFlags = pet->getRoomFlags();
+ CGameObject *mailObject = findMailByFlags(
+ _v3 && compareRoomNameTo("Titania") ? 3 : _field140,
+ roomFlags);
+
+ if (mailObject) {
+ _mailP = mailObject;
+ if (_startFrame4 >= 0)
+ playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
+ } else {
+ petDisplayMessage(2, "There is currently nothing to deliver.");
+ }
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
+ CPetControl *pet = getPetControl();
+ if (!_enabled || !pet)
+ return true;
+
+ uint petRoomFlags = pet->getRoomFlags();
+ CGameObject *mailObject = findMail(petRoomFlags);
+
+ if (!mailObject) {
+ petDisplayMessage(2, "There is currently nothing in the tray to send.");
+ return true;
+ }
+
+ _field19C = 0;
+ _mailP = mailObject;
+
+ uint roomFlags = _roomFlags;
+ if (!pet->testRooms5(roomFlags) ||
+ getPassengerClass() > pet->getMailDest(roomFlags)) {
+ roomFlags = pet->getSpecialRoomFlags("BilgeRoom");
+ _field19C = 1;
+ }
+
+ _isChicken = mailObject->getName() == "Chicken";
+ _isFeathers = mailObject->getName() == "Feathers";
+ _field158 = 0;
+
+ if (_v2) {
+ if (_isFeathers) {
+ startTalking(this, 230022);
+ _field158 = 1;
+
+ if (_startFrame3 >= 0)
+ playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+
+ if (_bilgeStartFrame1 >= 0) {
+ playMovie(_startFrame12, _endFrame12, MOVIE_GAMESTATE);
+ playMovie(_bilgeStartFrame2, _bilgeEndFrame2, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ playMovie(_bilgeStartFrame1, _bilgeEndFrame1, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ inc54();
+ }
+ } else {
+ startTalking(this, 230012);
+ _field158 = 2;
+ if (_startFrame3 >= 0)
+ playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_startFrame4 >= 0)
+ playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_startFrame5 >= 0)
+ playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
+ }
+ } else {
+ if (_isFeathers) {
+ startTalking(this, 230022);
+ _field158 = 3;
+
+ if (_startFrame3 >= 0)
+ playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_startFrame4 >= 0)
+ playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_startFrame5 >= 0)
+ playMovie(_startFrame5, _endFrame5, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ } else {
+ removeMail(petRoomFlags, roomFlags);
+ startTalking(this, 230012);
+ if (_startFrame3 >= 0) {
+ _field158 = 4;
+ playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ }
+ }
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
+ CPetControl *pet = getPetControl();
+
+ if (msg->_endFrame == _endFrame12) {
+ if (_startFrame10 >= 0)
+ playSound("z#27.wav");
+ } else if (msg->_endFrame == _endFrame10) {
+ if (_startFrame11 >= 0)
+ playSound("z#30.wav");
+ } else {
+ if (_endFrame9 == _endFrame10 && pet) {
+ if (_v2) {
+ startTalking(this, getRandomNumber(1) ? 230062 : 230063);
+ } else if (!findMail(pet->getRoomFlags())) {
+ switch (getRandomNumber(4)) {
+ case 0:
+ startTalking(this, 230001);
+ break;
+ case 1:
+ startTalking(this, 230002);
+ break;
+ case 2:
+ startTalking(this, 230003);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ if (msg->_endFrame == _endFrame3) {
+ switch (_field158) {
+ case 1:
+ stopSound(_soundHandle);
+ _soundHandle = playSound("z#3.wav");
+ break;
+ case 2:
+ stopSound(_soundHandle);
+ _soundHandle = playSound("z#12.wav");
+ break;
+ case 3:
+ if (_isChicken) {
+ startTalking(this, 230018);
+ _isChicken = false;
+ } else {
+ startTalking(this, 230013);
+ }
+ break;
+ case 4:
+ startTalking(this, 230017);
+ break;
+ default:
+ break;
+ }
+
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+
+ } else if (msg->_endFrame == _bilgeEndFrame2) {
+ playSound("z#25.wav", 70);
+ playSound("z#24.wav", 70);
+
+ } else if (msg->_endFrame == _endFrame4) {
+ if (_mailP) {
+ _mailP->petAddToInventory();
+ CVisibleMsg visibleMsg(true);
+ visibleMsg.execute(_mailP);
+
+ _mailP = nullptr;
+ petSetArea(PET_INVENTORY);
+
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+ }
+
+ } else if (msg->_endFrame == _bilgeEndFrame1) {
+ changeView("BilgeRoomWith.Node 1.N", "");
+ _v2 = 0;
+ resetMail();
+
+ if (_mailP) {
+ _mailP->petAddToInventory();
+ CVisibleMsg visibleMsg(true);
+ visibleMsg.execute(_mailP);
+
+ _mailP = nullptr;
+ petSetArea(PET_INVENTORY);
+ }
+
+ startTalking(this, 150);
+ CBodyInBilgeRoomMsg bodyMsg;
+ bodyMsg.execute("Service Elevator Entity");
+ dec54();
+ _field158 = 0;
+
+ } else {
+ _field158 = 0;
+ }
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+ if (_enabled) {
+ switch (getRandomNumber(4)) {
+ case 0:
+ case 4: {
+ _enabled = false;
+ CTurnOff offMsg;
+ offMsg.execute(this);
+ break;
+ }
+
+ case 1:
+ startTalking(this, 230055);
+ break;
+
+ case 2:
+ startTalking(this, 230067);
+ break;
+
+ case 3:
+ startTalking(this, 230045);
+ break;
+
+ default:
+ break;
+ }
+ } else {
+ CTurnOn onMsg;
+ onMsg.execute(this);
+ _enabled = true;
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
+ CPetControl *pet = getPetControl();
+ if (!msg->_item)
+ return false;
+
+ CCarry *item = dynamic_cast<CCarry *>(msg->_item);
+ if (!_enabled || !pet || !item) {
+ item->petAddToInventory();
+ return true;
+ }
+
+ uint petRoomFlags = pet->getRoomFlags();
+ if (mailExists(petRoomFlags)) {
+ petDisplayMessage(2, "The Succ-U-Bus is a Single Entity Delivery Device.");
+ item->petAddToInventory();
+ return true;
+ }
+
+ petContainerRemove(item);
+ pet->phonographAction("");
+ playSound("z#23.wav");
+
+ CChicken *chicken = dynamic_cast<CChicken *>(item);
+ bool chickenFlag = chicken ? chicken->_string6 == "None" : false;
+
+ if (chickenFlag) {
+ if (_startFrame2 >= 0) {
+ startTalking(this, 70219);
+ playMovie(_startFrame2, _endFrame2, 0);
+ }
+
+ if (_startFrame3 >= 0) {
+ _field158 = 5;
+ playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+ }
+
+ CViewItem *view = parseView(item->_fullViewName);
+ if (view) {
+ item->setVisible(false);
+ setPosition(item->_origPos);
+ item->moveUnder(view);
+
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+ } else {
+ return false;
+ }
+ } else {
+ item->addMail(petRoomFlags);
+ if (_startFrame2 >= 0)
+ playMovie(_startFrame2, _endFrame2, 0);
+
+ petSetArea(PET_REMOTE);
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::EnterViewMsg(CEnterViewMsg *msg) {
+ petSetRemoteTarget();
+ _mailP = nullptr;
+
+ if (_startFrame8 >= 0)
+ loadFrame(_startFrame8);
+
+ return true;
+}
+
+bool CBilgeSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
+ petDisplayMessage(2, "");
+ petClear();
+
+ if (_soundHandle != -1) {
+ stopSound(_soundHandle);
+ _soundHandle = -1;
+ }
+
+ if (_enabled) {
+ _enabled = false;
+ if (_startFrame10 >= 0)
+ playSound("z#27.wav");
+ }
+
+ performAction(true);
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+
+ return true;
+}
+
+bool CBilgeSuccUBus::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) {
+ if (msg->_stateNum == 1)
+ msg->_stateVal = _enabled;
+
+ return true;
+}
+
+bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) {
+ CPetControl *pet = getPetControl();
+
+ if (pet) {
+ if (_startFrame9 >= 0) {
+ playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT);
+ playSound("z#26.wav");
+ }
+
+ if (mailExists(pet->getRoomFlags()) && _startFrame2 >= 0)
+ playMovie(_startFrame2, _endFrame2, 0);
+
+ _enabled = true;
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+
+ endTalking(this, true);
+ petSetArea(PET_REMOTE);
+ petHighlightGlyph(16);
+ }
+
+ return true;
+}
+
+bool CBilgeSuccUBus::TurnOff(CTurnOff *msg) {
+ CPetControl *pet = getPetControl();
+
+ if (pet && mailExists(pet->getRoomFlags()) && _startFrame12 >= 0)
+ playMovie(_startFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
+ else if (_endFrame12 >= 0)
+ playMovie(_endFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
+
+ if (_soundHandle != -1) {
+ stopSound(_soundHandle);
+ _soundHandle = -1;
+ }
+
+ if (_startFrame10 >= 0)
+ playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT);
+
+ _enabled = false;
+ performAction(true);
+
+ CSUBTransition transMsg;
+ transMsg.execute(this);
+
+ return true;
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/npcs/bilge_succubus.h b/engines/titanic/npcs/bilge_succubus.h
new file mode 100644
index 0000000..754949a
--- /dev/null
+++ b/engines/titanic/npcs/bilge_succubus.h
@@ -0,0 +1,65 @@
+/* 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 TITANIC_BILGE_SUCCUBUS_H
+#define TITANIC_BILGE_SUCCUBUS_H
+
+#include "titanic/npcs/succubus.h"
+
+namespace Titanic {
+
+class CBilgeSuccUBus : public CSuccUBus {
+ DECLARE_MESSAGE_MAP;
+ bool FrameMsg(CFrameMsg *msg);
+ bool PETReceiveMsg(CPETReceiveMsg *msg);
+ bool PETDeliverMsg(CPETDeliverMsg *msg);
+ bool MovieEndMsg(CMovieEndMsg *msg);
+ bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
+ bool SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg);
+ bool EnterViewMsg(CEnterViewMsg *msg);
+ bool LeaveViewMsg(CLeaveViewMsg *msg);
+ bool TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg);
+ bool TurnOn(CTurnOn *msg);
+ bool TurnOff(CTurnOff *msg);
+public:
+ int _bilgeStartFrame1;
+ int _bilgeEndFrame1;
+ int _bilgeStartFrame2;
+ int _bilgeEndFrame2;
+public:
+ CLASSDEF;
+ CBilgeSuccUBus();
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent);
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_BILGE_SUCCUBUS_H */
diff --git a/engines/titanic/npcs/parrot_succubus.cpp b/engines/titanic/npcs/parrot_succubus.cpp
new file mode 100644
index 0000000..49c4afa
--- /dev/null
+++ b/engines/titanic/npcs/parrot_succubus.cpp
@@ -0,0 +1,49 @@
+/* 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.
+ *
+ */
+
+#include "titanic/npcs/parrot_succubus.h"
+
+namespace Titanic {
+
+CParrotSuccUBus::CParrotSuccUBus() : CSuccUBus(), _field1DC(0),
+ _field1EC(0), _field1F0(376), _field1F4(393) {
+}
+
+void CParrotSuccUBus::save(SimpleFile *file, int indent) {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_field1DC, indent);
+ file->writeQuotedLine(_string3, indent);
+ file->writeNumberLine(_field1EC, indent);
+
+ CSuccUBus::save(file, indent);
+}
+
+void CParrotSuccUBus::load(SimpleFile *file) {
+ file->readNumber();
+ _field1DC = file->readNumber();
+ _string3 = file->readString();
+ _field1EC = file->readNumber();
+
+ CSuccUBus::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/npcs/parrot_succubus.h b/engines/titanic/npcs/parrot_succubus.h
new file mode 100644
index 0000000..6f5d9e6
--- /dev/null
+++ b/engines/titanic/npcs/parrot_succubus.h
@@ -0,0 +1,54 @@
+/* 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 TITANIC_PARROT_SUCCUBUS_H
+#define TITANIC_PARROT_SUCCUBUS_H
+
+#include "titanic/npcs/succubus.h"
+
+namespace Titanic {
+
+class CParrotSuccUBus : public CSuccUBus {
+public:
+ int _field1DC;
+ CString _string3;
+ int _field1EC;
+ int _field1F0;
+ int _field1F4;
+public:
+ CLASSDEF;
+ CParrotSuccUBus();
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent);
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_PARROT_SUCCUBUS_H */
More information about the Scummvm-git-logs
mailing list