aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorstevenhoefel2017-03-03 15:20:59 +1100
committerstevenhoefel2017-03-03 15:20:59 +1100
commitaafd10d3d1e807b21e064a2be65e85311ed9cc30 (patch)
tree487900a7ad75c8bdc700a07571ef921b0f47ba35 /engines
parent64b970ef64992231f7cccf12b9c5e162c39b2d5f (diff)
downloadscummvm-rg350-aafd10d3d1e807b21e064a2be65e85311ed9cc30.tar.gz
scummvm-rg350-aafd10d3d1e807b21e064a2be65e85311ed9cc30.tar.bz2
scummvm-rg350-aafd10d3d1e807b21e064a2be65e85311ed9cc30.zip
DIRECTOR: Correctly return TextCast rectangle for D2/3.
Diffstat (limited to 'engines')
-rw-r--r--engines/director/cast.cpp19
-rw-r--r--engines/director/frame.cpp4
2 files changed, 17 insertions, 6 deletions
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index dbfb2c11b4..0f63a96435 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -94,12 +94,23 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
palinfo2 = stream.readUint16();
palinfo3 = stream.readUint16();
- int t = stream.readUint32();
- if (t != 0) { // In D2 there are values
- warning("TextCast: t: %x", t);
+ if (version == 2) {
+ int t = stream.readUint16();
+ if (t != 0) { // In D2 there are values
+ warning("TextCast: t: %x", t);
+ }
+
+ initialRect = Score::readRect(stream);
+ stream.readUint16();
+ } else {
+ int t = stream.readUint32();
+ if (t != 0) { // In D2 there are values
+ warning("TextCast: t: %x", t);
+ }
+
+ initialRect = Score::readRect(stream);
}
- initialRect = Score::readRect(stream);
textShadow = static_cast<SizeType>(stream.readByte());
byte flags = stream.readByte();
if (flags & 0x1)
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index df03f998cd..50627d6d16 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -906,8 +906,8 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
int x = _sprites[spriteId]->_startPoint.x; // +rectLeft;
int y = _sprites[spriteId]->_startPoint.y; // +rectTop;
- int height = _sprites[spriteId]->_height;
- int width = _sprites[spriteId]->_width;
+ int height = _sprites[spriteId]->_cast->initialRect.height(); //_sprites[spriteId]->_height;
+ int width = _sprites[spriteId]->_cast->initialRect.width(); //_sprites[spriteId]->_width;
if (_vm->getVersion() >= 4 && textSize != NULL)
width = textCast->initialRect.right;