[Scummvm-git-logs] scummvm master -> 598c9bb92c132b96d1c1492da5686cbcd1c991b1

bluegr bluegr at gmail.com
Tue Oct 12 21:19:55 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
598c9bb92c GROOVIE: More work on the 11th Hour gallery puzzle logic


Commit: 598c9bb92c132b96d1c1492da5686cbcd1c991b1
    https://github.com/scummvm/scummvm/commit/598c9bb92c132b96d1c1492da5686cbcd1c991b1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2021-10-13T00:19:26+03:00

Commit Message:
GROOVIE: More work on the 11th Hour gallery puzzle logic

Changed paths:
    engines/groovie/logic/t11hgame.cpp
    engines/groovie/logic/t11hgame.h


diff --git a/engines/groovie/logic/t11hgame.cpp b/engines/groovie/logic/t11hgame.cpp
index 808db6307d..56f977d097 100644
--- a/engines/groovie/logic/t11hgame.cpp
+++ b/engines/groovie/logic/t11hgame.cpp
@@ -430,7 +430,7 @@ void T11hGame::opGallery() {
 	const int kPieceCount = 21;
 	byte pieceStatus[kPieceCount];
 	byte var_18[kPieceCount];
-	int var_1c, linkedPiece;
+	int selectedPieces;
 	byte curLink = 0;
 
 	enum kGalleryPieceStatus {
@@ -440,29 +440,30 @@ void T11hGame::opGallery() {
 
 	memcpy(pieceStatus, _scriptVariables + 26, kPieceCount);
 
-	var_1c = 0;
-	for (int curPiece = 0; curPiece < kPieceCount; curPiece++) {
-		var_18[curPiece] = 0;
-		if (pieceStatus[curPiece] == kPieceSelected) {
-			curLink = kGalleryLinks[curPiece][0];
-			linkedPiece = 1;
-			pieceStatus[curPiece] = kPieceUnselected;
+	selectedPieces = 0;
+	for (int i = 0; i < kPieceCount; i++) {
+		var_18[i] = 0;
+		if (pieceStatus[i] == kPieceSelected) {
+			curLink = kGalleryLinks[i][0];
+			pieceStatus[i] = kPieceUnselected;
+
+			int linkedPiece = 1;
 			while (curLink != 0) {
 				linkedPiece++;
 				pieceStatus[curLink - 1] = kPieceUnselected;
-				curLink = kGalleryLinks[linkedPiece - 1][curPiece];
+				curLink = kGalleryLinks[linkedPiece - 1][i];
 			}
-			var_18[curPiece] = opGallerySub(1, pieceStatus);
-			if (var_18[curPiece] == 1) {
-				var_1c++;
+			var_18[i] = opGallerySub(pieceStatus, 1);
+			if (var_18[i] == kPieceSelected) {
+				selectedPieces++;
 			}
 		}
 	}
 
-	if (var_1c == 0) {
+	if (selectedPieces == 0) {
 		int esi = 0;
 		for (int i = 0; i < kPieceCount; i++) {
-			if (var_18[i] > esi) {
+			if (esi < var_18[i]) {
 				esi = var_18[i];
 			}
 		}
@@ -470,33 +471,33 @@ void T11hGame::opGallery() {
 		if (esi == 2) {
 			esi = 1;
 		} else {
-			if (esi <= 20) {
+			if (esi < kPieceCount) {
 				esi = 2;
 			} else {
 				esi -= 12;
 			}
 		}
 
-		for (linkedPiece = 0; linkedPiece < kPieceCount; linkedPiece++) {
-			if (var_18[linkedPiece] <= esi) {
-				var_18[linkedPiece] = 1;
-				var_1c++;
+		for (int i = 0; i < kPieceCount; i++) {
+			if (esi < var_18[i]) {
+				var_18[i] = kPieceSelected;
+				selectedPieces++;
 			}
 		}
 	}
 
-	int selectedPart;
+	int selectedPiece;
 
 	// TODO: copy the AI from the game
 	do {
-		selectedPart = _random.getRandomNumber(20) + 1;
-	} while (_scriptVariables[0x19 + selectedPart] != 1);
+		selectedPiece = _random.getRandomNumber(20) + 1;
+	} while (_scriptVariables[selectedPiece + 25] != 1);
 
-	setScriptVar(0x2F, selectedPart / 10);
-	setScriptVar(0x30, selectedPart % 10);
+	setScriptVar(47, selectedPiece / 10);
+	setScriptVar(48, selectedPiece % 10);
 }
 
-byte T11hGame::opGallerySub(int one, byte* field) {
+byte T11hGame::opGallerySub(byte *field, int start) {
 	// TODO
 	warning("STUB: T11hGame::opGallerySub()");
 	return 0;
diff --git a/engines/groovie/logic/t11hgame.h b/engines/groovie/logic/t11hgame.h
index 4902471059..294c85953a 100644
--- a/engines/groovie/logic/t11hgame.h
+++ b/engines/groovie/logic/t11hgame.h
@@ -49,7 +49,7 @@ private:
 	void opGallery();
 	void opTriangle();
 
-	byte opGallerySub(int one, byte *field);
+	byte opGallerySub(byte *field, int start);
 	int8 opBeehiveGetHexDifference();
 	int8 opBeehiveGetTotal(int8 *hexagons);
 	void inline setScriptVar(uint16 var, byte value);




More information about the Scummvm-git-logs mailing list