diff options
author | Dmitry Iskrich | 2016-05-28 18:07:21 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-03 23:40:36 +0200 |
commit | 44e46db5de4211c8056962531fb6483ffe7bebeb (patch) | |
tree | f06ef8cdd7da6e1140bbee57c12871b3004543bf | |
parent | 604fa102ff35f02b71506fa0b67283ed00139872 (diff) | |
download | scummvm-rg350-44e46db5de4211c8056962531fb6483ffe7bebeb.tar.gz scummvm-rg350-44e46db5de4211c8056962531fb6483ffe7bebeb.tar.bz2 scummvm-rg350-44e46db5de4211c8056962531fb6483ffe7bebeb.zip |
DIRECTOR: Refactor cast data loading
-rw-r--r-- | engines/director/score.cpp | 80 | ||||
-rw-r--r-- | engines/director/score.h | 13 |
2 files changed, 35 insertions, 58 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp index 1b75414791..658f1e7c17 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -64,7 +64,7 @@ Score::Score(Common::SeekableReadStream &stream) { void Score::loadConfig(Common::SeekableReadStream &stream) { /*uint16 unk1 = */ stream.readUint16BE(); /*ver1 = */ stream.readUint16BE(); - _movieRect = readRect(stream); + _movieRect = Score::readRect(stream); _castArrayStart = stream.readUint16BE(); _castArrayEnd = stream.readUint16BE(); @@ -88,19 +88,19 @@ void Score::loadCastData(Common::SeekableReadStream &stream) { uint8 castType = stream.readByte(); switch (castType) { case kCastBitmap: - _casts[id] = getBitmapCast(stream); + _casts[id] = new BitmapCast(stream); _casts[id]->type = kCastBitmap; break; case kCastText: - _casts[id] = getTextCast(stream); + _casts[id] = new TextCast(stream); _casts[id]->type = kCastText; break; case kCastShape: - _casts[id] = getShapeCast(stream); + _casts[id] = new ShapeCast(stream); _casts[id]->type = kCastShape; break; case kCastButton: - _casts[id] = getButtonCast(stream); + _casts[id] = new ButtonCast(stream); _casts[id]->type = kCastButton; break; default: @@ -119,67 +119,43 @@ void Score::loadCastData(Common::SeekableReadStream &stream) { } } -BitmapCast *Score::getBitmapCast(Common::SeekableReadStream &stream) { - BitmapCast *cast = new BitmapCast(); +BitmapCast::BitmapCast(Common::SeekableReadStream &stream) { /*byte flags = */ stream.readByte(); /*uint16 someFlaggyThing = */ stream.readUint16BE(); - cast->initialRect = readRect(stream); - cast->boundingRect = readRect(stream); - cast->regY = stream.readUint16BE(); - cast->regX = stream.readUint16BE(); + initialRect = Score::readRect(stream); + boundingRect = Score::readRect(stream); + regY = stream.readUint16BE(); + regX = stream.readUint16BE(); /*uint16 unk1 =*/ stream.readUint16BE(); /*uint16 unk2 =*/ stream.readUint16BE(); - return cast; } -TextCast *Score::getTextCast(Common::SeekableReadStream &stream) { - TextCast *cast = new TextCast(); +TextCast::TextCast(Common::SeekableReadStream &stream) { /*byte flags =*/ stream.readByte(); - cast->borderSize = stream.readByte(); - cast->gutterSize = stream.readByte(); - cast->boxShadow = stream.readByte(); - cast->textType = stream.readByte(); - cast->textAlign = stream.readUint16BE(); + borderSize = stream.readByte(); + gutterSize = stream.readByte(); + boxShadow = stream.readByte(); + textType = stream.readByte(); + textAlign = stream.readUint16BE(); stream.skip(6); //palinfo /*uint32 unk1 = */ stream.readUint32BE(); - cast->initialRect = readRect(stream); - cast->textShadow = stream.readByte(); - cast->textFlags = stream.readByte(); + initialRect = Score::readRect(stream); + textShadow = stream.readByte(); + textFlags = stream.readByte(); /*uint16 unk2 =*/ stream.readUint16BE(); - return cast; } -ShapeCast *Score::getShapeCast(Common::SeekableReadStream &stream) { - ShapeCast *cast = new ShapeCast(); +ShapeCast::ShapeCast(Common::SeekableReadStream &stream) { /*byte flags = */ stream.readByte(); /*unk1 = */ stream.readByte(); - cast->shapeType = stream.readByte(); - cast->initialRect = readRect(stream); - cast->pattern = stream.readUint16BE(); - cast->fgCol = stream.readByte(); - cast->bgCol = stream.readByte(); - cast->fillType = stream.readByte(); - cast->lineThickness = stream.readByte(); - cast->lineDirection = stream.readByte(); - return cast; -} - -ButtonCast *Score::getButtonCast(Common::SeekableReadStream &stream) { - ButtonCast *cast = new ButtonCast(); - /*byte flags =*/ stream.readByte(); - cast->borderSize = stream.readByte(); - cast->gutterSize = stream.readByte(); - cast->boxShadow = stream.readByte(); - cast->textType = stream.readByte(); - cast->textAlign = stream.readUint16BE(); - stream.skip(6); //palinfo - /*uint32 unk1 = */ stream.readUint32BE(); - cast->initialRect = readRect(stream); - cast->textShadow = stream.readByte(); - cast->textFlags = stream.readByte(); - /*uint16 unk2 =*/ stream.readUint16BE(); - cast->buttonType = stream.readUint16BE(); - return cast; + shapeType = stream.readByte(); + initialRect = Score::readRect(stream); + pattern = stream.readUint16BE(); + fgCol = stream.readByte(); + bgCol = stream.readByte(); + fillType = stream.readByte(); + lineThickness = stream.readByte(); + lineDirection = stream.readByte(); } Common::Rect Score::readRect(Common::SeekableReadStream &stream) { diff --git a/engines/director/score.h b/engines/director/score.h index 9e729c2570..299a26cf40 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -76,6 +76,7 @@ struct Cast { }; struct BitmapCast : Cast { + BitmapCast(Common::SeekableReadStream &stream); Common::Rect boundingRect; uint16 regX; uint16 regY; @@ -83,6 +84,7 @@ struct BitmapCast : Cast { }; struct ShapeCast : Cast { + ShapeCast(Common::SeekableReadStream &stream); byte shapeType; uint16 pattern; byte fgCol; @@ -93,6 +95,7 @@ struct ShapeCast : Cast { }; struct TextCast : Cast { + TextCast(Common::SeekableReadStream &stream); byte borderSize; byte gutterSize; byte boxShadow; @@ -104,6 +107,9 @@ struct TextCast : Cast { }; struct ButtonCast : TextCast { + ButtonCast(Common::SeekableReadStream &stream) : TextCast(stream) { + buttonType = stream.readUint16BE(); + } //TODO types? uint16 buttonType; }; @@ -150,7 +156,6 @@ public: uint8 _skipFrameFlag; uint8 _blend; Common::Array<Sprite *> _sprites; - }; class Score { @@ -159,14 +164,10 @@ public: void readVersion(uint32 rid); void loadConfig(Common::SeekableReadStream &stream); void loadCastData(Common::SeekableReadStream &stream); + static Common::Rect readRect(Common::SeekableReadStream &stream); void play(); private: - BitmapCast *getBitmapCast(Common::SeekableReadStream &stream); - TextCast *getTextCast(Common::SeekableReadStream &stream); - ButtonCast *getButtonCast(Common::SeekableReadStream &stream); - ShapeCast *getShapeCast(Common::SeekableReadStream &stream); - Common::Rect readRect(Common::SeekableReadStream &stream); void processEvents(); void display(); |