[Scummvm-git-logs] scummvm master -> ee242176afdac13dd905ae674a9556b33bf9e763

sev- noreply at scummvm.org
Mon Jun 20 23:08:12 UTC 2022


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:
ee242176af DIRECTOR: LINGO: Implement kTheFixStageSize property STUB


Commit: ee242176afdac13dd905ae674a9556b33bf9e763
    https://github.com/scummvm/scummvm/commit/ee242176afdac13dd905ae674a9556b33bf9e763
Author: Pragyansh Chaturvedi (r41k0u) (pragyanshchaturvedi18 at gmail.com)
Date: 2022-06-21T01:08:10+02:00

Commit Message:
DIRECTOR: LINGO: Implement kTheFixStageSize property STUB

Changed paths:
    engines/director/cast.cpp
    engines/director/director.cpp
    engines/director/director.h
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 9ee9e06191a..cb4c43c18c0 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -219,7 +219,14 @@ bool Cast::loadConfig() {
 
 	uint16 len = stream->readUint16();
 	uint16 fileVersion = stream->readUint16(); // TODO: very high fileVersion means protected
-	_movieRect = Movie::readRect(*stream);
+	if (!g_director->_fixStageSize) {
+		_movieRect = Movie::readRect(*stream);
+	} else {
+		//Let the compiler unroll this loop
+		for (int i = 0; i < 4; i++)
+			stream->readSint16();
+		_movieRect = g_director->_fixStageRect;
+	}
 	if (!_isShared)
 		_movie->_movieRect = _movieRect;
 
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 92e316fb22f..3cf15d88cd3 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -88,6 +88,8 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
 	_lingo = nullptr;
 	_clipBoard = nullptr;
 	_version = getDescriptionVersion();
+	_fixStageSize = false;
+	_fixStageRect = Common::Rect();
 
 	_wm = nullptr;
 
diff --git a/engines/director/director.h b/engines/director/director.h
index 55d897fb1e8..5da1f86815e 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -221,6 +221,8 @@ public:
 	bool _skipFrameAdvance;
 	bool _centerStage;
 	char _dirSeparator;
+	bool _fixStageSize;
+	Common::Rect _fixStageRect;
 	Common::List<Common::String> _extraSearchPath;
 
 	Common::HashMap<Common::String, Archive *, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _openResFiles;
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 8d7b8103bfb..6127d856851 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -454,7 +454,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d = getTheField(id, field);
 		break;
 	case kTheFixStageSize:
-		getTheEntitySTUB(kTheFixStageSize);
+		d.type = INT;
+		d.u.i = (int)g_director->_fixStageSize;
 		break;
 	case kTheFloatPrecision:
 		d.type = INT;
@@ -974,7 +975,10 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		g_lingo->_exitLock = bool(d.asInt());
 		break;
 	case kTheFixStageSize:
-		setTheEntitySTUB(kTheFixStageSize);
+		g_director->_fixStageSize = (bool)d.u.i;
+		if (d.u.i) {
+			g_director->_fixStageRect = g_director->getCurrentMovie()->_movieRect;
+		}
 		break;
 	case kTheField:
 		setTheField(id, field, d);




More information about the Scummvm-git-logs mailing list