Blame view

ios/Runner/Wowgame/Classes/game_animal/AniEndScene.cpp 3.06 KB
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  //
  //  AniParentScene.cpp
  //  SteveMaggieCpp
  //
  //  Created by Katarzyna Kalinowska-Górska on 16.05.2017.
  //
  //
  
  #include "AniEndScene.h"
  #include "AniGameConfigParser.h"
  #include "AniPlainLabel.h"
  #include "AniSimpleButton.h"
  
  AniEndScene* AniEndScene::create(std::string layoutFilePath, int score)
  {
      AniEndScene* scene = new (std::nothrow) AniEndScene();
      if(scene && scene->init(layoutFilePath, score))
      {
          scene->autorelease();
          return scene;
      }
      CC_SAFE_DELETE(scene);
      return nullptr;
  }
  
  bool AniEndScene::init(std::string layoutFilePath, int score){
      if(!AniParentScene::initWithConfigurationFiles(layoutFilePath)){
          return false;
      }
      m_score = score;
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
      addBackButtonListener();
  #endif
  
      return true;
  }
  
  void AniEndScene::onEnter(){
      AniParentScene::onEnter();
      loadLayout(true);
      //TODO WHY?!?!?! the only difference to wee don label is that it's in a subnode...
  //    dynamic_cast<AniPlainLabel*>(_objects["scoreLabel"])->setString(std::to_string(m_score));
      auto basket = _objects["basket"];
      auto children = basket->getChildren();
      for(int i =0; i < children.size(); ++i){
          auto l = dynamic_cast<AniPlainLabel*>(children.at(i));
          if(l){
              l->setString(std::to_string(m_score));
          }
      }
  }
  
  void AniEndScene::onEnterTransitionDidFinish(){
      AniParentScene::onEnterTransitionDidFinish();
      auto basket = _objects["basket"];
      auto originalScale = basket->getScale();
      auto scaleBy = 2.f;
      basket->runAction(cocos2d::Sequence::create(cocos2d::EaseBounceOut::create(cocos2d::ScaleBy::create(0.6f, scaleBy)),
                                                  cocos2d::Spawn::create(
                                                                         cocos2d::RotateBy::create(0.3f, 360),
                                                                         cocos2d::ScaleTo::create(0.3f, originalScale),
                                                                         nullptr),nullptr));
  }
  
  bool AniEndScene::touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType)
  {
      /*if(objectName == "settingsButton" && touchEventType == cocos2d::ui::Widget::TouchEventType::ENDED){
          if(!gameState->settingsMenuShown){
              showSettingsMenu();
          } else {
              if(settingsMenu->isShowingParentalGate()){
                  settingsMenu->hideParentalGate();
              } else {
                  settingsMenu->hideParentalGate(); // in case showing parental gate is in progress...
                  hideSettingsMenu();
                  replayGame();
              }
          }
      } else*/ if(objectName == "replayButton" && touchEventType == cocos2d::ui::Widget::TouchEventType::ENDED){
          auto button = dynamic_cast<AniSimpleButton*>(_objects["replayButton"]);
          button->setEnabled(false);
          replayGame();
          return true;
      }
      
      return false;
  }
  
  void AniEndScene::replayGame(){
      cocos2d::Director::getInstance()->replaceScene(AniGameStaticCreator.createGameScene());
  }