aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/pet_control/pet_control.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2016-04-01 13:40:20 -0400
committerPaul Gilbert2016-04-01 13:40:20 -0400
commit9affb67a3c83ead5ed4e3be2ea4d369a9c61d6f3 (patch)
tree2c84d70384b6891ae2f3016f38a2c1d87cf87fb2 /engines/titanic/pet_control/pet_control.cpp
parent883e198eb3c5e54c2c3bc9b01f65f3420840873f (diff)
downloadscummvm-rg350-9affb67a3c83ead5ed4e3be2ea4d369a9c61d6f3.tar.gz
scummvm-rg350-9affb67a3c83ead5ed4e3be2ea4d369a9c61d6f3.tar.bz2
scummvm-rg350-9affb67a3c83ead5ed4e3be2ea4d369a9c61d6f3.zip
TITANIC: Implement PET message handlers
Diffstat (limited to 'engines/titanic/pet_control/pet_control.cpp')
-rw-r--r--engines/titanic/pet_control/pet_control.cpp186
1 files changed, 177 insertions, 9 deletions
diff --git a/engines/titanic/pet_control/pet_control.cpp b/engines/titanic/pet_control/pet_control.cpp
index f316cff8e6..2faefb3b21 100644
--- a/engines/titanic/pet_control/pet_control.cpp
+++ b/engines/titanic/pet_control/pet_control.cpp
@@ -28,9 +28,10 @@
namespace Titanic {
CPetControl::CPetControl() : CGameObject(),
- _currentArea(PET_CONVERSATION), _fieldC0(0), _locked(0), _fieldC8(0),
- _treeItem1(nullptr), _treeItem2(nullptr), _hiddenRoom(nullptr),
- _drawBounds(20, 350, 620, 480) {
+ _currentArea(PET_CONVERSATION), _fieldC0(0), _locked(0), _fieldC8(0),
+ _treeItem1(nullptr), _treeItem2(nullptr), _hiddenRoom(nullptr),
+ _drawBounds(20, 350, 620, 480) {
+ _timers[0] = _timers[1] = nullptr;
}
void CPetControl::save(SimpleFile *file, int indent) const {
@@ -383,30 +384,196 @@ bool CPetControl::handleMessage(CMouseButtonDownMsg &msg) {
}
makeDirty();
+ return result;
}
bool CPetControl::handleMessage(CMouseDragStartMsg &msg) {
- return true;
+ if (!containsPt(msg._mousePos) || getC0())
+ return false;
+
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ return _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ return _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ return _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ return _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ return _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ return _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ return _sub7.handleMessage(msg);
+ break;
+ default:
+ return false;
+ }
}
bool CPetControl::handleMessage(CMouseDragMoveMsg &msg) {
- return true;
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ return _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ return _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ return _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ return _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ return _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ return _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ return _sub7.handleMessage(msg);
+ break;
+ default:
+ return false;
+ }
}
bool CPetControl::handleMessage(CMouseDragEndMsg &msg) {
- return true;
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ return _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ return _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ return _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ return _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ return _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ return _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ return _sub7.handleMessage(msg);
+ break;
+ default:
+ return false;
+ }
}
bool CPetControl::handleMessage(CMouseButtonUpMsg &msg) {
- return true;
+ if (!containsPt(msg._mousePos) || getC0())
+ return false;
+
+ bool result = false;
+ if (isUnlocked())
+ result = _frame.handleMessage(msg);
+
+ if (!result) {
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ result = _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ result = _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ result = _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ result = _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ result = _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ result = _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ result = _sub7.handleMessage(msg);
+ break;
+ default:
+ break;
+ }
+ }
+
+ makeDirty();
+ return result;
}
bool CPetControl::handleMessage(CMouseDoubleClickMsg &msg) {
- return true;
+ if (!containsPt(msg._mousePos) || getC0())
+ return false;
+
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ return _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ return _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ return _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ return _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ return _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ return _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ return _sub7.handleMessage(msg);
+ break;
+ default:
+ return false;
+ }
}
bool CPetControl::handleMessage(CKeyCharMsg &msg) {
- return true;
+ if (getC0())
+ return false;
+
+ switch (_currentArea) {
+ case PET_INVENTORY:
+ return _inventory.handleMessage(msg);
+ break;
+ case PET_CONVERSATION:
+ return _conversations.handleMessage(msg);
+ break;
+ case PET_REMOTE:
+ return _remote.handleMessage(msg);
+ break;
+ case PET_ROOMS:
+ return _rooms.handleMessage(msg);
+ break;
+ case PET_SAVE:
+ return _saves.handleMessage(msg);
+ break;
+ case PET_5:
+ return _sub5.handleMessage(msg);
+ break;
+ case PET_6:
+ return _sub7.handleMessage(msg);
+ break;
+ default:
+ return false;
+ }
}
bool CPetControl::handleMessage(CVirtualKeyCharMsg &msg) {
@@ -471,6 +638,7 @@ bool CPetControl::handleMessage(CVirtualKeyCharMsg &msg) {
}
bool CPetControl::handleMessage(CTimerMsg &msg) {
+ warning("TODO: CPetControl::CTimerMsg");
return true;
}