[Scummvm-cvs-logs] scummvm master -> a6458abb29838d3a461bbb3f98ea58cdff47da4f

Strangerke Strangerke at scummvm.org
Sun Dec 1 01:49:15 CET 2013


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:
a6458abb29 TSAGE: R2R - WIP work on cursor behavior in scene 1337


Commit: a6458abb29838d3a461bbb3f98ea58cdff47da4f
    https://github.com/scummvm/scummvm/commit/a6458abb29838d3a461bbb3f98ea58cdff47da4f
Author: Strangerke (strangerke at scummvm.org)
Date: 2013-11-30T16:47:55-08:00

Commit Message:
TSAGE: R2R - WIP work on cursor behavior in scene 1337

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 5ed45ef..945457e 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -2256,6 +2256,10 @@ Scene1337::Scene1337() {
 	_field3EF0 = nullptr;
 	_field3EF4 = nullptr;
 	_field3EF8 = nullptr;
+
+	_cursorCurRes = 0;
+	_cursorCurStrip = 0;
+	_cursorCurFrame = 0;
 }
 
 void Scene1337::synchronize(Serializer &s) {
@@ -4482,6 +4486,12 @@ void Scene1337::dispatch() {
 			suggestInstructions();
 		}
 	}
+
+	// The following code is in the original in sceneHandler::process(),
+	// which is terrible as it's checked in every scene of the game.
+	setCursorData(5, _cursorCurStrip, _cursorCurFrame);
+	//
+
 	Scene::dispatch();
 }
 
@@ -5262,11 +5272,10 @@ void Scene1337::subC4CD2() {
 }
 
 void Scene1337::subC4CEC() {
-	if (R2_GLOBALS._v57709 != 0)
-		return;
-
-	subD18F5();
-	subD1940(true);
+	if (R2_GLOBALS._v57709 == 0) {
+		subD18F5();
+		subD1940(true);
+	}
 }
 
 void Scene1337::subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) {
@@ -6830,22 +6839,28 @@ void Scene1337::setCursorData(int resNum, int rlbNum, int frameNum) {
 	if (!frameNum)
 		return;
 
-	uint size;
-	byte *cursor = g_resourceManager->getSubResource(resNum, rlbNum, frameNum, &size);
-	// Decode the cursor
-	GfxSurface s = surfaceFromRes(cursor);
+	_cursorCurRes = resNum;
+	_cursorCurStrip = rlbNum;
+	_cursorCurFrame = frameNum;
+
+	if (!frameNum) {
+		R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
+	} else {
+		uint size;
+		byte *cursor = g_resourceManager->getSubResource(resNum, rlbNum, frameNum, &size);
+		// Decode the cursor
+		GfxSurface s = surfaceFromRes(cursor);
 
-	Graphics::Surface surface = s.lockSurface();
-	const byte *cursorData = (const byte *)surface.getPixels();
-	CursorMan.replaceCursor(cursorData, surface.w, surface.h, s._centroid.x, s._centroid.y, s._transColor);
-	s.unlockSurface();
+		Graphics::Surface surface = s.lockSurface();
+		const byte *cursorData = (const byte *)surface.getPixels();
+		CursorMan.replaceCursor(cursorData, surface.w, surface.h, s._centroid.x, s._centroid.y, s._transColor);
+		s.unlockSurface();
+	}
 }
 
 void Scene1337::subD18F5() {
 	if (R2_GLOBALS._v57709 == 0)
-		// The cursor looks... very dummy
-		// To be checked
-		warning("TODO: CursorManager.setData(R2_GLOBALS.off_57705)");
+		R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
 
 	++R2_GLOBALS._v57709;
 }
@@ -6854,7 +6869,7 @@ void Scene1337::subD1917() {
 	if (R2_GLOBALS._v57709 != 0) {
 		R2_GLOBALS._v57709--;
 		if (R2_GLOBALS._v57709 != 0)
-			warning("FIXME: subD195F(_width, _data);");
+			subD195F(_cursorCurStrip, _cursorCurFrame);
 	}
 }
 
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 28b82b4..2b95bc2 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -316,6 +316,9 @@ public:
 	int _field424A;
 	int _instructionsDisplayedFl;
 	int _instructionsWaitCount;
+	int _cursorCurRes;
+	int _cursorCurStrip;
+	int _cursorCurFrame;
 
 	SceneObject _upperDisplayCard[8];
 	SceneObject _lowerDisplayCard[8];






More information about the Scummvm-git-logs mailing list