aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/interaction.cpp17
-rw-r--r--engines/fullpipe/interaction.h3
2 files changed, 15 insertions, 5 deletions
diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp
index 231fe57afa..f9ea41b2ae 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 b336641dc1..d5ea5eaf9c 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 {