[Scummvm-cvs-logs] CVS: scummvm/scumm script_v6.cpp,1.61,1.62

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Feb 22 03:57:06 CET 2003


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

Modified Files:
	script_v6.cpp 
Log Message:
some cleanup a pickVarRandom func

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- script_v6.cpp	21 Feb 2003 00:42:51 -0000	1.61
+++ script_v6.cpp	22 Feb 2003 11:56:25 -0000	1.62
@@ -2950,26 +2950,27 @@
 	push(readVar(0));
 }
 
-static void sub_FEE_78D2(int num, int16 *arg_1, int16 *arg_2) {
+static void sub_FEE_78D2(int num, int &arg1, int &arg2) {
 	byte *ptr = g_scumm->getResourceAddress(rtString, num);
-	*(arg_1) = READ_LE_UINT16(ptr + 4);
-	*(arg_2) = READ_LE_UINT16(ptr + 2);
+	arg1 = READ_LE_UINT16(ptr + 4);
+	arg2 = READ_LE_UINT16(ptr + 2);
 }
 
-static void sub_FEE_7822(int num, int16 arg_1, int16 arg_2) {
-	int16 dx = arg_2;
-	dx -= arg_1;
-	int16 var_C = dx;
-	int count = dx * 2;
+static void sub_FEE_7822(int num, int arg1, int arg2) {
+	int var_C = arg2 - arg1;
+	int count = var_C * 2;
 
-	while (--count) {
-		int16 cx = var_C + 1;
-		int16 rand1 = (rand() % cx) + arg_1;
-		int16 rand2 = (rand() % cx) + arg_1;
+	if (count-- == 0)
+		return;
+	
+	do {
+		int cx = var_C + 1;
+		int rand1 = (rand() % cx) + arg1;
+		int rand2 = (rand() % cx) + arg1;
 		g_scumm->_vars[g_scumm->VAR_V6_RANDOM_NR] = rand2;
 		g_scumm->writeArray(num, 0, rand1, g_scumm->readArray(num, 0, rand1));
 		g_scumm->writeArray(num, 0, rand2, g_scumm->readArray(num, 0, rand2));
-	};
+	} while (--count);
 }
 
 void Scumm_v6::o6_shuffle() {
@@ -2977,23 +2978,19 @@
 }
 
 void Scumm_v6::o6_pickVarRandom() {
-	warning("void Scumm_v6::o6_pickVarRandom()");
-
 	int num;
 	int args[100];
-	int16 var_C, var_A;
+	int var_C, var_A;
 
 	num = getStackList(args, sizeof(args) / sizeof(args[0]));
-	int16 value = fetchScriptWord();
+	int value = fetchScriptWord();
 
 	if (readVar(value) == 0) {
 		defineArray(value, 5, 0, num);
 		if (num > 0) {
-			int *ptr = args;
 			int16 counter = 0;
 			do {
-				writeArray(value, 0, counter + 1, READ_LE_UINT16(ptr));
-				ptr++;
+				writeArray(value, 0, counter + 1, args[counter]);
 			} while (++counter < num);
 		}
 
@@ -3004,15 +3001,15 @@
 	}
 
 	num = readArray(value, 0, 0);
-	sub_FEE_78D2(readVar(value), &var_C, &var_A);
+	sub_FEE_78D2(readVar(value), var_C, var_A);
 
-	if (var_A - 1 < num) {
+	if ((var_A - 1) < num) {
 		int16 var_2 = readArray(value, 0, num - 1);
 		sub_FEE_7822(value, 1, var_A - 1);
-		num = 1;
-		int16 a = readArray(value, 0, num);
-		if (a == var_2) {
+		if (readArray(value, 0, 1) == var_2) {
 			num = 2;
+		} else {
+			num = 1;
 		}
 	}
 





More information about the Scummvm-git-logs mailing list