// // ToyGameLifeIndicatorView.h // SteveAndMaggieGame // // Created by Katarzyna Kalinowska-Górska on 21/06/2019. // #ifndef ToyGameLifeIndicatorView_h #define ToyGameLifeIndicatorView_h #include #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 lives; int currentLives; };