[Scummvm-cvs-logs] scummvm master -> 056fc6250cc04a38772870139a8208ffde425765

Strangerke Strangerke at scummvm.org
Sat Feb 11 12:36:45 CET 2012


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:
056fc6250c TSAGE: R2R - Scene 1337: Implement shuffleCards()


Commit: 056fc6250cc04a38772870139a8208ffde425765
    https://github.com/scummvm/scummvm/commit/056fc6250cc04a38772870139a8208ffde425765
Author: Strangerke (strangerke at scummvm.org)
Date: 2012-02-11T03:35:53-08:00

Commit Message:
TSAGE: R2R - Scene 1337: Implement shuffleCards()

Game is now starting

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.h



diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index b3907d7..c04134a 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -2790,7 +2790,7 @@ void Scene1337::Action4::signal() {
 		scene->_item2._object1.hide();
 		if ((scene->_arrunkObj1337[scene->_field423E]._arr1[0]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) {
 			if (scene->_field3E24 < 0)
-				scene->subCBB7B();
+				scene->shuffleCards();
 			scene->_item2._object1.setPosition(Common::Point(162, 95));
 			scene->_item2._object1.show();
 
@@ -2825,7 +2825,7 @@ void Scene1337::Action4::signal() {
 		scene->_item2._object1.hide();
 		if ((scene->_arrunkObj1337[scene->_field423E]._arr1[2]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) {
 			if (scene->_field3E24 < 0)
-				scene->subCBB7B();
+				scene->shuffleCards();
 			scene->_item2._object1.setPosition(Common::Point(162, 95));
 			scene->_item2._object1.show();
 
@@ -2860,7 +2860,7 @@ void Scene1337::Action4::signal() {
 		scene->_item2._object1.hide();
 		if ((scene->_arrunkObj1337[scene->_field423E]._arr1[3]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) {
 			if (scene->_field3E24 < 0)
-				scene->subCBB7B();
+				scene->shuffleCards();
 			scene->_item2._object1.setPosition(Common::Point(162, 95));
 			scene->_item2._object1.show();
 
@@ -4238,12 +4238,59 @@ void Scene1337::subCB59B() {
 	_item1.setAction(&_action1);
 }
 
-void Scene1337::subCBB7B() {
-	warning("STUBBED Scene1337::subCBB7B()");
+void Scene1337::shuffleCards() {
+	R2_GLOBALS._sceneObjects->draw();
+
+	for (int i = 0; i <= 98; i++) {
+		if (_field3E28[i] == 0) {
+			for (int j = i + 1; j <= 98; j ++) {
+				if (_field3E28[j] != 0) {
+					_field3E28[i] = _field3E28[j];
+					_field3E28[j] = 0;
+					break;
+				}
+			}
+		}
+	}
+
+	for (int i = 0; i <= 99; i ++) {
+		if (_field3E28[i] == 0) {
+			_field3E24 = i - 1;
+			_field3E26 = 98;
+			break;
+		}
+	}
+
+	// tmpVal is never modified in the original. It looks weird but it works: at the end, the cards are suffled!
+	int tmpVal = 0;
+	int randIndx;
+	int swap;
+	for (int i = 0; i < 2000; i ++) {
+		randIndx = R2_GLOBALS._randomSource.getRandomNumber(_field3E24);
+		swap = _field3E28[tmpVal];
+		_field3E28[tmpVal] = _field3E28[randIndx];
+		_field3E28[randIndx] = swap;
+	}
+
+	_field423C = 0;
+	_item2._object1.setAction(&_action2);
+
+	while(_field423C == 0) {
+		g_globals->_scenePalette.signalListeners();
+		R2_GLOBALS._sceneObjects->draw();
+		warning("TODO: recurse on draw() and on signalListeners()?");
+		g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks);
+
+		// Hack to avoid eternal loop
+		// To be removed when the recurse is working properly
+		_field423C = 1;
+	}
 }
 
 void Scene1337::subCCF26() {
-	warning("STUBBED Scene1337::subCCF26()");
+	_item2._object1._moveDiff = Common::Point(30, 30);
+	shuffleCards();
+	_item1.setAction(&_action3);
 }
 
 void Scene1337::subCF31D() {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 53db763..2a91980 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -328,7 +328,7 @@ public:
 	void subPostInit();
 	void subCB59B();
 	void suggestInstructions();
-	void subCBB7B();
+	void shuffleCards();
 	void subCCF26();
 	void subCF31D();
 	void subCF979();






More information about the Scummvm-git-logs mailing list