[Scummvm-git-logs] scummvm master -> fd378d793dc4a3243ec93f40a7144ec750f39476
sev-
noreply at scummvm.org
Mon Sep 15 18:01:48 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
2412c3a28e DIRECTOR: Refactor Behavior loading
65c47ac988 DIRECTOR: Read SpriteInfo from the Score for main channels
fd378d793d DIRECTOR: Read SpriteInfo for all channels
Commit: 2412c3a28e04e7d1e601c785834ffb0fdb58f087
https://github.com/scummvm/scummvm/commit/2412c3a28e04e7d1e601c785834ffb0fdb58f087
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-15T20:01:30+02:00
Commit Message:
DIRECTOR: Refactor Behavior loading
Changed paths:
engines/director/frame.h
engines/director/score.cpp
engines/director/score.h
diff --git a/engines/director/frame.h b/engines/director/frame.h
index 40d47b9cf1b..20d665b24bb 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -107,10 +107,69 @@ struct BehaviorElement {
}
};
+struct TweenInfo {
+ int32 curvature;
+ int32 flags;
+ int32 easeIn;
+ int32 easeOut;
+ int32 padding;
+
+ void read(Common::ReadStreamEndian &stream) {
+ curvature = (int32)stream.readUint32();
+ flags = (int32)stream.readUint32();
+ easeIn = (int32)stream.readUint32();
+ easeOut = (int32)stream.readUint32();
+ padding = (int32)stream.readUint32();
+ }
+};
+
+struct SpriteInfo {
+ int32 startFrame;
+ int32 endFrame;
+ int32 xtraInfo;
+ int32 flags;
+ int32 channelNum;
+ TweenInfo tweenInfo;
+
+ Common::Array<int32> keyFrames;
+
+ void read(Common::ReadStreamEndian &stream) {
+ startFrame = (int32)stream.readUint32();
+ endFrame = (int32)stream.readUint32();
+ xtraInfo = (int32)stream.readUint32();
+ flags = (int32)stream.readUint32();
+ channelNum = (int32)stream.readUint32();
+ tweenInfo.read(stream);
+
+ keyFrames.clear();
+ while (!stream.eos()) {
+ int32 frame = (int32)stream.readUint32();
+ if (stream.eos())
+ break;
+ keyFrames.push_back(frame);
+ }
+ }
+
+ Common::String toString() const {
+ Common::String s;
+ s += Common::String::format("startFrame: %d, endFrame: %d, xtraInfo: %d, flags: 0x%x, channelNum: %d\n",
+ startFrame, endFrame, xtraInfo, flags, channelNum);
+ s += Common::String::format(" tweenInfo: curvature: %d, flags: 0x%x, easeIn: %d, easeOut: %d\n",
+ tweenInfo.curvature, tweenInfo.flags, tweenInfo.easeIn, tweenInfo.easeOut);
+ s += " keyFrames: ";
+ for (size_t i = 0; i < keyFrames.size(); i++) {
+ s += Common::String::format("%d ", keyFrames[i]);
+ }
+ return s;
+ }
+};
+
+
struct MainChannels {
CastMemberID actionId;
uint32 scriptSpriteListIdx; // D6+
BehaviorElement behavior; // D6+
+ SpriteInfo scriptSpriteInfo; // D6+
uint16 transDuration;
uint8 transArea; // 1 - Whole Window, 0 - Changing Area
@@ -122,6 +181,7 @@ struct MainChannels {
uint8 tempo;
uint32 tempoSpriteListIdx; // D6+
uint16 tempoD6Flags;
+ SpriteInfo tempoSpriteInfo; // D6+
uint8 scoreCachedTempo;
CastMemberID scoreCachedPaletteId;
@@ -129,9 +189,11 @@ struct MainChannels {
CastMemberID sound1;
uint8 soundType1;
uint32 sound1SpriteListIdx; // D6+
+ SpriteInfo sound1SpriteInfo; // D6+
CastMemberID sound2;
uint8 soundType2;
uint32 sound2SpriteListIdx; // D6+
+ SpriteInfo sound2SpriteInfo; // D6+
byte colorTempo;
byte colorSound1;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 7145a8a3f28..dd998ccd043 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1861,25 +1861,30 @@ void Score::loadFrames(Common::SeekableReadStreamEndian &stream, uint16 version)
debugC(1, kDebugLoading, "Score::loadFrames(): Number of frames: %d, framesStreamSize: %d", _numFrames, _framesStreamSize);
}
+BehaviorElement Score::loadSpriteBehavior(Common::MemoryReadStreamEndian *stream) {
+ BehaviorElement behavior;
+ behavior.read(*stream);
+
+ if (behavior.initializerIndex) {
+ Common::MemoryReadStreamEndian *stream1 = getSpriteDetailsStream(behavior.initializerIndex);
+
+ if (stream1) {
+ behavior.initializerParams = stream1->readString();
+ delete stream1;
+ }
+ }
+
+ return behavior;
+}
+
void Score::loadFrameSpriteDetails() {
for (int i = 0; i < _currentFrame->_sprites.size(); i++) {
Sprite *sprite = _currentFrame->_sprites[i];
if (sprite->_spriteListIdx) {
Common::MemoryReadStreamEndian *stream = getSpriteDetailsStream(sprite->_spriteListIdx + 1);
if (stream) {
- BehaviorElement behavior;
-
while (stream->pos() < stream->size()) {
- behavior.read(*stream);
-
- if (behavior.initializerIndex) {
- Common::MemoryReadStreamEndian *stream1 = getSpriteDetailsStream(behavior.initializerIndex);
-
- if (stream1) {
- behavior.initializerParams = stream1->readString();
- delete stream1;
- }
- }
+ BehaviorElement behavior = loadSpriteBehavior(stream);
sprite->_behaviors.push_back(behavior);
}
@@ -1888,20 +1893,12 @@ void Score::loadFrameSpriteDetails() {
}
}
+ // Script channel
if (_currentFrame->_mainChannels.scriptSpriteListIdx) {
- Common::MemoryReadStreamEndian *stream = getSpriteDetailsStream(_currentFrame->_mainChannels.scriptSpriteListIdx);
+ Common::MemoryReadStreamEndian *stream = getSpriteDetailsStream(_currentFrame->_mainChannels.scriptSpriteListIdx + 1);
if (stream) {
- _currentFrame->_mainChannels.behavior.read(*stream);
+ _currentFrame->_mainChannels.behavior = loadSpriteBehavior(stream);
delete stream;
-
- if (_currentFrame->_mainChannels.behavior.initializerIndex) {
- Common::MemoryReadStreamEndian *stream1 = getSpriteDetailsStream(_currentFrame->_mainChannels.behavior.initializerIndex);
-
- if (stream1) {
- _currentFrame->_mainChannels.behavior.initializerParams = stream1->readString();
- delete stream1;
- }
- }
}
}
}
diff --git a/engines/director/score.h b/engines/director/score.h
index eacf4881333..771727c7fee 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -53,6 +53,7 @@ class Channel;
class Sprite;
class CastMember;
class AudioDecoder;
+struct BehaviorElement;
struct Label {
Common::String comment;
@@ -61,63 +62,6 @@ struct Label {
Label(Common::String name1, uint16 number1, Common::String comment1) { name = name1; number = number1; comment = comment1;}
};
-struct TweenInfo{
- int32 curvature;
- int32 flags;
- int32 easeIn;
- int32 easeOut;
- int32 padding;
-
- void read(Common::ReadStreamEndian &stream) {
- curvature = (int32)stream.readUint32();
- flags = (int32)stream.readUint32();
- easeIn = (int32)stream.readUint32();
- easeOut = (int32)stream.readUint32();
- padding = (int32)stream.readUint32();
- }
-};
-
-struct SpriteInfo {
- int32 startFrame;
- int32 endFrame;
- int32 xtraInfo;
- int32 flags;
- int32 channelNum;
- TweenInfo tweenInfo;
-
- Common::Array<int32> keyFrames;
-
- void read(Common::ReadStreamEndian &stream) {
- startFrame = (int32)stream.readUint32();
- endFrame = (int32)stream.readUint32();
- xtraInfo = (int32)stream.readUint32();
- flags = (int32)stream.readUint32();
- channelNum = (int32)stream.readUint32();
- tweenInfo.read(stream);
-
- keyFrames.clear();
- while (!stream.eos()) {
- int32 frame = (int32)stream.readUint32();
- if (stream.eos())
- break;
- keyFrames.push_back(frame);
- }
- }
-
- Common::String toString() const {
- Common::String s;
- s += Common::String::format("startFrame: %d, endFrame: %d, xtraInfo: %d, flags: 0x%x, channelNum: %d\n",
- startFrame, endFrame, xtraInfo, flags, channelNum);
- s += Common::String::format(" tweenInfo: curvature: %d, flags: 0x%x, easeIn: %d, easeOut: %d\n",
- tweenInfo.curvature, tweenInfo.flags, tweenInfo.easeIn, tweenInfo.easeOut);
- s += " keyFrames: ";
- for (size_t i = 0; i < keyFrames.size(); i++) {
- s += Common::String::format("%d ", keyFrames[i]);
- }
- return s;
- }
-};
-
class Score {
public:
Score(Movie *movie);
@@ -220,6 +164,8 @@ private:
void loadFrameSpriteDetails();
+ BehaviorElement loadSpriteBehavior(Common::MemoryReadStreamEndian *stream);
+
public:
Common::Array<Channel *> _channels;
Common::SortedArray<Label *> *_labels;
Commit: 65c47ac9887348345c8d373fc5926d916ca5a73a
https://github.com/scummvm/scummvm/commit/65c47ac9887348345c8d373fc5926d916ca5a73a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-15T20:01:36+02:00
Commit Message:
DIRECTOR: Read SpriteInfo from the Score for main channels
Changed paths:
engines/director/frame.h
engines/director/score.cpp
diff --git a/engines/director/frame.h b/engines/director/frame.h
index 20d665b24bb..a048eace277 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -60,53 +60,6 @@ enum {
kSprChannelSizeD7 = 48,
};
-struct PaletteInfo {
- CastMemberID paletteId;
-
- byte firstColor;
- byte lastColor;
- byte flags;
- bool colorCycling;
- bool normal;
- bool fadeToWhite;
- bool fadeToBlack;
- bool autoReverse;
- bool overTime;
- byte speed;
- uint16 frameCount;
- uint16 cycleCount;
- byte fade;
- byte delay;
- byte style;
- byte colorCode;
-
- uint32 spriteListIdx; // D6+
-
- PaletteInfo() {
- paletteId = CastMemberID(0, 0);
- firstColor = lastColor = 0;
- flags = 0; colorCycling = false;
- normal = false; fadeToWhite = false;
- fadeToBlack = false; autoReverse = false;
- overTime = false; speed = 0;
- frameCount = cycleCount = 0;
- fade = delay = style = colorCode = 0;
- spriteListIdx = 0;
- }
-};
-
-struct BehaviorElement {
- CastMemberID memberID;
- int32 initializerIndex = 0;
- Common::String initializerParams;
-
- void read(Common::ReadStreamEndian &stream) {
- memberID.castLib = (int16)stream.readUint16();
- memberID.member = (int16)stream.readUint16();
- initializerIndex = (int32)stream.readUint32();
- }
-};
-
struct TweenInfo {
int32 curvature;
int32 flags;
@@ -164,6 +117,53 @@ struct SpriteInfo {
}
};
+struct PaletteInfo {
+ CastMemberID paletteId;
+
+ byte firstColor;
+ byte lastColor;
+ byte flags;
+ bool colorCycling;
+ bool normal;
+ bool fadeToWhite;
+ bool fadeToBlack;
+ bool autoReverse;
+ bool overTime;
+ byte speed;
+ uint16 frameCount;
+ uint16 cycleCount;
+ byte fade;
+ byte delay;
+ byte style;
+ byte colorCode;
+
+ uint32 spriteListIdx; // D6+
+ SpriteInfo spriteInfo; // D6+
+
+ PaletteInfo() {
+ paletteId = CastMemberID(0, 0);
+ firstColor = lastColor = 0;
+ flags = 0; colorCycling = false;
+ normal = false; fadeToWhite = false;
+ fadeToBlack = false; autoReverse = false;
+ overTime = false; speed = 0;
+ frameCount = cycleCount = 0;
+ fade = delay = style = colorCode = 0;
+ spriteListIdx = 0;
+ }
+};
+
+struct BehaviorElement {
+ CastMemberID memberID;
+ int32 initializerIndex = 0;
+ Common::String initializerParams;
+
+ void read(Common::ReadStreamEndian &stream) {
+ memberID.castLib = (int16)stream.readUint16();
+ memberID.member = (int16)stream.readUint16();
+ initializerIndex = (int32)stream.readUint32();
+ }
+};
struct MainChannels {
CastMemberID actionId;
@@ -177,6 +177,8 @@ struct MainChannels {
TransitionType transType;
CastMemberID trans;
uint32 transSpriteListIdx; // D6+
+ SpriteInfo transSpriteInfo; // D6+
+
PaletteInfo palette;
uint8 tempo;
uint32 tempoSpriteListIdx; // D6+
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index dd998ccd043..89fdadaf377 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1878,10 +1878,11 @@ BehaviorElement Score::loadSpriteBehavior(Common::MemoryReadStreamEndian *stream
}
void Score::loadFrameSpriteDetails() {
+ Common::MemoryReadStreamEndian *stream = nullptr;
for (int i = 0; i < _currentFrame->_sprites.size(); i++) {
Sprite *sprite = _currentFrame->_sprites[i];
if (sprite->_spriteListIdx) {
- Common::MemoryReadStreamEndian *stream = getSpriteDetailsStream(sprite->_spriteListIdx + 1);
+ stream = getSpriteDetailsStream(sprite->_spriteListIdx + 1);
if (stream) {
while (stream->pos() < stream->size()) {
BehaviorElement behavior = loadSpriteBehavior(stream);
@@ -1895,11 +1896,62 @@ void Score::loadFrameSpriteDetails() {
// Script channel
if (_currentFrame->_mainChannels.scriptSpriteListIdx) {
- Common::MemoryReadStreamEndian *stream = getSpriteDetailsStream(_currentFrame->_mainChannels.scriptSpriteListIdx + 1);
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.scriptSpriteListIdx + 1);
if (stream) {
_currentFrame->_mainChannels.behavior = loadSpriteBehavior(stream);
delete stream;
}
+
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.scriptSpriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.scriptSpriteInfo.read(*stream);
+ delete stream;
+ }
+ }
+
+ // Tempo channel
+ if (_currentFrame->_mainChannels.tempoSpriteListIdx) {
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.tempoSpriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.tempoSpriteInfo.read(*stream);
+ delete stream;
+ }
+ }
+
+ // Transition channel
+ if (_currentFrame->_mainChannels.transSpriteListIdx) {
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.transSpriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.transSpriteInfo.read(*stream);
+ delete stream;
+ }
+ }
+
+ // Sound2 channel
+ if (_currentFrame->_mainChannels.sound2SpriteListIdx) {
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.sound2SpriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.sound2SpriteInfo.read(*stream);
+ delete stream;
+ }
+ }
+
+ // Sound1 channel
+ if (_currentFrame->_mainChannels.sound1SpriteListIdx) {
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.sound1SpriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.sound1SpriteInfo.read(*stream);
+ delete stream;
+ }
+ }
+
+ // Palette channel
+ if (_currentFrame->_mainChannels.palette.spriteListIdx) {
+ stream = getSpriteDetailsStream(_currentFrame->_mainChannels.palette.spriteListIdx);
+ if (stream) {
+ _currentFrame->_mainChannels.palette.spriteInfo.read(*stream);
+ delete stream;
+ }
}
}
Commit: fd378d793dc4a3243ec93f40a7144ec750f39476
https://github.com/scummvm/scummvm/commit/fd378d793dc4a3243ec93f40a7144ec750f39476
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-15T20:01:36+02:00
Commit Message:
DIRECTOR: Read SpriteInfo for all channels
Changed paths:
A engines/director/spriteinfo.h
engines/director/frame.h
engines/director/score.cpp
engines/director/sprite.h
diff --git a/engines/director/frame.h b/engines/director/frame.h
index a048eace277..480ff25434a 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -22,6 +22,8 @@
#ifndef DIRECTOR_FRAME_H
#define DIRECTOR_FRAME_H
+#include "director/spriteinfo.h"
+
namespace Image {
class ImageDecoder;
}
@@ -60,63 +62,6 @@ enum {
kSprChannelSizeD7 = 48,
};
-struct TweenInfo {
- int32 curvature;
- int32 flags;
- int32 easeIn;
- int32 easeOut;
- int32 padding;
-
- void read(Common::ReadStreamEndian &stream) {
- curvature = (int32)stream.readUint32();
- flags = (int32)stream.readUint32();
- easeIn = (int32)stream.readUint32();
- easeOut = (int32)stream.readUint32();
- padding = (int32)stream.readUint32();
- }
-};
-
-struct SpriteInfo {
- int32 startFrame;
- int32 endFrame;
- int32 xtraInfo;
- int32 flags;
- int32 channelNum;
- TweenInfo tweenInfo;
-
- Common::Array<int32> keyFrames;
-
- void read(Common::ReadStreamEndian &stream) {
- startFrame = (int32)stream.readUint32();
- endFrame = (int32)stream.readUint32();
- xtraInfo = (int32)stream.readUint32();
- flags = (int32)stream.readUint32();
- channelNum = (int32)stream.readUint32();
- tweenInfo.read(stream);
-
- keyFrames.clear();
- while (!stream.eos()) {
- int32 frame = (int32)stream.readUint32();
- if (stream.eos())
- break;
- keyFrames.push_back(frame);
- }
- }
-
- Common::String toString() const {
- Common::String s;
- s += Common::String::format("startFrame: %d, endFrame: %d, xtraInfo: %d, flags: 0x%x, channelNum: %d\n",
- startFrame, endFrame, xtraInfo, flags, channelNum);
- s += Common::String::format(" tweenInfo: curvature: %d, flags: 0x%x, easeIn: %d, easeOut: %d\n",
- tweenInfo.curvature, tweenInfo.flags, tweenInfo.easeIn, tweenInfo.easeOut);
- s += " keyFrames: ";
- for (size_t i = 0; i < keyFrames.size(); i++) {
- s += Common::String::format("%d ", keyFrames[i]);
- }
- return s;
- }
-};
-
struct PaletteInfo {
CastMemberID paletteId;
@@ -153,18 +98,6 @@ struct PaletteInfo {
}
};
-struct BehaviorElement {
- CastMemberID memberID;
- int32 initializerIndex = 0;
- Common::String initializerParams;
-
- void read(Common::ReadStreamEndian &stream) {
- memberID.castLib = (int16)stream.readUint16();
- memberID.member = (int16)stream.readUint16();
- initializerIndex = (int32)stream.readUint32();
- }
-};
-
struct MainChannels {
CastMemberID actionId;
uint32 scriptSpriteListIdx; // D6+
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 89fdadaf377..8e339932155 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1891,6 +1891,12 @@ void Score::loadFrameSpriteDetails() {
}
delete stream;
}
+
+ stream = getSpriteDetailsStream(sprite->_spriteListIdx);
+ if (stream) {
+ sprite->_spriteInfo.read(*stream);
+ delete stream;
+ }
}
}
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index 379d6584bfc..dba092de338 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -22,6 +22,8 @@
#ifndef DIRECTOR_SPRITE_H
#define DIRECTOR_SPRITE_H
+#include "director/spriteinfo.h"
+
namespace Director {
class Frame;
@@ -63,7 +65,6 @@ enum ThicknessFlags {
kTTweened = 0x80,
};
-struct BehaviorElement;
class Sprite {
public:
Sprite(Frame *frame = nullptr);
@@ -150,6 +151,7 @@ public:
bool _stretch;
uint32 _spriteListIdx; // D6+
+ SpriteInfo _spriteInfo; // D6+
// D7+
byte _flags;
@@ -158,7 +160,7 @@ public:
int32 _angleRot;
int32 _angleSkew;
- Common::Array<BehaviorElement> _behaviors;
+ Common::Array<BehaviorElement> _behaviors; // D6+
};
} // End of namespace Director
diff --git a/engines/director/spriteinfo.h b/engines/director/spriteinfo.h
new file mode 100644
index 00000000000..dfbc940f1ac
--- /dev/null
+++ b/engines/director/spriteinfo.h
@@ -0,0 +1,98 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_SPRITEINFO_H
+#define DIRECTOR_SPRITEINFO_H
+
+namespace Director {
+
+struct TweenInfo {
+ int32 curvature;
+ int32 flags;
+ int32 easeIn;
+ int32 easeOut;
+ int32 padding;
+
+ void read(Common::ReadStreamEndian &stream) {
+ curvature = (int32)stream.readUint32();
+ flags = (int32)stream.readUint32();
+ easeIn = (int32)stream.readUint32();
+ easeOut = (int32)stream.readUint32();
+ padding = (int32)stream.readUint32();
+ }
+};
+
+struct SpriteInfo {
+ int32 startFrame;
+ int32 endFrame;
+ int32 xtraInfo;
+ int32 flags;
+ int32 channelNum;
+ TweenInfo tweenInfo;
+
+ Common::Array<int32> keyFrames;
+
+ void read(Common::ReadStreamEndian &stream) {
+ startFrame = (int32)stream.readUint32();
+ endFrame = (int32)stream.readUint32();
+ xtraInfo = (int32)stream.readUint32();
+ flags = (int32)stream.readUint32();
+ channelNum = (int32)stream.readUint32();
+ tweenInfo.read(stream);
+
+ keyFrames.clear();
+ while (!stream.eos()) {
+ int32 frame = (int32)stream.readUint32();
+ if (stream.eos())
+ break;
+ keyFrames.push_back(frame);
+ }
+ }
+
+ Common::String toString() const {
+ Common::String s;
+ s += Common::String::format("startFrame: %d, endFrame: %d, xtraInfo: %d, flags: 0x%x, channelNum: %d\n",
+ startFrame, endFrame, xtraInfo, flags, channelNum);
+ s += Common::String::format(" tweenInfo: curvature: %d, flags: 0x%x, easeIn: %d, easeOut: %d\n",
+ tweenInfo.curvature, tweenInfo.flags, tweenInfo.easeIn, tweenInfo.easeOut);
+ s += " keyFrames: ";
+ for (size_t i = 0; i < keyFrames.size(); i++) {
+ s += Common::String::format("%d ", keyFrames[i]);
+ }
+ return s;
+ }
+};
+
+struct BehaviorElement {
+ CastMemberID memberID;
+ int32 initializerIndex = 0;
+ Common::String initializerParams;
+
+ void read(Common::ReadStreamEndian &stream) {
+ memberID.castLib = (int16)stream.readUint16();
+ memberID.member = (int16)stream.readUint16();
+ initializerIndex = (int32)stream.readUint32();
+ }
+};
+
+} // End of namespace Director
+
+#endif
More information about the Scummvm-git-logs
mailing list