Files
wnmj/Classes/Games/NiuNiu/NN_BigCardSprite.cpp
2026-02-13 14:34:15 +08:00

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);
}