From b82a0fa3e5f36e8b0b47ff129ad18fe93bdac225 Mon Sep 17 00:00:00 2001 From: uruk Date: Sat, 24 May 2014 09:04:41 +0200 Subject: CGE2: Add isHero(). --- engines/cge2/cge2.h | 1 + engines/cge2/cge2_main.cpp | 4 ++++ engines/cge2/spare.cpp | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/cge2/cge2.h b/engines/cge2/cge2.h index 4e5adde36d..8e45ba3ba7 100644 --- a/engines/cge2/cge2.h +++ b/engines/cge2/cge2.h @@ -126,6 +126,7 @@ public: void mainLoop(); void handleFrame(); Sprite *locate(int ref); + bool isHero(Sprite *spr); void setEye(V3D &e); void setEye(const V2D& e2, int z = -kScrWidth); diff --git a/engines/cge2/cge2_main.cpp b/engines/cge2/cge2_main.cpp index 5dcec22178..cf4b4fd66d 100644 --- a/engines/cge2/cge2_main.cpp +++ b/engines/cge2/cge2_main.cpp @@ -448,6 +448,10 @@ Sprite *CGE2Engine::locate(int ref) { return spr; } +bool CGE2Engine::isHero(Sprite *spr) { + return spr && spr->_ref / 10 == 14; +} + void CGE2Engine::tick() { for (Sprite *spr = _vga->_showQ->first(); spr; spr = spr->_next) { if (spr->_time) { diff --git a/engines/cge2/spare.cpp b/engines/cge2/spare.cpp index 2f7a1381bf..650af7b273 100644 --- a/engines/cge2/spare.cpp +++ b/engines/cge2/spare.cpp @@ -72,7 +72,7 @@ void Spare::dispose(Sprite *spr) { if (spr) { _vm->_vga->_showQ->remove(spr); update(spr->contract()); - if (spr->_ref / 10 != 14) { // IIRC if it's == 14, it's the sprite of a Hero. No idea yet why it shouldn't be deleted then. + if (!_vm->isHero(spr)) { for (int i = 0; i < _container.size(); i++) { if (spr == _container[i]) { _container.remove_at(i); -- cgit v1.2.3