Blame view

ios/Runner/Wowgame/Classes/game_halloween/HGameLifeIndicatorView.h 2.6 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
  //
  //  HGameLifeIndicatorView.h
  //  SteveAndMaggieGame
  //
  //  Created by Katarzyna Kalinowska-Górska on 21/06/2019.
  //
  
  #ifndef HGameLifeIndicatorView_h
  #define HGameLifeIndicatorView_h
  
  #include <string>
  #include "cocos2d.h"
  #include "HMiscUtils.h"
  
  #endif /* HGameLifeIndicatorView_h */
  
  class HGameLifeIndicatorView : public cocos2d::Layer {
  public:
      static HGameLifeIndicatorView* 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 ~HGameLifeIndicatorView();
      
      class LifeItem {
      public:
          bool isActive;
          cocos2d::Sprite* lifeSprite;
          cocos2d::Sprite* deadSprite;
          constexpr static const uint8_t DEAD_OPACITY = 128;
          
          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(HMiscUtils::StandardAnimationTime));
                  deadSprite->runAction(cocos2d::FadeOut::create(HMiscUtils::StandardAnimationTime));
              } else {
                  lifeSprite->setOpacity(255);
                  deadSprite->setOpacity(0);
              }
          }
          
          virtual void deactivate(bool animated){
              isActive = false;
              if(animated){
                  lifeSprite->runAction(cocos2d::FadeOut::create(HMiscUtils::StandardAnimationTime));
                  deadSprite->runAction(cocos2d::FadeTo::create(HMiscUtils::StandardAnimationTime, DEAD_OPACITY));
              } else {
                  lifeSprite->setOpacity(0);
                  deadSprite->setOpacity(DEAD_OPACITY);
              }
          }
      };
      
      std::vector<LifeItem*> lives;
      int currentLives;
  };