aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2/spare.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge2/spare.cpp')
-rw-r--r--engines/cge2/spare.cpp14
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);
}
}