[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