From 940c686858d9a0bf92c1473b9a81653a9937b88a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 7 Sep 2013 22:57:56 +0300 Subject: [PATCH] FULLPIPE: Implement CInteraction::isOverlapping() --- engines/fullpipe/interaction.cpp | 17 +++++++++++++---- engines/fullpipe/interaction.h | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp index 231fe57afa6..f9ea41b2aec 100644 --- a/engines/fullpipe/interaction.cpp +++ b/engines/fullpipe/interaction.cpp @@ -72,10 +72,8 @@ void CInteractionController::sortInteractions(int sceneId) { Common::sort(_interactions.begin(), _interactions.end(), CInteractionController::compareInteractions); } -int CInteractionController::handleInteraction(GameObject *subject, GameObject *object, int invId) { - warning("STUB: CInteractionController::handleInteraction()"); - - return 0; +bool CInteractionController::handleInteraction(GameObject *subj, GameObject *obj, int invId) { + return true; } CInteraction::CInteraction() { @@ -172,6 +170,17 @@ bool CInteraction::canInteract(GameObject *obj1, GameObject *obj2, int invId) { return true; } +bool CInteraction::isOverlapping(StaticANIObject *subj, StaticANIObject *obj) { + if (abs(_xOffs + obj->_ox - subj->_ox) <= 1 + && abs(obj->_oy + _yOffs - subj->_oy) <= 1) { + if (!this->_staticsId2 || subj->_statics != 0 && subj->_statics->_staticsId == _staticsId2) { + if (!_staticsId1 || !(_flags & 1) || obj->_statics != 0 && obj->_statics->_staticsId == _staticsId1) + return true; + } + } + return false; +} + bool EntranceInfo::load(MfcArchive &file) { debug(5, "EntranceInfo::load()"); diff --git a/engines/fullpipe/interaction.h b/engines/fullpipe/interaction.h index b336641dc1e..d5ea5eaf9ca 100644 --- a/engines/fullpipe/interaction.h +++ b/engines/fullpipe/interaction.h @@ -54,6 +54,7 @@ class CInteraction : public CObject { CInteraction(); virtual bool load(MfcArchive &file); bool canInteract(GameObject *obj1, GameObject *obj2, int invId); + bool isOverlapping(StaticANIObject *subj, StaticANIObject *obj); }; class CInteractionController : public CObject { @@ -75,7 +76,7 @@ class CInteractionController : public CObject { void sortInteractions(int sceneId); - int handleInteraction(GameObject *subject, GameObject *object, int invId); + bool handleInteraction(GameObject *subj, GameObject *obj, int invId); }; struct EntranceInfo {