diff options
author | Paul Gilbert | 2016-04-01 13:40:20 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-04-01 13:40:20 -0400 |
commit | 9affb67a3c83ead5ed4e3be2ea4d369a9c61d6f3 (patch) | |
tree | 2c84d70384b6891ae2f3016f38a2c1d87cf87fb2 /engines/titanic/pet_control/pet_control.cpp | |
parent | 883e198eb3c5e54c2c3bc9b01f65f3420840873f (diff) | |
download | scummvm-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.cpp | 186 |
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; } |