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