Blame view

ios/Runner/Wowgame/Classes/game_food/GameLifeIndicatorView.h 2.59 KB
cb213901   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
  //
  //  GameLifeIndicatorView.h
  //  SteveAndMaggieGame
  //
  //  Created by Katarzyna Kalinowska-Górska on 21/06/2019.
  //
  
  #ifndef GameLifeIndicatorView_h
  #define GameLifeIndicatorView_h
  
  #include <string>
  #include "cocos2d.h"
  #include "MiscUtils.h"
  
  #endif /* GameLifeIndicatorView_h */
  
  class GameLifeIndicatorView : public cocos2d::Layer {
  public:
      static GameLifeIndicatorView* create(std::string liveImagePath, std::string deadImagePath, int maxLives);
      virtual int loseLife(); //return current number of lives
      virtual int restoreLife();
      virtual void reset();
      virtual float getPaddingX();
      
  protected:
      bool init(std::string liveImagePath, std::string deadImagePath, int maxLives);
      static constexpr float PADDING_MULTIPLIER = 0.1f;
      
      virtual ~GameLifeIndicatorView();
      
      class LifeItem {
      public:
          bool isActive;
          cocos2d::Sprite* lifeSprite;
          cocos2d::Sprite* deadSprite;
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
36
          constexpr static const uint8_t DEAD_OPACITY = 128;
cb213901   xiaoyu   添加一个游戏的源码和编译选项
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
          
          LifeItem(std::string liveImagePath, std::string deadImagePath){
              isActive = true;
              lifeSprite = cocos2d::Sprite::create(liveImagePath);
              lifeSprite->retain();
              deadSprite = cocos2d::Sprite::create(deadImagePath);
              deadSprite->retain();
              deadSprite->setOpacity(0);
          }
          
          ~LifeItem(){
              if(deadSprite != nullptr){
                  deadSprite->removeFromParent();
                  deadSprite->release();
              }
              if(lifeSprite != nullptr){
                  lifeSprite->removeFromParent();
                  lifeSprite->release();
              }
          }
          
          virtual void activate(bool animated){
              isActive = true;
              if(animated){
                  lifeSprite->runAction(cocos2d::FadeIn::create(MiscUtils::StandardAnimationTime));
                  deadSprite->runAction(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime));
              } else {
                  lifeSprite->setOpacity(255);
                  deadSprite->setOpacity(0);
              }
          }
          
          virtual void deactivate(bool animated){
              isActive = false;
              if(animated){
                  lifeSprite->runAction(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime));
                  deadSprite->runAction(cocos2d::FadeTo::create(MiscUtils::StandardAnimationTime, DEAD_OPACITY));
              } else {
                  lifeSprite->setOpacity(0);
                  deadSprite->setOpacity(DEAD_OPACITY);
              }
          }
      };
      
      std::vector<LifeItem*> lives;
      int currentLives;
  };