202 lines
6.0 KiB
C++
202 lines
6.0 KiB
C++
|
|
#include "NN_BigCardSprite.h"
|
|
|
|
#include "cocostudio/CocoStudio.h"
|
|
using namespace cocostudio;
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
NNBigCardSprite::NNBigCardSprite(Node* pRootNode, uint8 cbCardData) :
|
|
m_pRootPanel(pRootNode), m_bCardShoot(false), m_bCardSelect(false), m_cbCardData(0)
|
|
{
|
|
init(cbCardData);
|
|
}
|
|
|
|
NNBigCardSprite:: ~NNBigCardSprite()
|
|
{
|
|
}
|
|
|
|
bool NNBigCardSprite::init(uint8 cbCardData)
|
|
{
|
|
m_cbCardData = 0x0;
|
|
|
|
//绑定界面元素;
|
|
_imgCardBack = static_cast<Sprite*>(m_pRootPanel->getChildByName("imgCardBack"));
|
|
CC_ASSERT(_imgCardBack != nullptr);
|
|
|
|
////牌值;
|
|
//_imgCardNum = static_cast<Sprite*>(m_pRootPanel->getChildByName("imgCardNum"));
|
|
//CC_ASSERT(_imgCardNum != nullptr);
|
|
|
|
////花色;
|
|
//_imgCardColor = static_cast<Sprite*>(m_pRootPanel->getChildByName("imgCardColor"));
|
|
//CC_ASSERT(_imgCardColor != nullptr);
|
|
|
|
//_imgCardMark = static_cast<Sprite*>(m_pRootPanel->getChildByName("imgCardMark"));
|
|
//CC_ASSERT(_imgCardMark != nullptr);
|
|
|
|
updateUIData(cbCardData);
|
|
|
|
return true;
|
|
}
|
|
|
|
void NNBigCardSprite::updateUIData(uint8 cbCardData)
|
|
{
|
|
m_pRootPanel->setVisible(true);
|
|
|
|
SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance();
|
|
|
|
m_cbCardData = cbCardData;
|
|
|
|
if (isShoot())
|
|
{
|
|
downCard();
|
|
}
|
|
|
|
//加载牌背;
|
|
if (cbCardData == 0)
|
|
{
|
|
//_imgCardNum->setVisible(false);
|
|
//_imgCardColor->setVisible(false);
|
|
//_imgCardMark->setVisible(false);
|
|
|
|
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("oxnn_card_back.png"));
|
|
}
|
|
else
|
|
{
|
|
int nCardColor = m_ClientLogic.GetCardColor(cbCardData);
|
|
int nCardValue = m_ClientLogic.GetCardValue(cbCardData);
|
|
//_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardFront.png"));
|
|
|
|
//_imgCardNum->setVisible(true);
|
|
//_imgCardColor->setVisible(true);
|
|
//_imgCardMark->setVisible(true);
|
|
|
|
////方块、红桃;
|
|
//if (nCardColor == CCLR_DIAMONDS || nCardColor == CCLR_HEART)
|
|
//{
|
|
// SpriteFrame* pCardNumSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardNum1%d.png", nCardValue));
|
|
// CC_ASSERT(pCardNumSpriteFrame != nullptr);
|
|
// _imgCardNum->setSpriteFrame(pCardNumSpriteFrame);
|
|
|
|
// //方块;
|
|
// if (nCardColor == CCLR_DIAMONDS)
|
|
// {
|
|
// _imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor10.png"));
|
|
// _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor20.png"));
|
|
// }
|
|
// //红桃;
|
|
// else
|
|
// {
|
|
// _imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor12.png"));
|
|
// _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor22.png"));
|
|
// }
|
|
|
|
// if (nCardValue >= CVAL_J && nCardValue <= CVAL_K)
|
|
// {
|
|
// SpriteFrame* pCardColorSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardColor1%d.png", nCardValue - 6));
|
|
// CC_ASSERT(pCardColorSpriteFrame != nullptr);
|
|
|
|
// _imgCardMark->setSpriteFrame(pCardColorSpriteFrame);
|
|
// }
|
|
//}
|
|
////梅花、黑桃;
|
|
//else if (nCardColor == CCLR_PLUM || nCardColor == CCLR_SPADE)
|
|
//{
|
|
// SpriteFrame* pCardNumSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardNum2%d.png", nCardValue));
|
|
// CC_ASSERT(pCardNumSpriteFrame != nullptr);
|
|
// _imgCardNum->setSpriteFrame(pCardNumSpriteFrame);
|
|
|
|
// //梅花;
|
|
// if (nCardColor == CCLR_PLUM)
|
|
// {
|
|
// _imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor11.png"));
|
|
// _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor21.png"));
|
|
// }
|
|
// //黑桃;
|
|
// else
|
|
// {
|
|
// _imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor13.png"));
|
|
// _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor23.png"));
|
|
// }
|
|
|
|
// if (nCardValue >= CVAL_J && nCardValue <= CVAL_K)
|
|
// {
|
|
// SpriteFrame* pCardColorSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardColor2%d.png", nCardValue - 6));
|
|
// CC_ASSERT(pCardColorSpriteFrame != nullptr);
|
|
// _imgCardMark->setSpriteFrame(pCardColorSpriteFrame);
|
|
// }
|
|
//}
|
|
//王牌;
|
|
//else
|
|
if (nCardColor == CCLR_JOKER)
|
|
{
|
|
//_imgCardColor->setVisible(false);
|
|
|
|
if (nCardValue == CVAL_LITTLE_JOKER)
|
|
{
|
|
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("oxnn_card_joker_little.png"));
|
|
|
|
//_imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardNum214.png"));
|
|
//_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor28.png"));
|
|
}
|
|
else if (nCardValue == CVAL_BIG_JOKER)
|
|
{
|
|
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("oxnn_card_joker_big.png"));
|
|
//_imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardNum114.png"));
|
|
//_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor18.png"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
std::string strSpriteFrame = StringUtils::format("oxnn_card_%d_%d.png", (nCardColor >> 4), nCardValue);
|
|
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName(strSpriteFrame));
|
|
}
|
|
}
|
|
}
|
|
|
|
//弹起;
|
|
void NNBigCardSprite::shootCard()
|
|
{
|
|
toNormal();
|
|
|
|
m_bCardShoot = true;
|
|
m_pRootPanel->runAction(MoveBy::create(0.1f, Vec2(0,40)));
|
|
}
|
|
|
|
//落下;
|
|
void NNBigCardSprite::downCard()
|
|
{
|
|
toNormal();
|
|
|
|
m_bCardShoot = false;
|
|
m_pRootPanel->runAction(MoveBy::create(0.1f, Vec2(0, -40)));
|
|
}
|
|
|
|
//变灰;
|
|
void NNBigCardSprite::toGray()
|
|
{
|
|
m_bCardSelect = true;
|
|
m_pRootPanel->setColor(Color3B(126, 126, 126));
|
|
}
|
|
|
|
//正常;
|
|
void NNBigCardSprite::toNormal()
|
|
{
|
|
m_bCardSelect = false;
|
|
m_pRootPanel->setColor(Color3B(255, 255, 255));
|
|
}
|
|
|
|
//判断区域;
|
|
bool NNBigCardSprite::containsTouchLocation(Touch *pTouch, int nCardWidth)
|
|
{
|
|
Vec2 ptTouch = m_pRootPanel->getParent()->convertTouchToNodeSpace(pTouch);
|
|
Rect rcCardSprite = Rect(m_pRootPanel->getPosition().x, m_pRootPanel->getPosition().y, nCardWidth, DDZ_BIG_CARD_HEIGHT);
|
|
return rcCardSprite.containsPoint(ptTouch);
|
|
}
|
|
|
|
//获取坐标;
|
|
Vec2 NNBigCardSprite::getPosition()
|
|
{
|
|
Vec2 pos = m_pRootPanel->convertToWorldSpace(Vec2(0,0));
|
|
return Vec2(pos.x, pos.y);
|
|
} |