diff options
| -rw-r--r-- | engines/sci/gui/gui_gfx.cpp | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/engines/sci/gui/gui_gfx.cpp b/engines/sci/gui/gui_gfx.cpp index 76ade972d7..80f5a3807f 100644 --- a/engines/sci/gui/gui_gfx.cpp +++ b/engines/sci/gui/gui_gfx.cpp @@ -1067,21 +1067,25 @@ void SciGuiGfx::AnimateDisposeLastCast() {  		//_lastCast->DeleteList();  } +enum { +	SCI_ANIMATE_SIGNAL_FROZEN       = 0x0100 +}; +  void SciGuiGfx::AnimateInvoke(List *list, int argc, reg_t *argv) { +	SegManager *segMan = _s->_segMan;  	reg_t curAddress = list->first;  	Node *curNode = _s->_segMan->lookupNode(curAddress);  	reg_t curObject; -	//uint16 mask; +	uint16 signal;  	while (curNode) {  		curObject = curNode->value; -//      FIXME: check what this code does and remove it or fix it, gregs engine had this check included -//		mask = cobj[_objOfs[2]]; -//		if ((mask & 0x100) == 0) { +		signal = GET_SEL32V(curObject, signal); +		if (!(signal & SCI_ANIMATE_SIGNAL_FROZEN)) {  			invoke_selector(_s, curObject, _s->_kernel->_selectorCache.doit, kContinueOnInvalidSelector, argv, argc, __FILE__, __LINE__, 0);  			// Lookup node again, since the nodetable it was in may have been reallocated  			curNode = _s->_segMan->lookupNode(curAddress); -//		} +		}  		curAddress = curNode->succ;  		curNode = _s->_segMan->lookupNode(curAddress);  	} | 
