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

205 lines
5.9 KiB
C++

#include "DZ_SmallCardSprite.h"
#include "CardDefine.h"
#include "cocostudio/CocoStudio.h"
using namespace cocostudio;
///////////////////////////////////////////////////////////////////////////
DZSmallCardSprite::DZSmallCardSprite() : m_pRootPanel(NULL),
m_bCardShoot(false), m_bCardSelect(false), m_bSelectEnabled(true), m_bMustShoot(false), m_cbCardData(0)
{
}
DZSmallCardSprite:: ~DZSmallCardSprite()
{
}
DZSmallCardSprite* DZSmallCardSprite::create(uint8 cbCardData)
{
DZSmallCardSprite *pRet = new DZSmallCardSprite();
if (pRet && pRet->init(cbCardData))
{
pRet->autorelease();
return pRet;
}
CC_SAFE_DELETE(pRet);
return NULL;
}
bool DZSmallCardSprite::init(uint8 cbCardData)
{
if (!LayerColor::init())
{
return false;
}
//加载界面数据;
m_pRootPanel = CSLoader::createNode("Games/DaZha/SmallCardSprite.csb");
CC_ASSERT(m_pRootPanel!=nullptr);
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);
SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance();
pSpriteFrameCache->addSpriteFramesWithFile("Games/DaZha/Table/PinCard.plist");
updateUIData(cbCardData);
return true;
}
void DZSmallCardSprite::updateUIData(uint8 cbCardData)
{
SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance();
m_cbCardData = cbCardData;
//加载牌背;
if (cbCardData == 0)
{
_imgCardNum->setVisible(false);
_imgCardColor->setVisible(false);
_imgCardMark->setVisible(false);
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardBack.png"));
}
else
{
_imgCardNum->setVisible(true);
_imgCardColor->setVisible(true);
_imgCardMark->setVisible(true);
int nCardColor = m_ClientLogic.GetCardColor(cbCardData);
int nCardValue = m_ClientLogic.GetCardValue(cbCardData);
_imgCardBack->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardFront.png"));
if (nCardColor == CCLR_DIAMONDS || nCardColor == CCLR_HEART) //方块、红桃;
{
SpriteFrame* pCardNumSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("sCardNum1%d.png", nCardValue));
CC_ASSERT(pCardNumSpriteFrame != nullptr);
_imgCardNum->setSpriteFrame(pCardNumSpriteFrame);
if (nCardColor == CCLR_DIAMONDS)//方块;
{
_imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor0.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor10.png"));
}
else //红桃;
{
_imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor2.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor12.png"));
}
//if (nCardValue >= CVAL_J && nCardValue <= CVAL_K)
//{
// SpriteFrame* pCardColorSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("sCardColor1%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("sCardNum2%d.png", nCardValue));
CC_ASSERT(pCardNumSpriteFrame != nullptr);
_imgCardNum->setSpriteFrame(pCardNumSpriteFrame);
if (nCardColor == CCLR_PLUM) //梅花;
{
_imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor1.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor11.png"));
}
else //黑桃
{
_imgCardColor->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor3.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("bCardColor13.png"));
}
//if (nCardValue >= CVAL_J && nCardValue <= CVAL_K)
//{
// SpriteFrame* pCardColorSpriteFrame = pSpriteFrameCache->getSpriteFrameByName(StringUtils::format("sCardColor2%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("sCardNum214.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor28.png"));
}
else if (nCardValue == CVAL_BIG_JOKER)
{
_imgCardNum->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardNum114.png"));
_imgCardMark->setSpriteFrame(pSpriteFrameCache->getSpriteFrameByName("sCardColor18.png"));
}
}
}
}
void DZSmallCardSprite::onEnter()
{
LayerColor::onEnter();
}
void DZSmallCardSprite::onExit()
{
LayerColor::onExit();
}
void DZSmallCardSprite::onEnterTransitionDidFinish()
{
LayerColor::onEnterTransitionDidFinish();
}
//弹起;
void DZSmallCardSprite::shootCard()
{
toNormal();
m_bCardShoot = true;
this->runAction(MoveBy::create(0.1f, Vec2(0, 20)));
}
//落下;
void DZSmallCardSprite::downCard()
{
toNormal();
m_bCardShoot = false;
this->runAction(MoveBy::create(0.1f, Vec2(0, -20)));
}
//变灰;
void DZSmallCardSprite::toGray()
{
m_bCardSelect = true;
m_pRootPanel->setColor(Color3B(126, 126, 126));
}
//正常;
void DZSmallCardSprite::toNormal()
{
m_bCardSelect = false;
m_pRootPanel->setColor(Color3B(255, 255, 255));
}