bool CommandMakeEvent::finalize() { if ( m_event.isValid() ) { EventView* view = dynamic_cast<EventView*>( owner() ); Q_ASSERT( view ); // this command is "owned" by the event view view->makeVisibleAndCurrent( m_event ); emit finishedOk( m_event ); return true; } else { return false; } }
bool CommandMakeEvent::finalize() { if ( m_rollback ) return false; if ( m_event.isValid() ) { EventView* view = dynamic_cast<EventView*>( owner() ); if ( view ) view->makeVisibleAndCurrent( m_event ); emit finishedOk( m_event ); return true; } else { return false; } }
// If saucer and player collide, mark both for deletion. void Saucer::hit(EventCollision *p_c) { // If Saucer on Saucer, ignore. if ((p_c->getObject1()->getType() == "Saucer") && (p_c->getObject2()->getType() == "Saucer")) return; // If Bullet ... if ((p_c->getObject1()->getType() == "Bullet") || (p_c->getObject2()->getType() == "Bullet")) { // Create an explosion. Explosion *p_explosion = new Explosion; p_explosion->setPosition(this->getPosition()); auto& worldMgr = WorldManager::getInstance(); EventView ev; ev.setDelta(true); ev.setValue(10); ev.setTag("Score"); worldMgr.onEvent(&ev); // Saucers appear stay around perpetually. new Saucer; } // If Hero, mark both objects for destruction. if (((p_c->getObject1()->getType()) == "Hero") || ((p_c->getObject2()->getType()) == "Hero")) { WorldManager &world_manager = WorldManager::getInstance(); world_manager.markForDelete(p_c->getObject1()); world_manager.markForDelete(p_c->getObject2()); } }