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

151 lines
3.6 KiB
C++

#include "WN_WeaveCard.h"
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "cocostudio/CocoStudio.h"
#include "SparrowCard.h"
using namespace WNMJ_SPACE;
///////////////////////////// 新组合牌 /////////////////////////////////////////////
WN_WeaveCard::WN_WeaveCard()
{
}
WN_WeaveCard::~WN_WeaveCard()
{
}
// 结算组合牌
bool WN_WeaveCard::SetCardData(const uint8 cbCardData, DWORD dwOperateCode)
{
if (!uiInit(SP_SELFSTAND)) return false;
if (m_pRootlayer == nullptr) return false;
// 组合情况
m_cbCardData = cbCardData;
m_dwOperateCode = dwOperateCode;
m_CardType = SP_SELFSTAND;
// 方向判定
Sprite* sp_Arrow = (Sprite*)m_pRootlayer->getChildByName("arrow");
sp_Arrow->setVisible(false);
// 牌数量
uint8 cbCardDatas[MAX_WEAVE] = { 0, 0, 0, 0 };
uint8 cbCardCount = WN_CGameLogic::getInstance()->GetWeaveCard(dwOperateCode, cbCardData, cbCardDatas);
// 显示控件
for (int i = 0; i < cbCardCount; i++)
{
string strCtrl = StringUtils::format("Card_%d", i);
ImageView*cardSprite = (ImageView*)m_pRootlayer->getChildByName(strCtrl);
cardSprite->setVisible(true);
// 设置值
Sprite* sp_value = (Sprite*)cardSprite->getChildByName("Value");
string strPng = SparrowCard::GetCardValuePng(cbCardDatas[i]);
sp_value->setTexture(strPng);
}
return true;
}
//补杠
void WN_WeaveCard::SetBuGang(const uint8 cbCardData)
{
if (m_pRootlayer == nullptr) return;
if ((m_dwOperateCode&WIK_WN_PENG) == 0) return;
m_dwOperateCode = WIK_WN_GANG;
// 第四张牌
ImageView* cardSprite = (ImageView*)m_pRootlayer->getChildByName("Card_3");
cardSprite->setVisible(true);
// 设置值
Sprite* sp_value = (Sprite*)cardSprite->getChildByName("Value");
string strPng = SparrowCard::GetCardValuePng(cbCardData);
sp_value->setTexture(strPng);
sp_value->setVisible(true);
}
// 显示组合牌
bool WN_WeaveCard::ShowCardData(const WORD wChairID, const uint8 cbCenterCard, DWORD dwOperateCode, WORD wProvideUser)
{
if (!uiInit(wChairID)) return false;
if (m_pRootlayer == nullptr) return false;
// 组合情况
m_cbCardData = cbCenterCard;
m_dwOperateCode = dwOperateCode;
m_CardType = (EN_SPARROW_TYPE)wChairID;
// 牌数量
uint8 cbCardDatas[MAX_WEAVE] = { 0, 0, 0, 0 };
m_cbCardCount = WN_CGameLogic::getInstance()->GetWeaveCard(dwOperateCode, cbCenterCard, cbCardDatas);
// 显示控件
for (int i = 0; i < m_cbCardCount; i++)
{
// 找到牌
string strCtrl = StringUtils::format("Card_%d", i);
ImageView* cardSprite = (ImageView*)m_pRootlayer->getChildByName(strCtrl);
cardSprite->setVisible(true);
Sprite* sp_value = (Sprite*)cardSprite->getChildByName("Value");
// 暗杠
if (wChairID == wProvideUser)
{
if (i < MAX_WEAVE - 1)
{
if ((SP_OPPSTAND == m_CardType) || (SP_SELFSTAND == m_CardType))
{
cardSprite->loadTexture("Games/Sparrow/card/bgAngang.png");
}
else
{
cardSprite->loadTexture("Games/Sparrow/card/xz_gai_card.png");
}
}
sp_value->setVisible(false);
}
else
{
// 设置值
string strPng = SparrowCard::GetCardValuePng(cbCardDatas[i]);
sp_value->setTexture(strPng);
sp_value->setVisible(true);
}
}
// 方向判定
Sprite* sp_Arrow = (Sprite*)m_pRootlayer->getChildByName("arrow");
sp_Arrow->setTexture(StringUtils::format("Games/Sparrow/card/Weave%d.png", wProvideUser));
// 自己暗杠显示第四张牌
if (wChairID == wProvideUser)
{
sp_Arrow->setVisible(false);
ImageView*cardSprite = (ImageView*)m_pRootlayer->getChildByName("Card_3");
cardSprite->setVisible(true);
// 设置值
Sprite* sp_value = (Sprite*)cardSprite->getChildByName("Value");
string strPng = SparrowCard::GetCardValuePng(cbCardDatas[MAX_WEAVE - 1]);
sp_value->setTexture(strPng);
sp_value->setVisible(true);
}
return true;
}