void SwarmGame::transformToZombie(EntitySprite& entity) { EntityType toType; if (transformToType(entity.m_entity->type(), toType)) { MobileEntity* zombie = static_cast<MobileEntity*>(EntityFactory::instance().createEntity(toType)); if ( NULL != zombie ) { m_ZombieSwarm.addEntity(zombie); CCTexture2D* entityTexture = NULL; CCTextureCache* textureCache = CCTextureCache::sharedTextureCache(); entityTexture = textureCache->textureForKey(xmlDataManager::instance().getEntitySprite (toType)); int mapHeight = m_map.height() * c_blockSize; //create new sprite SpriteEntity* sprite = SpriteEntity::spriteWithEntity(zombie); sprite->setAnchorPoint(entity.m_sprite->getAnchorPoint()); sprite->setScaleX(entity.m_sprite->getScaleX()); sprite->setScaleY(entity.m_sprite->getScaleY()); sprite->setPosition(entity.m_sprite->getPosition()); m_mapLayer->removeChild(entity.m_sprite, true); entity.m_sprite = sprite; entity.m_sprite->setMaxHealth( zombie->hitPoints() ); entity.m_sprite->setIsVisible(true); m_mapLayer->addChild(entity.m_sprite); //TODO: add more properties m_map.removeEntity(entity.m_entity); m_map.placeEntity(zombie, entity.m_entity->x(), entity.m_entity->y()); m_ZombieSwarm.removeTarget(entity.m_entity); m_HumanSwarm.removeEntity(entity.m_entity, true); //m_map->removeEntity(entity.m_entity); m_HumanSwarm.addTarget (zombie); entity.m_entity = zombie; } } }