Files
2014-08-20 16:15:02 +08:00

100 lines
3.3 KiB
C++

//
// GameShare_Boom.cpp
// OnceAgain
//
// Created by mac on 14-3-6.
//
//
#include "GameShare_Boom.h"
#include "SpriteFrameManage.h"
enum KEY_SPRITE
{
Key_Energy = 100,
Key_Boom
};
GameShare_Boom::GameShare_Boom(void)
{
}
GameShare_Boom::~GameShare_Boom(void)
{
}
bool GameShare_Boom::init(void)
{
if (!CCSprite::init()) {
return false;
}
maxEnergy = 40;
//能量槽
CCSprite* energyTank = CCSprite::createWithSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/boom_slot.png"));
energyTank->setAnchorPoint(CCPointZero);
energyTank->setPosition(ccp(30-11, 0));
addChild(energyTank);
//能量条
CCSprite* energy = CCSprite::createWithSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/boom_bar.png"));
energy->setAnchorPoint(CCPointZero);
energy->setPosition(ccp(38-11+4, 11));
energy->setTag(Key_Energy);
addChild(energy);
//炸弹
CCSprite* boom = CCSprite::createWithSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/boom_head.png"));
boom->setPosition(ccp(40-11, 50));
boom->setTag(Key_Boom);
// boom->setVisible(false);
addChild(boom);
return true;
}
void GameShare_Boom::addEnergy(unsigned int energyNum)
{
CCScaleTo *scaleBig = CCScaleTo::create(0.1, 1.5);
CCScaleTo *scalemid = CCScaleTo::create(0.1, 1);
if (this->getChildByTag(Key_Boom) && this->getChildByTag(Key_Energy)) {
this->getChildByTag(Key_Boom)->runAction(CCSequence::create(scaleBig,scalemid,NULL));
CCSprite *energy = (CCSprite*)this->getChildByTag(Key_Energy);
CCRect rect = energy->getTextureRect();
const CCRect& rcSrc = CCSpriteFrameManage::getInstance()->spriteFrameByName("common/boom_bar.png")->getRect();
rect.size.width += (rcSrc.size.width/(float)maxEnergy)*((float)energyNum);
if (rect.size.width >= rcSrc.size.width) {
CCNotificationCenter::sharedNotificationCenter()->postNotification(kGameBoomFull, NULL);
rect.size.width -= rcSrc.size.width;
}
energy->setTextureRect(rect);
}
}
void GameShare_Boom::setEnergy(unsigned int energyNum)
{
CCScaleTo *scaleBig = CCScaleTo::create(0.1, 1.5);
CCScaleTo *scalemid = CCScaleTo::create(0.1, 1);
if (this->getChildByTag(Key_Boom) && this->getChildByTag(Key_Energy)) {
this->getChildByTag(Key_Boom)->runAction(CCSequence::create(scaleBig,scalemid,NULL));
CCSprite *energy = (CCSprite*)this->getChildByTag(Key_Energy);
CCRect rect = energy->getTextureRect();
const CCRect& rcSrc = CCSpriteFrameManage::getInstance()->spriteFrameByName("common/boom_bar.png")->getRect();
rect.size.width = (rcSrc.size.width/(float)maxEnergy)*((float)energyNum);
if (rect.size.width >= rcSrc.size.width) {
CCNotificationCenter::sharedNotificationCenter()->postNotification(kGameBoomFull, NULL);
rect.size.width = 0;
}
energy->setTextureRect(rect);
}
}
void GameShare_Boom::resetEnergy()
{
CCSprite *energy = (CCSprite*)this->getChildByTag(Key_Energy);
if (energy) {
CCRect rect = energy->getTextureRect();
rect.size.width = 0;
energy->setTextureRect(rect);
}
}