[Scummvm-cvs-logs] SF.net SVN: scummvm:[44782] scummvm/trunk/engines/sci/gui
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Thu Oct 8 13:23:53 CEST 2009
Revision: 44782
http://scummvm.svn.sourceforge.net/scummvm/?rev=44782&view=rev
Author: m_kiewitz
Date: 2009-10-08 11:23:53 +0000 (Thu, 08 Oct 2009)
Log Message:
-----------
SCI/newgui: kAnimate - _delete invoking implemented
Modified Paths:
--------------
scummvm/trunk/engines/sci/gui/gui.cpp
scummvm/trunk/engines/sci/gui/gui_gfx.cpp
scummvm/trunk/engines/sci/gui/gui_gfx.h
Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp 2009-10-08 10:35:12 UTC (rev 44781)
+++ scummvm/trunk/engines/sci/gui/gui.cpp 2009-10-08 11:23:53 UTC (rev 44782)
@@ -414,7 +414,7 @@
//_gfx->AnimateUpdateScreen();
_screen->copyToScreen();
- _gfx->AnimateRestoreAndDelete();
+ _gfx->AnimateRestoreAndDelete(list, argc, argv);
_gfx->SetPort(oldPort);
}
Modified: scummvm/trunk/engines/sci/gui/gui_gfx.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_gfx.cpp 2009-10-08 10:35:12 UTC (rev 44781)
+++ scummvm/trunk/engines/sci/gui/gui_gfx.cpp 2009-10-08 11:23:53 UTC (rev 44782)
@@ -1076,7 +1076,8 @@
SCI_ANIMATE_MASK_ALWAYSUPDATE = 0x0020,
SCI_ANIMATE_MASK_FORCEUPDATE = 0x0040,
SCI_ANIMATE_MASK_REMOVEVIEW = 0x0080,
- SCI_ANIMATE_MASK_FROZEN = 0x0100
+ SCI_ANIMATE_MASK_FROZEN = 0x0100,
+ SCI_ANIMATE_MASK_DISPOSEME = 0x8000
};
void SciGuiGfx::AnimateInvoke(List *list, int argc, reg_t *argv) {
@@ -1259,7 +1260,25 @@
}
}
-void SciGuiGfx::AnimateRestoreAndDelete() {
+void SciGuiGfx::AnimateRestoreAndDelete(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;
+
+ while (curNode) {
+ curObject = curNode->value;
+ mask = GET_SEL32V(curObject, signal);
+ if (mask & SCI_ANIMATE_MASK_DISPOSEME) {
+ // Call .delete_ method of that object
+ invoke_selector(_s, curObject, _s->_kernel->_selectorCache.delete_, 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);
+ }
}
void SciGuiGfx::SetNowSeen(reg_t objectReference) {
Modified: scummvm/trunk/engines/sci/gui/gui_gfx.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_gfx.h 2009-10-08 10:35:12 UTC (rev 44781)
+++ scummvm/trunk/engines/sci/gui/gui_gfx.h 2009-10-08 11:23:53 UTC (rev 44782)
@@ -110,7 +110,7 @@
Common::List<GuiAnimateList> *AnimateMakeSortedList(List *list);
void AnimateUpdate();
void AnimateDrawCels(List *list);
- void AnimateRestoreAndDelete();
+ void AnimateRestoreAndDelete(List *list, int argc, reg_t *argv);
void SetNowSeen(reg_t objectReference);
GuiPort *_menuPort;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list