diff options
author | uruk | 2014-06-02 14:33:30 +0200 |
---|---|---|
committer | uruk | 2014-06-02 14:33:30 +0200 |
commit | 0e62716038ec5ba108cbc272b1b06b49a608b11b (patch) | |
tree | 787f11a28b8a663cca99c5ab323cd6381c7470c9 /engines | |
parent | 79ef03801d90064291aaa4709c8560c9c98cf5b7 (diff) | |
download | scummvm-rg350-0e62716038ec5ba108cbc272b1b06b49a608b11b.tar.gz scummvm-rg350-0e62716038ec5ba108cbc272b1b06b49a608b11b.tar.bz2 scummvm-rg350-0e62716038ec5ba108cbc272b1b06b49a608b11b.zip |
CGE2: Add and use Spare::take().
Diffstat (limited to 'engines')
-rw-r--r-- | engines/cge2/cge2_main.cpp | 2 | ||||
-rw-r--r-- | engines/cge2/spare.cpp | 14 | ||||
-rw-r--r-- | engines/cge2/spare.h | 1 |
3 files changed, 16 insertions, 1 deletions
diff --git a/engines/cge2/cge2_main.cpp b/engines/cge2/cge2_main.cpp index 1ca99bd5ff..532836186c 100644 --- a/engines/cge2/cge2_main.cpp +++ b/engines/cge2/cge2_main.cpp @@ -399,7 +399,7 @@ void CGE2Engine::switchCave(int cav) { } void CGE2Engine::showBak(int ref) { - Sprite *spr = _spare->locate(ref); + Sprite *spr = _spare->take(ref); if (spr != nullptr) { _bitmapPalette = _vga->_sysPal; spr->expand(); 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); } } diff --git a/engines/cge2/spare.h b/engines/cge2/spare.h index 7bd520d9d0..18909225db 100644 --- a/engines/cge2/spare.h +++ b/engines/cge2/spare.h @@ -40,6 +40,7 @@ public: ~Spare() { clear(); } void store(Sprite *spr); Sprite *locate(int ref); + Sprite *take(int ref); void takeCave(int cav); void update(Sprite *spr); void dispose(Sprite *spr); |