From a7b7bebfcdee7e9bd8573396484f15bf628abfe2 Mon Sep 17 00:00:00 2001 From: "Pragyansh Chaturvedi (r41k0u)" Date: Tue, 14 Jun 2022 08:47:31 +0530 Subject: [PATCH] DIRECTOR: LINGO: Implement kTheModified field in CastMember::getField() --- engines/director/castmember.cpp | 7 +++++++ engines/director/castmember.h | 3 ++- engines/director/lingo/lingo-object.cpp | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp index bc7b84792873..79a9f22c23ed 100644 --- a/engines/director/castmember.cpp +++ b/engines/director/castmember.cpp @@ -48,6 +48,7 @@ CastMember::CastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndi _flags1 = 0; _modified = true; + _isChanged = false; _objType = kCastMemberObj; @@ -59,6 +60,12 @@ CastMemberInfo *CastMember::getInfo() { return _cast->getCastMemberInfo(_castId); } +void CastMember::setModified(bool modified) { + _modified = modified; + if (modified) + _isChanged = true; +} + ///////////////////////////////////// // Bitmap diff --git a/engines/director/castmember.h b/engines/director/castmember.h index 27ee98750b23..91c36ab0d719 100644 --- a/engines/director/castmember.h +++ b/engines/director/castmember.h @@ -73,7 +73,7 @@ class CastMember : public Object { virtual bool isEditable() { return false; } virtual void setEditable(bool editable) {} virtual bool isModified() { return _modified; } - virtual void setModified(bool modified) { _modified = modified; } + void setModified(bool modified); virtual Graphics::MacWidget *createWidget(Common::Rect &bbox, Channel *channel, SpriteType spriteType) { return nullptr; } virtual void updateWidget(Graphics::MacWidget *widget, Channel *channel) {} virtual void updateFromWidget(Graphics::MacWidget *widget) {} @@ -110,6 +110,7 @@ class CastMember : public Object { // a link to the widget we created, we may use it later Graphics::MacWidget *_widget; bool _modified; + bool _isChanged; }; class BitmapCastMember : public CastMember { diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp index 671afef6010e..90e47d5e1d69 100644 --- a/engines/director/lingo/lingo-object.cpp +++ b/engines/director/lingo/lingo-object.cpp @@ -661,7 +661,7 @@ Datum CastMember::getField(int field) { d = 1; // Not loaded handled in Lingo::getTheCast break; case kTheModified: - warning("STUB: CastMember::getField():: Unprocessed getting field \"%s\" of cast %d", g_lingo->field2str(field), _castId); + d = (int)_isChanged; break; case kTheName: if (castInfo)