#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(m_pRootPanel->getChildByName("imgCardBack")); CC_ASSERT(_imgCardBack != nullptr); ////牌值; //_imgCardNum = static_cast(m_pRootPanel->getChildByName("imgCardNum")); //CC_ASSERT(_imgCardNum != nullptr); ////花色; //_imgCardColor = static_cast(m_pRootPanel->getChildByName("imgCardColor")); //CC_ASSERT(_imgCardColor != nullptr); //_imgCardMark = static_cast(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); }