aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/director/archive.cpp2
-rw-r--r--engines/director/score.cpp54
-rw-r--r--engines/director/score.h20
3 files changed, 54 insertions, 22 deletions
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 5102b7f71d..6e1da0c8b7 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -421,7 +421,7 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
uint32 index = casStream.readUint32();
const Resource &res = resources[index];
- _types[MKTAG('C', 'A', 'S', 't')][index] = res;
+ _types[MKTAG('C', 'A', 'S', 't')][i + 1] = res;
debugCN(2, kDebugLoading, "%d ", index);
}
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index c1b55897bd..181ed9a80f 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -392,17 +392,20 @@ void Score::loadCastDataD2(Common::SeekableSubReadStreamEndian &stream) {
}
}
-void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id) {
+void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 castId) {
// d4+ variant
if (stream.size() == 0)
return;
if (stream.size() < 26) {
- warning("CAST data id %d is too small", id);
+ warning("CAST data id %d is too small", castId);
return;
}
- uint castId = id - 1024;
+ debugC(3, kDebugLoading, "CASt: id: %d", castId);
+
+ if (debugChannelSet(5, kDebugLoading))
+ stream.hexdump(stream.size());
uint32 size1, size2, size3, castType;
byte blob[3];
@@ -424,7 +427,32 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id)
blob[0] = blob[1] = blob[2] = 0;
}
- warning("type: %x", castType);
+ debugC(3, kDebugLoading, "CASt: id: %d type: %x size1: %d size2: %d (%x) size3: %d", castId, castType, size1, size2, size2, size3);
+
+#if 0
+ switch (castType) {
+ case kCastBitmap:
+ _casts[id] = new BitmapCast(stream);
+ _casts[id]->type = kCastBitmap;
+ break;
+ case kCastText:
+ _casts[id] = new TextCast(stream);
+ _casts[id]->type = kCastText;
+ break;
+ case kCastShape:
+ _casts[id] = new ShapeCast(stream);
+ _casts[id]->type = kCastShape;
+ break;
+ case kCastButton:
+ _casts[id] = new ButtonCast(stream);
+ _casts[id]->type = kCastButton;
+ break;
+ default:
+ warning("Unhandled cast type: %d", castType);
+ stream.skip(size - 1);
+ break;
+ }
+#endif
Score::readRect(stream);
Score::readRect(stream);
@@ -434,14 +462,18 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id)
//member.regX = 0 // FIXME: HACK
//member.regY = 0 // FIXME: HACK
- byte *data = (byte *)calloc(size1, 1);
- stream.read(data, size1);
- Common::hexdump(data, size1);
- free(data);
-
if (size2) {
uint32 entryType = 0;
- Common::Array<Common::String> castStrings = loadStrings(stream, entryType);
+ Common::Array<Common::String> castStrings = loadStrings(stream, entryType, false);
+
+ debugCN(4, kDebugLoading, "str(%d): '", castStrings.size());
+
+ for (uint i = 0; i < castStrings.size(); i++) {
+ debugCN(4, kDebugLoading, "%s'", castStrings[i].c_str());
+ if (i != castStrings.size() - 1)
+ debugCN(4, kDebugLoading, ", '");
+ }
+ debugC(4, kDebugLoading, "'");
CastInfo *ci = new CastInfo();
@@ -451,7 +483,7 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id)
ci->fileName = castStrings[3];
ci->type = castStrings[4];
- _castsInfo[id] = ci;
+ _castsInfo[castId] = ci;
}
if (size3)
diff --git a/engines/director/score.h b/engines/director/score.h
index 5721532d58..a60f2d7c5a 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -42,16 +42,16 @@ class Sprite;
enum CastType {
kCastBitmap = 1,
- kCastFilmLoop,
- kCastText,
- kCastPalette,
- kCastPicture,
- kCastSound,
- kCastButton,
- kCastShape,
- kCastMovie,
- kCastDigitalVideo,
- kCastScript
+ kCastFilmLoop = 2,
+ kCastText = 3,
+ kCastPalette = 4,
+ kCastPicture = 5,
+ kCastSound = 6,
+ kCastButton = 7,
+ kCastShape = 8,
+ kCastMovie = 9,
+ kCastDigitalVideo = 10,
+ kCastScript = 11
};
enum ScriptType {