示例#1
0
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));
}
示例#2
0
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));
}
示例#3
0
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));
}
示例#4
0
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));
}
示例#5
0
void GameScene::toMainMenu() {
    enableGame(false);
    auto trans = TransitionFade::create(0.5, LevelScene::getInstance());
    Director::getInstance()->replaceScene(trans);
}