[Scummvm-git-logs] scummvm master -> 4f551a66e250484dd6507b5c232466731a6592cc
sev-
noreply at scummvm.org
Fri Mar 7 23:23:37 UTC 2025
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:
4f551a66e2 DIRECTOR: Initial code on merging FilmLoop and Movie cast members
Commit: 4f551a66e250484dd6507b5c232466731a6592cc
https://github.com/scummvm/scummvm/commit/4f551a66e250484dd6507b5c232466731a6592cc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-03-08T00:23:24+01:00
Commit Message:
DIRECTOR: Initial code on merging FilmLoop and Movie cast members
They are basically the same thing except that Movie would react to
events and run Lingo
Changed paths:
engines/director/castmember/movie.cpp
engines/director/castmember/movie.h
engines/director/channel.cpp
engines/director/score.cpp
diff --git a/engines/director/castmember/movie.cpp b/engines/director/castmember/movie.cpp
index 44a7068c4e8..cef9c0ba47e 100644
--- a/engines/director/castmember/movie.cpp
+++ b/engines/director/castmember/movie.cpp
@@ -21,23 +21,19 @@
#include "director/director.h"
#include "director/movie.h"
+#include "director/sprite.h"
+
#include "director/castmember/movie.h"
+
#include "director/lingo/lingo-the.h"
namespace Director {
MovieCastMember::MovieCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
- : CastMember(cast, castId, stream) {
+ : FilmLoopCastMember(cast, castId, stream, version) {
_type = kCastMovie;
- _initialRect = Movie::readRect(stream);
- _flags = stream.readUint32BE();
-
- _looping = !(_flags & 0x20);
_enableScripts = _flags & 0x10;
- _enableSound = _flags & 0x08;
- _crop = !(_flags & 0x02);
- _center = _flags & 0x01;
if (debugChannelSet(2, kDebugLoading))
_initialRect.debugPrint(2, "MovieCastMember(): rect:");
@@ -48,20 +44,10 @@ MovieCastMember::MovieCastMember(Cast *cast, uint16 castId, Common::SeekableRead
}
MovieCastMember::MovieCastMember(Cast *cast, uint16 castId, MovieCastMember &source)
- : CastMember(cast, castId) {
+ : FilmLoopCastMember(cast, castId, source) {
_type = kCastMovie;
- _loaded = source._loaded;
-
- _initialRect = source._initialRect;
- _boundingRect = source._boundingRect;
- _children = source._children;
- _flags = source._flags;
- _looping = source._looping;
_enableScripts = source._enableScripts;
- _enableSound = source._enableSound;
- _crop = source._crop;
- _center = source._center;
}
bool MovieCastMember::hasField(int field) {
diff --git a/engines/director/castmember/movie.h b/engines/director/castmember/movie.h
index 5e84bb402ca..e2669a337c8 100644
--- a/engines/director/castmember/movie.h
+++ b/engines/director/castmember/movie.h
@@ -22,11 +22,11 @@
#ifndef DIRECTOR_CASTMEMBER_MOVIE_H
#define DIRECTOR_CASTMEMBER_MOVIE_H
-#include "director/castmember/castmember.h"
+#include "director/castmember/filmloop.h"
namespace Director {
-class MovieCastMember : public CastMember {
+class MovieCastMember : public FilmLoopCastMember {
public:
MovieCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
MovieCastMember(Cast *cast, uint16 castId, MovieCastMember &source);
@@ -38,11 +38,7 @@ public:
Common::String formatInfo() override;
uint32 _flags;
- bool _looping;
bool _enableScripts;
- bool _enableSound;
- bool _crop;
- bool _center;
};
} // End of namespace Director
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index 15211e16b80..562c2381a37 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -423,7 +423,7 @@ void Channel::setClean(Sprite *nextSprite, bool partial) {
((DigitalVideoCastMember *)nextSprite->_cast)->setChannel(this);
((DigitalVideoCastMember *)nextSprite->_cast)->startVideo();
}
- } else if (nextSprite->_cast->_type == kCastFilmLoop) {
+ } else if (nextSprite->_cast->_type == kCastFilmLoop || nextSprite->_cast->_type == kCastMovie) {
// brand new film loop, reset the frame counter.
_filmLoopFrame = 1;
}
@@ -722,14 +722,14 @@ int Channel::getMouseLine(int x, int y) {
}
bool Channel::hasSubChannels() {
- if ((_sprite->_cast) && (_sprite->_cast->_type == kCastFilmLoop)) {
+ if ((_sprite->_cast) && (_sprite->_cast->_type == kCastFilmLoop || _sprite->_cast->_type == kCastMovie)) {
return true;
}
return false;
}
Common::Array<Channel> *Channel::getSubChannels() {
- if ((!_sprite->_cast) || (_sprite->_cast->_type != kCastFilmLoop)) {
+ if ((!_sprite->_cast) || (_sprite->_cast->_type != kCastFilmLoop && _sprite->_cast->_type != kCastMovie)) {
warning("Channel doesn't have any sub-channels");
return nullptr;
}
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 1b8891e54bd..c1ec96122a1 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -770,7 +770,7 @@ bool Score::renderTransition(uint16 frameId, RenderMode mode) {
void Score::incrementFilmLoops() {
for (auto &it : _channels) {
- if (it->_sprite->_cast && it->_sprite->_cast->_type == kCastFilmLoop) {
+ if (it->_sprite->_cast && (it->_sprite->_cast->_type == kCastFilmLoop || it->_sprite->_cast->_type == kCastMovie)) {
FilmLoopCastMember *fl = ((FilmLoopCastMember *)it->_sprite->_cast);
if (!fl->_frames.empty()) {
// increment the film loop counter
More information about the Scummvm-git-logs
mailing list