[Scummvm-cvs-logs] CVS: scummvm/scumm script.cpp,1.104,1.105

Max Horn fingolfin at users.sourceforge.net
Thu May 29 03:15:05 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv27881

Modified Files:
	script.cpp 
Log Message:
fixed V2 script freezing (bug #745421)

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -d -r1.104 -r1.105
--- script.cpp	28 May 2003 20:01:45 -0000	1.104
+++ script.cpp	29 May 2003 10:14:53 -0000	1.105
@@ -653,6 +653,16 @@
 void Scumm::freezeScripts(int flag) {
 	int i;
 
+	if (_features & GF_AFTER_V2) {
+		for (i = 0; i < NUM_SCRIPT_SLOT; i++) {
+			if (_currentScript != i && vm.slot[i].status != ssDead && !vm.slot[i].freezeResistant) {
+				vm.slot[i].status |= 0x80;
+				vm.slot[i].freezeCount = 1;
+			}
+		}
+		return;
+	}
+
 	for (i = 0; i < NUM_SCRIPT_SLOT; i++) {
 		if (_currentScript != i && vm.slot[i].status != ssDead && (!vm.slot[i].freezeResistant || flag >= 0x80)) {
 			vm.slot[i].status |= 0x80;
@@ -671,6 +681,15 @@
 
 void Scumm::unfreezeScripts() {
 	int i;
+
+	if (_features & GF_AFTER_V2) {
+		for (i = 0; i < NUM_SCRIPT_SLOT; i++) {
+			vm.slot[i].status &= 0x7F;
+			vm.slot[i].freezeCount = 0;
+		}
+		return;
+	}
+	
 	for (i = 0; i < NUM_SCRIPT_SLOT; i++) {
 		if (vm.slot[i].status & 0x80) {
 			if (!--vm.slot[i].freezeCount) {
@@ -684,6 +703,7 @@
 			_sentence[i].freezeCount--;
 	}
 }
+
 
 void Scumm::runAllScripts() {
 	int i;





More information about the Scummvm-git-logs mailing list