diff options
Diffstat (limited to 'engines/cge2/spare.cpp')
-rw-r--r-- | engines/cge2/spare.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/cge2/spare.cpp b/engines/cge2/spare.cpp index be2fc64d23..043122199c 100644 --- a/engines/cge2/spare.cpp +++ b/engines/cge2/spare.cpp @@ -45,6 +45,19 @@ Sprite *Spare::locate(int ref) { return nullptr; } +Sprite *Spare::take(int ref) { + Sprite *spr = nullptr; + if ((spr = locate(ref)) != nullptr) { + for (uint i = 0; i < _container.size(); ++i) { + if (spr == _container[i]) { + _container.remove_at(i); + break; + } + } + } + return spr; +} + void Spare::takeCave(int cav) { int bakRef = cav << 8; Common::Array<Sprite*> tempCont = _container; @@ -52,6 +65,7 @@ void Spare::takeCave(int cav) { Sprite *spr = tempCont[i]; int c = spr->_scene; if ((c == _vm->_now || c == 0) && spr->_ref != bakRef) { + spr = take(spr->_ref); _vm->_vga->_showQ->insert(spr); } } |