238 lines
7.2 KiB
C++
238 lines
7.2 KiB
C++
|
|
#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<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);
|
|
|
|
//角标
|
|
_imgCardCorner = static_cast<Sprite*>(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);
|
|
}
|
|
|