aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/carry/crushed_tv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/carry/crushed_tv.cpp')
-rw-r--r--engines/titanic/carry/crushed_tv.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/engines/titanic/carry/crushed_tv.cpp b/engines/titanic/carry/crushed_tv.cpp
index a0a7ee7a43..5abc8fac98 100644
--- a/engines/titanic/carry/crushed_tv.cpp
+++ b/engines/titanic/carry/crushed_tv.cpp
@@ -21,9 +21,16 @@
*/
#include "titanic/carry/crushed_tv.h"
+#include "titanic/npcs/character.h"
namespace Titanic {
+BEGIN_MESSAGE_MAP(CCrushedTV, CCarry)
+ ON_MESSAGE(ActMsg)
+ ON_MESSAGE(UseWithCharMsg)
+ ON_MESSAGE(MouseDragStartMsg)
+END_MESSAGE_MAP()
+
CCrushedTV::CCrushedTV() : CCarry() {
}
@@ -37,4 +44,37 @@ void CCrushedTV::load(SimpleFile *file) {
CCarry::load(file);
}
+bool CCrushedTV::ActMsg(CActMsg *msg) {
+ if (msg->_action == "SmashTV") {
+ setVisible(true);
+ _fieldE0 = 1;
+ }
+
+ return true;
+}
+
+bool CCrushedTV::UseWithCharMsg(CUseWithCharMsg *msg) {
+ if (msg->_character->getName() == "Barbot" && msg->_character->_visible) {
+ setVisible(false);
+ CActMsg actMsg("CrushedTV");
+ actMsg.execute(msg->_character);
+ return true;
+ } else {
+ return CCarry::UseWithCharMsg(msg);
+ }
+}
+
+bool CCrushedTV::MouseDragStartMsg(CMouseDragStartMsg *msg) {
+ if (!checkStartDragging(msg)) {
+ return false;
+ } else if (compareViewNameTo("BottomOfWell.Node 7.N")) {
+ changeView("BottomOfWell.Node 12.N", "");
+ CActMsg actMsg("TelevisionTaken");
+ actMsg.execute("BOWTelevisionMonitor");
+ }
+
+ return CCarry::MouseDragStartMsg(msg);
+}
+
+
} // End of namespace Titanic