[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