From 4546cb96715736fd046680c5e170b435291dcf76 Mon Sep 17 00:00:00 2001 From: Andrei Prykhodko Date: Tue, 20 Aug 2019 17:07:24 +0300 Subject: [PATCH] PETKA: reimplemented show method of QObject --- engines/petka/interfaces/interface.cpp | 9 +++++++++ engines/petka/interfaces/interface.h | 2 ++ engines/petka/objects/object.cpp | 12 ++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/engines/petka/interfaces/interface.cpp b/engines/petka/interfaces/interface.cpp index 85a45dd5bf8e..8141a646f87c 100644 --- a/engines/petka/interfaces/interface.cpp +++ b/engines/petka/interfaces/interface.cpp @@ -32,4 +32,13 @@ void Interface::setText(const Common::U32String &text, uint32 rgb) { _objs.push_back(new QText(text, rgb)); } +QVisibleObject *Interface::findObject(int resourceId) { + for (uint i = 0; i < _objs.size(); ++i) { + if (_objs[i]->_resourceId == resourceId) { + return _objs[i]; + } + } + return nullptr; +} + } // End of namespace Petka diff --git a/engines/petka/interfaces/interface.h b/engines/petka/interfaces/interface.h index 3db864d0328a..da1fa0d0337a 100644 --- a/engines/petka/interfaces/interface.h +++ b/engines/petka/interfaces/interface.h @@ -46,6 +46,8 @@ class Interface { void setText(const Common::U32String &text, uint32 rgb); + QVisibleObject *findObject(int resourceId); + public: Common::Array _objs; QVisibleObject *_objUnderCursor; diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp index 1f38fa04849e..f9b00044b6d3 100644 --- a/engines/petka/objects/object.cpp +++ b/engines/petka/objects/object.cpp @@ -396,14 +396,10 @@ void QObject::updateZ() { } void QObject::show(bool v) { - const Common::Array & objs = g_vm->getQSystem()->_mainInterface->_objs; - for (uint i = 0; i < objs.size(); ++i) { - if (objs[i]->_resourceId == _resourceId) { - FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId); - if (flc) { - g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc); - } - break; + if (g_vm->getQSystem()->_mainInterface->findObject(_resourceId)) { + FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId); + if (flc) { + g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc); } } QMessageObject::show(v);