void GameLevel::dieImpl() { mDieFlag = false; pause(); // Camera effect. getGameLayer()->getBlockRoot()->runAction(CameraShake::create(0.3f, 10)); auto hero = getHero(); // Particle effect. ParticleSystem *ps = ParticleSystemQuad::create(DIE_FX_NAME); ParticleBatchNode *batch = ParticleBatchNode::createWithTexture(ps->getTexture()); batch->addChild(ps); batch->setPosition(hero->getRenderer()->getPosition()); batch->setCameraMask((unsigned short) CameraFlag::USER2); mGameLayer->getBlockRoot()->addChild(batch, ZORDER_DIE_FX, DIE_FX_TAG); hero->getRenderer()->getNode()->runAction(Sequence::create(ScaleTo::create(0.2, 0.1, 0.1), CallFunc::create([this] { getHero()->getRenderer()->setVisible(false); }), nullptr)); mGameLayer->runAction(Sequence::create(DelayTime::create(0.5), CallFunc::create([this] { enableGame(false); enableGame(true); }), nullptr)); }
void GameScene::onWinGame() { enableGame(false); if(mTimerLabel->getPositionY() < VisibleRect::top().y) { showHideMenu(true); } this->runAction(Sequence::create(DelayTime::create(0.3), CallFunc::create([this]{ toMainMenu(); }), NULL)); }
void GameLevel::showBeginCurtain() { updateCamera(mGameLayer->getCamera(), true); initCurtainPos(); auto camera = mGameLayer->getCamera(); camera->setPositionY(camera->getPositionY() - VIS_RECT_HEIGHT); camera->runAction(Sequence::create(MoveBy::create(GameConfig::instance().CurtainMoveTime, Vec2(0, VIS_RECT_HEIGHT)), CallFunc::create([this]() { enableGame(true); }), nullptr)); }
void GameLevel::showWinCurtain() { initCurtainPos(); pause(); auto camPos = mGameLayer->getCamera()->getPosition(); float curtainTime = GameConfig::instance().CurtainMoveTime; Vec2 offset(0, -VIS_RECT_HEIGHT); mGameLayer->getCamera()->runAction(Sequence::create(MoveBy::create(curtainTime, offset), CallFunc::create([this]() { mWinFlag = false; enableGame(false); if (mWinGameEvent) { mWinGameEvent(); } }), nullptr)); }
void GameScene::toMainMenu() { enableGame(false); auto trans = TransitionFade::create(0.5, LevelScene::getInstance()); Director::getInstance()->replaceScene(trans); }