#include "DZ_BigCardSprite.h" #include "CardDefine.h" #include "cocostudio/CocoStudio.h" using namespace cocostudio; /////////////////////////////////////////////////////////////////////////// DZBigCardSprite::DZBigCardSprite() : m_pRootPanel(nullptr), m_bCardShoot(false), m_bCardSelect(false), m_bSelectEnabled(true), m_bMustShoot(false), m_cbCardData(0) { } DZBigCardSprite:: ~DZBigCardSprite() { } DZBigCardSprite* DZBigCardSprite::create(uint8 cbCardData, bool bLord/* = false*/) { DZBigCardSprite *pRet = new DZBigCardSprite(); if (pRet && pRet->init(cbCardData, bLord)) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; } bool DZBigCardSprite::init(uint8 cbCardData, bool bLord) { if (!LayerColor::init()) { return false; } m_cbCardData = cbCardData; //加载界面数据 m_pRootPanel = CSLoader::createNode("Games/DaZha/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); SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance(); pSpriteFrameCache->addSpriteFramesWithFile("Games/DaZha/Table/PinCard.plist"); updateUIData(cbCardData, bLord); return true; } void DZBigCardSprite::updateUIData(uint8 cbCardData, bool bLord/* = false*/) { SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance(); //加载牌背 if (cbCardData == 0) { _imgCardNum->setVisible(false); _imgCardColor->setVisible(false); _imgCardMark->setVisible(false); _imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardBack.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) { _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 DZBigCardSprite::onEnter() { LayerColor::onEnter(); } void DZBigCardSprite::onExit() { LayerColor::onExit(); } void DZBigCardSprite::onEnterTransitionDidFinish() { LayerColor::onEnterTransitionDidFinish(); } //弹起 void DZBigCardSprite::shootCard() { toNormal(); m_bCardShoot = true; this->runAction(MoveBy::create(0.1f, Vec2(0,20))); } //落下 void DZBigCardSprite::downCard() { toNormal(); m_bCardShoot = false; this->runAction(MoveBy::create(0.1f, Vec2(0,-20))); } //变灰 void DZBigCardSprite::toGray() { m_bCardSelect = true; m_pRootPanel->setColor(Color3B(126, 126, 126)); } //正常 void DZBigCardSprite::toNormal() { m_bCardSelect = false; m_pRootPanel->setColor(Color3B(255, 255, 255)); } //判断区域 bool DZBigCardSprite::containsTouchLocation(Touch *pTouch, int nCardWidth) { Vec2 ptTouch = this->getParent()->convertTouchToNodeSpace(pTouch); Rect rcCardSprite = Rect(this->getPosition().x, this->getPosition().y, nCardWidth, DZ_BIG_CARD_HEIGHT); return rcCardSprite.containsPoint(ptTouch); }