aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/carry/hose.cpp14
-rw-r--r--engines/titanic/carry/hose.h11
-rw-r--r--engines/titanic/carry/hose_end.cpp43
-rw-r--r--engines/titanic/carry/hose_end.h52
-rw-r--r--engines/titanic/carry/perch.cpp37
-rw-r--r--engines/titanic/carry/perch.h50
-rw-r--r--engines/titanic/core/saveable_object.cpp40
-rw-r--r--engines/titanic/game/chicken_cooler.cpp6
-rw-r--r--engines/titanic/game/maitred_arm_holder.cpp37
-rw-r--r--engines/titanic/game/maitred_arm_holder.h50
-rw-r--r--engines/titanic/game/music_system_lock.cpp39
-rw-r--r--engines/titanic/game/music_system_lock.h54
-rw-r--r--engines/titanic/game/nose_holder.cpp44
-rw-r--r--engines/titanic/game/nose_holder.h55
-rw-r--r--engines/titanic/game/restaurant_cylinder_holder.cpp58
-rw-r--r--engines/titanic/game/restaurant_cylinder_holder.h60
-rw-r--r--engines/titanic/game/sgt/sgt_state_room.cpp10
-rw-r--r--engines/titanic/game/sgt/sgt_state_room.h4
-rw-r--r--engines/titanic/game/up_lighter.cpp51
-rw-r--r--engines/titanic/game/up_lighter.h57
-rw-r--r--engines/titanic/module.mk7
-rw-r--r--engines/titanic/titanic.cpp8
22 files changed, 783 insertions, 4 deletions
diff --git a/engines/titanic/carry/hose.cpp b/engines/titanic/carry/hose.cpp
index bb52ec34d5..1617feffc1 100644
--- a/engines/titanic/carry/hose.cpp
+++ b/engines/titanic/carry/hose.cpp
@@ -24,18 +24,32 @@
namespace Titanic {
+CHoseStatics *CHose::_statics;
+
+void CHose::init() {
+ _statics = new CHoseStatics();
+}
+
+void CHose::deinit() {
+ delete _statics;
+}
+
CHose::CHose() : CCarry(),
_string6("Succ-U-Bus auxiliary hose attachment incompatible with sliding glass cover.") {
}
void CHose::save(SimpleFile *file, int indent) const {
file->writeNumberLine(1, indent);
+ file->writeNumberLine(_statics->_v1, indent);
+ file->writeQuotedLine(_statics->_v2, indent);
file->writeQuotedLine(_string6, indent);
CCarry::save(file, indent);
}
void CHose::load(SimpleFile *file) {
file->readNumber();
+ _statics->_v1 = file->readNumber();
+ _statics->_v2 = file->readString();
_string6 = file->readString();
CCarry::load(file);
}
diff --git a/engines/titanic/carry/hose.h b/engines/titanic/carry/hose.h
index 87f47b3bc4..dc60f6832f 100644
--- a/engines/titanic/carry/hose.h
+++ b/engines/titanic/carry/hose.h
@@ -27,11 +27,20 @@
namespace Titanic {
+struct CHoseStatics {
+ int _v1;
+ CString _v2;
+};
+
class CHose : public CCarry {
-private:
+protected:
+ static CHoseStatics *_statics;
+
CString _string6;
public:
CHose();
+ static void init();
+ static void deinit();
/**
* Return the class name
diff --git a/engines/titanic/carry/hose_end.cpp b/engines/titanic/carry/hose_end.cpp
new file mode 100644
index 0000000000..97d75b0ac4
--- /dev/null
+++ b/engines/titanic/carry/hose_end.cpp
@@ -0,0 +1,43 @@
+/* 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/carry/hose_end.h"
+
+namespace Titanic {
+
+CHoseEnd::CHoseEnd() : CHose() {
+ _string6 = "Connection refused by remote hose.";
+}
+
+void CHoseEnd::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ file->writeQuotedLine(_string6, indent);
+ CHose::save(file, indent);
+}
+
+void CHoseEnd::load(SimpleFile *file) {
+ file->readNumber();
+ _string6 = file->readString();
+ CHose::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/carry/hose_end.h b/engines/titanic/carry/hose_end.h
new file mode 100644
index 0000000000..efce6b8db0
--- /dev/null
+++ b/engines/titanic/carry/hose_end.h
@@ -0,0 +1,52 @@
+/* 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_HOSE_END_H
+#define TITANIC_HOSE_END_H
+
+#include "titanic/carry/hose.h"
+
+namespace Titanic {
+
+class CHoseEnd : public CHose {
+public:
+ CHoseEnd();
+
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CHoseEnd"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_HOSE_END_H */
diff --git a/engines/titanic/carry/perch.cpp b/engines/titanic/carry/perch.cpp
new file mode 100644
index 0000000000..976921beb0
--- /dev/null
+++ b/engines/titanic/carry/perch.cpp
@@ -0,0 +1,37 @@
+/* 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/carry/perch.h"
+
+namespace Titanic {
+
+void CPerch::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ CCentralCore::save(file, indent);
+}
+
+void CPerch::load(SimpleFile *file) {
+ file->readNumber();
+ CCentralCore::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/carry/perch.h b/engines/titanic/carry/perch.h
new file mode 100644
index 0000000000..ce13dbe684
--- /dev/null
+++ b/engines/titanic/carry/perch.h
@@ -0,0 +1,50 @@
+/* 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_PERCH_H
+#define TITANIC_PERCH_H
+
+#include "titanic/carry/central_core.h"
+
+namespace Titanic {
+
+class CPerch : public CCentralCore {
+public:
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CPerch"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_PERCH_H */
diff --git a/engines/titanic/core/saveable_object.cpp b/engines/titanic/core/saveable_object.cpp
index 20d6fec86e..9267e17dae 100644
--- a/engines/titanic/core/saveable_object.cpp
+++ b/engines/titanic/core/saveable_object.cpp
@@ -37,6 +37,7 @@
#include "titanic/carry/hammer.h"
#include "titanic/carry/head_piece.h"
#include "titanic/carry/hose.h"
+#include "titanic/carry/hose_end.h"
#include "titanic/carry/key.h"
#include "titanic/carry/liftbot_head.h"
#include "titanic/carry/long_stick.h"
@@ -46,6 +47,7 @@
#include "titanic/carry/nose.h"
#include "titanic/carry/note.h"
#include "titanic/carry/parcel.h"
+#include "titanic/carry/perch.h"
#include "titanic/carry/phonograph_cylinder.h"
#include "titanic/carry/phonograph_ear.h"
#include "titanic/carry/photograph.h"
@@ -87,6 +89,7 @@
#include "titanic/game/cdrom_computer.h"
#include "titanic/game/cdrom_tray.h"
#include "titanic/game/cell_point_button.h"
+#include "titanic/game/chicken_cooler.h"
#include "titanic/game/chicken_dispensor.h"
#include "titanic/game/close_broken_pel.h"
#include "titanic/game/computer.h"
@@ -103,6 +106,8 @@
#include "titanic/game/emma_control.h"
#include "titanic/game/empty_nut_bowl.h"
#include "titanic/game/enter_exit_first_class_state.h"
+#include "titanic/game/enter_exit_view.h"
+#include "titanic/game/floor_indicator.h"
#include "titanic/game/games_console.h"
#include "titanic/game/hammer_dispensor_button.h"
#include "titanic/game/head_smash_event.h"
@@ -111,8 +116,11 @@
#include "titanic/game/light.h"
#include "titanic/game/light_switch.h"
#include "titanic/game/little_lift_button.h"
+#include "titanic/game/maitred_arm_holder.h"
#include "titanic/game/musical_instrument.h"
+#include "titanic/game/music_system_lock.h"
#include "titanic/game/no_nut_bowl.h"
+#include "titanic/game/nose_holder.h"
#include "titanic/game/null_port_hole.h"
#include "titanic/game/nut_replacer.h"
#include "titanic/game/play_music_button.h"
@@ -120,6 +128,7 @@
#include "titanic/game/port_hole.h"
#include "titanic/game/record_phonograph_button.h"
#include "titanic/game/replacement_ear.h"
+#include "titanic/game/restaurant_cylinder_holder.h"
#include "titanic/game/room_item.h"
#include "titanic/game/sauce_dispensor.h"
#include "titanic/game/season_background.h"
@@ -135,6 +144,8 @@
#include "titanic/game/sweet_bowl.h"
#include "titanic/game/television.h"
#include "titanic/game/third_class_canal.h"
+#include "titanic/game/throw_tv_down_well.h"
+#include "titanic/game/up_lighter.h"
#include "titanic/game/wheel_button.h"
#include "titanic/game/wheel_hotspot.h"
#include "titanic/game/wheel_spin.h"
@@ -148,6 +159,7 @@
#include "titanic/game/parrot/parrot_perch_holder.h"
#include "titanic/game/parrot/parrot_succubus.h"
#include "titanic/game/parrot/parrot_trigger.h"
+#include "titanic/game/parrot/player_meets_parrot.h"
#include "titanic/game/pet/pet.h"
#include "titanic/game/pet/pet_class1.h"
#include "titanic/game/pet/pet_class2.h"
@@ -257,6 +269,7 @@ DEFFN(CBridgePiece);
DEFFN(CCarryParrot);
DEFFN(CCentralCore);
DEFFN(CChicken);
+DEFFN(CChickenCooler);
DEFFN(CCrushedTV);
DEFFN(CEar);
DEFFN(CEye);
@@ -266,13 +279,17 @@ DEFFN(CGlass);
DEFFN(CHammer);
DEFFN(CHeadPiece);
DEFFN(CHose);
+DEFFN(CHoseEnd);
DEFFN(CKey);
DEFFN(CLiftbotHead);
DEFFN(CLongStick);
DEFFN(CMagazine);
+DEFFN(CMouth);
DEFFN(CNapkin);
+DEFFN(CNose);
DEFFN(CNote);
DEFFN(CParcel);
+DEFFN(CPerch);
DEFFN(CPhonographCylinder);
DEFFN(CPhonographEar);
DEFFN(CPhotograph);
@@ -328,6 +345,8 @@ DEFFN(CEjectPhonographButton);
DEFFN(CEmmaControl);
DEFFN(CEmptyNutBowl);
DEFFN(CEnterExitFirstClassState);
+DEFFN(CEnterExitView);
+DEFFN(CFloorIndicator);
DEFFN(CGamesConsole);
DEFFN(CHammerDispensorButton);
DEFFN(CHeadSmashEvent);
@@ -336,8 +355,11 @@ DEFFN(CLemonDispensor);
DEFFN(CLight);
DEFFN(CLightSwitch);
DEFFN(CLittleLiftButton);
+DEFFN(CMaitreDArmHolder);
DEFFN(CMusicalInstrument);
+DEFFN(CMusicSystemLock);
DEFFN(CNoNutBowl);
+DEFFN(CNoseHolder);
DEFFN(CNullPortHole);
DEFFN(CNutReplacer);
DEFFN(CPlayMusicButton);
@@ -345,6 +367,7 @@ DEFFN(CPlayOnAct);
DEFFN(CPortHole);
DEFFN(CRecordPhonographButton);
DEFFN(CReplacementEar);
+DEFFN(CRestaurantCylinderHolder);
DEFFN(CRoomItem);
DEFFN(CSauceDispensor);
DEFFN(CSeasonBackground);
@@ -360,6 +383,8 @@ DEFFN(CSUBGlass);
DEFFN(CSweetBowl);
DEFFN(CTelevision);
DEFFN(CThirdClassCanal);
+DEFFN(CThrowTVDownWell);
+DEFFN(CUpLighter);
DEFFN(CWheelButton);
DEFFN(CWheelHotSpot);
DEFFN(CWheelSpin);
@@ -373,6 +398,7 @@ DEFFN(CParrotNutEater);
DEFFN(CParrotPerchHolder);
DEFFN(CParrotSuccUBus);
DEFFN(CParrotTrigger);
+DEFFN(CPlayerMeetsParrot);
DEFFN(CPET);
DEFFN(CPETClass1);
DEFFN(CPETClass2);
@@ -648,6 +674,7 @@ void CSaveableObject::initClassList() {
ADDFN(CCarryParrot);
ADDFN(CCentralCore);
ADDFN(CChicken);
+ ADDFN(CChickenCooler);
ADDFN(CCrushedTV);
ADDFN(CEar);
ADDFN(CEye);
@@ -657,13 +684,17 @@ void CSaveableObject::initClassList() {
ADDFN(CHammer);
ADDFN(CHeadPiece);
ADDFN(CHose);
+ ADDFN(CHoseEnd);
ADDFN(CKey);
ADDFN(CLiftbotHead);
ADDFN(CLongStick);
ADDFN(CMagazine);
+ ADDFN(CMouth);
ADDFN(CNapkin);
+ ADDFN(CNose);
ADDFN(CNote);
ADDFN(CParcel);
+ ADDFN(CPerch);
ADDFN(CPhonographCylinder);
ADDFN(CPhonographEar);
ADDFN(CPhotograph);
@@ -720,6 +751,8 @@ void CSaveableObject::initClassList() {
ADDFN(CEmmaControl);
ADDFN(CEmptyNutBowl);
ADDFN(CEnterExitFirstClassState);
+ ADDFN(CEnterExitView);
+ ADDFN(CFloorIndicator);
ADDFN(CGamesConsole);
ADDFN(CHammerDispensorButton);
ADDFN(CHeadSmashEvent);
@@ -728,8 +761,11 @@ void CSaveableObject::initClassList() {
ADDFN(CLight);
ADDFN(CLightSwitch);
ADDFN(CLittleLiftButton);
+ ADDFN(CMaitreDArmHolder);
ADDFN(CMusicalInstrument);
+ ADDFN(CMusicSystemLock);
ADDFN(CNoNutBowl);
+ ADDFN(CNoseHolder);
ADDFN(CNullPortHole);
ADDFN(CNutReplacer);
ADDFN(CPETPosition);
@@ -738,6 +774,7 @@ void CSaveableObject::initClassList() {
ADDFN(CPortHole);
ADDFN(CRecordPhonographButton);
ADDFN(CReplacementEar);
+ ADDFN(CRestaurantCylinderHolder);
ADDFN(CRoomItem);
ADDFN(CSauceDispensor);
ADDFN(CSeasonBackground);
@@ -753,6 +790,8 @@ void CSaveableObject::initClassList() {
ADDFN(CSweetBowl);
ADDFN(CTelevision);
ADDFN(CThirdClassCanal);
+ ADDFN(CThrowTVDownWell);
+ ADDFN(CUpLighter);
ADDFN(CWheelButton);
ADDFN(CWheelHotSpot);
ADDFN(CWheelSpin);
@@ -766,6 +805,7 @@ void CSaveableObject::initClassList() {
ADDFN(CParrotPerchHolder);
ADDFN(CParrotSuccUBus);
ADDFN(CParrotTrigger);
+ ADDFN(CPlayerMeetsParrot);
ADDFN(CPET);
ADDFN(CPETClass1);
ADDFN(CPETClass2);
diff --git a/engines/titanic/game/chicken_cooler.cpp b/engines/titanic/game/chicken_cooler.cpp
index feb3b4cade..335ed36fb6 100644
--- a/engines/titanic/game/chicken_cooler.cpp
+++ b/engines/titanic/game/chicken_cooler.cpp
@@ -26,11 +26,17 @@ namespace Titanic {
void CChickenCooler::save(SimpleFile *file, int indent) const {
file->writeNumberLine(1, indent);
+ file->writeNumberLine(_fieldBC, indent);
+ file->writeNumberLine(_fieldC0, indent);
+
CGameObject::save(file, indent);
}
void CChickenCooler::load(SimpleFile *file) {
file->readNumber();
+ _fieldBC = file->readNumber();
+ _fieldC0 = file->readNumber();
+
CGameObject::load(file);
}
diff --git a/engines/titanic/game/maitred_arm_holder.cpp b/engines/titanic/game/maitred_arm_holder.cpp
new file mode 100644
index 0000000000..81ad43556b
--- /dev/null
+++ b/engines/titanic/game/maitred_arm_holder.cpp
@@ -0,0 +1,37 @@
+/* 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/maitred_arm_holder.h"
+
+namespace Titanic {
+
+void CMaitreDArmHolder::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ CDropTarget::save(file, indent);
+}
+
+void CMaitreDArmHolder::load(SimpleFile *file) {
+ file->readNumber();
+ CGameObject::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/game/maitred_arm_holder.h b/engines/titanic/game/maitred_arm_holder.h
new file mode 100644
index 0000000000..b838109fa3
--- /dev/null
+++ b/engines/titanic/game/maitred_arm_holder.h
@@ -0,0 +1,50 @@
+/* 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_MAITRED_ARM_HOLDER_H
+#define TITANIC_MAITRED_ARM_HOLDER_H
+
+#include "titanic/core/drop_target.h"
+
+namespace Titanic {
+
+class CMaitreDArmHolder : public CDropTarget {
+public:
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CMaitreDArmHolder"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_MAITRED_ARM_HOLDER_H */
diff --git a/engines/titanic/game/music_system_lock.cpp b/engines/titanic/game/music_system_lock.cpp
new file mode 100644
index 0000000000..a5419d983f
--- /dev/null
+++ b/engines/titanic/game/music_system_lock.cpp
@@ -0,0 +1,39 @@
+/* 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/music_system_lock.h"
+
+namespace Titanic {
+
+void CMusicSystemLock::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_value, indent);
+ CDropTarget::save(file, indent);
+}
+
+void CMusicSystemLock::load(SimpleFile *file) {
+ file->readNumber();
+ _value = file->readNumber();
+ CGameObject::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/game/music_system_lock.h b/engines/titanic/game/music_system_lock.h
new file mode 100644
index 0000000000..98dc68b0dd
--- /dev/null
+++ b/engines/titanic/game/music_system_lock.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_MUSIC_SYSTEM_LOCK_H
+#define TITANIC_MUSIC_SYSTEM_LOCK_H
+
+#include "titanic/core/drop_target.h"
+
+namespace Titanic {
+
+class CMusicSystemLock : public CDropTarget {
+private:
+ int _value;
+public:
+ CMusicSystemLock() : CDropTarget(), _value(0) {}
+
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CMusicSystemLock"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_MUSIC_SYSTEM_LOCK_H */
diff --git a/engines/titanic/game/nose_holder.cpp b/engines/titanic/game/nose_holder.cpp
new file mode 100644
index 0000000000..ba512d015a
--- /dev/null
+++ b/engines/titanic/game/nose_holder.cpp
@@ -0,0 +1,44 @@
+/* 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/nose_holder.h"
+
+namespace Titanic {
+
+CNoseHolder::CNoseHolder() : CDropTarget(), _field118(0), _field11C(0) {
+}
+
+void CNoseHolder::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_field11C, indent);
+
+ CDropTarget::save(file, indent);
+}
+
+void CNoseHolder::load(SimpleFile *file) {
+ file->readNumber();
+ _field11C = file->readNumber();
+
+ CDropTarget::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/game/nose_holder.h b/engines/titanic/game/nose_holder.h
new file mode 100644
index 0000000000..3512e62bb4
--- /dev/null
+++ b/engines/titanic/game/nose_holder.h
@@ -0,0 +1,55 @@
+/* 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_NOSE_HOLDER_H
+#define TITANIC_NOSE_HOLDER_H
+
+#include "titanic/core/drop_target.h"
+
+namespace Titanic {
+
+class CNoseHolder : public CDropTarget {
+private:
+ int _field118;
+ int _field11C;
+public:
+ CNoseHolder();
+
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CNoseHolder"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_NOSE_HOLDER_H */
diff --git a/engines/titanic/game/restaurant_cylinder_holder.cpp b/engines/titanic/game/restaurant_cylinder_holder.cpp
new file mode 100644
index 0000000000..1662064d17
--- /dev/null
+++ b/engines/titanic/game/restaurant_cylinder_holder.cpp
@@ -0,0 +1,58 @@
+/* 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/restaurant_cylinder_holder.h"
+
+namespace Titanic {
+
+CRestaurantCylinderHolder::CRestaurantCylinderHolder() : CDropTarget(),
+ _field118(0), _field11C(0), _field12C(0), _field130(0),
+ _string6("z#61.wav"), _field140(1) {
+}
+
+void CRestaurantCylinderHolder::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_field118, indent);
+ file->writeNumberLine(_field11C, indent);
+ file->writeQuotedLine(_string5, indent);
+ file->writeNumberLine(_field12C, indent);
+ file->writeNumberLine(_field130, indent);
+ file->writeQuotedLine(_string6, indent);
+ file->writeNumberLine(_field140, indent);
+
+ CDropTarget::save(file, indent);
+}
+
+void CRestaurantCylinderHolder::load(SimpleFile *file) {
+ file->readNumber();
+ _field118 = file->readNumber();
+ _field11C = file->readNumber();
+ _string5 = file->readString();
+ _field12C = file->readNumber();
+ _field130 = file->readNumber();
+ _string6 = file->readString();
+ _field140 = file->readNumber();
+
+ CDropTarget::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/game/restaurant_cylinder_holder.h b/engines/titanic/game/restaurant_cylinder_holder.h
new file mode 100644
index 0000000000..29e2958f98
--- /dev/null
+++ b/engines/titanic/game/restaurant_cylinder_holder.h
@@ -0,0 +1,60 @@
+/* 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_RESTAURANT_CYLINDER_HOLDER_H
+#define TITANIC_RESTAURANT_CYLINDER_HOLDER_H
+
+#include "titanic/core/drop_target.h"
+
+namespace Titanic {
+
+class CRestaurantCylinderHolder : public CDropTarget {
+private:
+ int _field118;
+ int _field11C;
+ CString _string5;
+ int _field12C;
+ int _field130;
+ CString _string6;
+ int _field140;
+public:
+ CRestaurantCylinderHolder();
+
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CRestaurantCylinderHolder"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_RESTAURANT_CYLINDER_HOLDER_H */
diff --git a/engines/titanic/game/sgt/sgt_state_room.cpp b/engines/titanic/game/sgt/sgt_state_room.cpp
index d244309351..e0d8de1282 100644
--- a/engines/titanic/game/sgt/sgt_state_room.cpp
+++ b/engines/titanic/game/sgt/sgt_state_room.cpp
@@ -24,7 +24,15 @@
namespace Titanic {
-CSGTStateRoomStatics *_statics;
+CSGTStateRoomStatics *CSGTStateRoom::_statics;
+
+void CSGTStateRoom::init() {
+ _statics = new CSGTStateRoomStatics();
+}
+
+void CSGTStateRoom::deinit() {
+ delete _statics;
+}
CSGTStateRoom::CSGTStateRoom() : CBackground(), _fieldE0(1),
_fieldE4(1), _fieldE8(0), _fieldEC(1), _fieldF0(1) {
diff --git a/engines/titanic/game/sgt/sgt_state_room.h b/engines/titanic/game/sgt/sgt_state_room.h
index ba70e541a3..f67a916f1f 100644
--- a/engines/titanic/game/sgt/sgt_state_room.h
+++ b/engines/titanic/game/sgt/sgt_state_room.h
@@ -46,7 +46,7 @@ struct CSGTStateRoomStatics {
class CSGTStateRoom : public CBackground {
private:
- CSGTStateRoomStatics *_statics;
+ static CSGTStateRoomStatics *_statics;
private:
int _fieldE0;
int _fieldE4;
@@ -55,6 +55,8 @@ private:
int _fieldF0;
public:
CSGTStateRoom();
+ static void init();
+ static void deinit();
/**
* Return the class name
diff --git a/engines/titanic/game/up_lighter.cpp b/engines/titanic/game/up_lighter.cpp
new file mode 100644
index 0000000000..0e6c4d88cc
--- /dev/null
+++ b/engines/titanic/game/up_lighter.cpp
@@ -0,0 +1,51 @@
+/* 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/up_lighter.h"
+
+namespace Titanic {
+
+CUpLighter::CUpLighter() : CDropTarget(), _field118(0),
+ _field11C(0), _field120(0), _field124(0) {
+}
+
+void CUpLighter::save(SimpleFile *file, int indent) const {
+ file->writeNumberLine(1, indent);
+ file->writeNumberLine(_field118, indent);
+ file->writeNumberLine(_field11C, indent);
+ file->writeNumberLine(_field120, indent);
+ file->writeNumberLine(_field124, indent);
+
+ CDropTarget::save(file, indent);
+}
+
+void CUpLighter::load(SimpleFile *file) {
+ file->readNumber();
+ _field118 = file->readNumber();
+ _field11C = file->readNumber();
+ _field120 = file->readNumber();
+ _field124 = file->readNumber();
+
+ CDropTarget::load(file);
+}
+
+} // End of namespace Titanic
diff --git a/engines/titanic/game/up_lighter.h b/engines/titanic/game/up_lighter.h
new file mode 100644
index 0000000000..e7c6cdf38e
--- /dev/null
+++ b/engines/titanic/game/up_lighter.h
@@ -0,0 +1,57 @@
+/* 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_UP_LIGHTER_H
+#define TITANIC_UP_LIGHTER_H
+
+#include "titanic/core/drop_target.h"
+
+namespace Titanic {
+
+class CUpLighter : public CDropTarget {
+private:
+ int _field118;
+ int _field11C;
+ int _field120;
+ int _field124;
+public:
+ CUpLighter();
+
+ /**
+ * Return the class name
+ */
+ virtual const char *getClassName() const { return "CUpLighter"; }
+
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file);
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_UP_LIGHTER_H */
diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk
index 5894bf3317..f9927867b5 100644
--- a/engines/titanic/module.mk
+++ b/engines/titanic/module.mk
@@ -33,6 +33,7 @@ MODULE_OBJS := \
carry/hammer.o \
carry/head_piece.o \
carry/hose.o \
+ carry/hose_end.o \
carry/key.o \
carry/liftbot_head.o \
carry/long_stick.o \
@@ -42,6 +43,7 @@ MODULE_OBJS := \
carry/nose.o \
carry/note.o \
carry/parcel.o \
+ carry/perch.o \
carry/phonograph_cylinder.o \
carry/phonograph_ear.o \
carry/photograph.o \
@@ -151,11 +153,14 @@ MODULE_OBJS := \
game/little_lift_button.o \
game/long_stick_dispenser.o \
game/mail_man.o \
+ game/maitred_arm_holder.o \
game/missiveomat.o \
game/movie_tester.o \
+ game/music_system_lock.o \
game/musical_instrument.o \
game/navigation_computer.o \
game/no_nut_bowl.o \
+ game/nose_holder.o \
game/null_port_hole.o \
game/nut_replacer.o \
game/pet_controler.o \
@@ -170,6 +175,7 @@ MODULE_OBJS := \
game/record_phonograph_button.o \
game/replacement_ear.o \
game/reserved_table.o \
+ game/restaurant_cylinder_holder.o \
game/room_item.o \
game/sauce_dispensor.o \
game/search_point.o \
@@ -195,6 +201,7 @@ MODULE_OBJS := \
game/tow_parrot_nav.o \
game/throw_tv_down_well.o \
game/titania_still_control.o \
+ game/up_lighter.o \
game/wheel_button.o \
game/wheel_hotspot.o \
game/wheel_spin.o \
diff --git a/engines/titanic/titanic.cpp b/engines/titanic/titanic.cpp
index b3aae7bf1b..62a0ae25c1 100644
--- a/engines/titanic/titanic.cpp
+++ b/engines/titanic/titanic.cpp
@@ -29,8 +29,10 @@
#include "graphics/thumbnail.h"
#include "titanic/titanic.h"
#include "titanic/core/saveable_object.h"
-#include "titanic/game/parrot/parrot_lobby_object.h"
#include "titanic/game/enter_exit_first_class_state.h"
+#include "titanic/game/parrot/parrot_lobby_object.h"
+#include "titanic/game/sgt/sgt_state_room.h"
+#include "titanic/carry/hose.h"
namespace Titanic {
@@ -56,6 +58,8 @@ void TitanicEngine::initialize() {
CSaveableObject::initClassList();
CParrotLobbyObject::init();
CEnterExitFirstClassState::init();
+ CHose::init();
+ CSGTStateRoom::init();
_screenManager = new OSScreenManager(this);
_window = new CMainGameWindow(this);
@@ -64,6 +68,8 @@ void TitanicEngine::initialize() {
void TitanicEngine::deinitialize() {
CEnterExitFirstClassState::deinit();
+ CHose::deinit();
+ CSGTStateRoom::deinit();
}
Common::Error TitanicEngine::run() {