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

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