aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authoruruk2014-05-24 09:04:41 +0200
committeruruk2014-05-24 09:04:41 +0200
commitb82a0fa3e5f36e8b0b47ff129ad18fe93bdac225 (patch)
tree48ba78bd79357183a224410a8d932e20c44fea4c /engines
parent9c8c734a3c6c5e1af9436a08cde39fe5474e42ac (diff)
downloadscummvm-rg350-b82a0fa3e5f36e8b0b47ff129ad18fe93bdac225.tar.gz
scummvm-rg350-b82a0fa3e5f36e8b0b47ff129ad18fe93bdac225.tar.bz2
scummvm-rg350-b82a0fa3e5f36e8b0b47ff129ad18fe93bdac225.zip
CGE2: Add isHero().
Diffstat (limited to 'engines')
-rw-r--r--engines/cge2/cge2.h1
-rw-r--r--engines/cge2/cge2_main.cpp4
-rw-r--r--engines/cge2/spare.cpp2
3 files changed, 6 insertions, 1 deletions
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);