#include "DDZ_BigCardSprite.h" #include "CardDefine.h" #include "cocostudio/CocoStudio.h" using namespace cocostudio; /////////////////////////////////////////////////////////////////////////// DDZBigCardSprite::DDZBigCardSprite() : m_pRootPanel(nullptr), m_bCardShoot(false), m_bCardSelect(false), m_cbCardData(0) { } DDZBigCardSprite:: ~DDZBigCardSprite() { } DDZBigCardSprite* DDZBigCardSprite::create(uint8 cbCardData, bool bLord/* = false*/) { DDZBigCardSprite *pRet = new DDZBigCardSprite(); if (pRet && pRet->init(cbCardData, bLord)) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; } bool DDZBigCardSprite::init(uint8 cbCardData, bool bLord) { if (!LayerColor::init()) { return false; } m_cbCardData = cbCardData; //加载界面数据 m_pRootPanel = CSLoader::createNode("Games/DDZ/BigCardSprite.csb"); this->addChild(m_pRootPanel); this->ignoreAnchorPointForPosition(false); this->setAnchorPoint(Vec2::ZERO); this->setContentSize(m_pRootPanel->getContentSize()); //绑定界面元素 _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); //角标 _imgCardCorner = static_cast(m_pRootPanel->getChildByName("imgCardCorner")); CC_ASSERT(_imgCardCorner != nullptr); SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance(); pSpriteFrameCache->addSpriteFramesWithFile("Games/DDZ/Table/PinCard.plist"); updateUIData(cbCardData, bLord); return true; } void DDZBigCardSprite::updateUIData(uint8 cbCardData, bool bLord/* = false*/) { SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance(); //加载牌背 if (cbCardData == 0) { _imgCardNum->setVisible(false); _imgCardColor->setVisible(false); _imgCardMark->setVisible(false); _imgCardCorner->setVisible(false); _imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardBack.png")); } else { _imgCardCorner->setVisible(bLord); int nCardColor = m_ClientLogic.GetCardColor(cbCardData); int nCardValue = m_ClientLogic.GetCardValue(cbCardData); _imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardFront.png")); //if (m_ClientLogic.IsLaiZiCard(cbCardData)) //{ // if (nCardColor == CCLR_DIAMONDS || nCardColor == CCLR_HEART) //方块、红桃 // { // _imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardNum1%d.png", nCardValue))); // } // else if (nCardColor == CCLR_PLUM || nCardColor == CCLR_SPADE) //梅花、黑桃 // { // _imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardNum2%d.png", nCardValue))); // } // else // { // //赖子 // _imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("bCardNum1%d.png", nCardValue))); // } // _imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor14.png")); // _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor24.png")); //} //else { 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) { _imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardNum214.png")); _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor28.png")); } else if (nCardValue == CVAL_BIG_JOKER) { _imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardNum114.png")); _imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor18.png")); } } } } } void DDZBigCardSprite::onEnter() { LayerColor::onEnter(); } void DDZBigCardSprite::onExit() { LayerColor::onExit(); } void DDZBigCardSprite::onEnterTransitionDidFinish() { LayerColor::onEnterTransitionDidFinish(); } //弹起 void DDZBigCardSprite::shootCard() { toNormal(); m_bCardShoot = true; this->runAction(MoveBy::create(0.1f, Vec2(0,20))); } //落下 void DDZBigCardSprite::downCard() { toNormal(); m_bCardShoot = false; this->runAction(MoveBy::create(0.1f, Vec2(0,-20))); } //变灰 void DDZBigCardSprite::toGray() { m_bCardSelect = true; m_pRootPanel->setColor(Color3B(126, 126, 126)); } //正常 void DDZBigCardSprite::toNormal() { m_bCardSelect = false; m_pRootPanel->setColor(Color3B(255, 255, 255)); } //判断区域 bool DDZBigCardSprite::containsTouchLocation(Touch *pTouch, int nCardWidth) { Vec2 ptTouch = this->getParent()->convertTouchToNodeSpace(pTouch); Rect rcCardSprite = Rect(this->getPosition().x, this->getPosition().y, nCardWidth, DDZ_BIG_CARD_HEIGHT); return rcCardSprite.containsPoint(ptTouch); }