Files
wnmj/Classes/Games/DaZha/DZ_GameEndNode.cpp

279 lines
7.3 KiB
C++
Raw Normal View History

2026-02-13 14:34:15 +08:00
#include "DZ_GameEndNode.h"
#include "Define.h"
#include "DZ_CMD.h"
#include "ActionEx.h"
#include "DZ_SmallCardSprite.h"
DZGameEndNode::DZGameEndNode()
{
//init();
}
DZGameEndNode::~DZGameEndNode()
{
}
bool DZGameEndNode::init()
{
if (!Node::init())
{
return false;
};
auto root = CSLoader::createNodeWithVisibleSize("Games/DaZha/ResultLayer.csb");
CC_ASSERT(root != nullptr);
this->addChild(root);
m_rootPanel = static_cast<ImageView*>(root->getChildByName("imgResult"));
CC_ASSERT(m_rootPanel != nullptr);
//<2F><EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
m_btnPrivate = static_cast<Button*>(m_rootPanel->getChildByName("btnPrivate"));
CC_ASSERT(m_btnPrivate != nullptr);
ASSERT(m_btnPrivate);
m_btnPrivate->setVisible(false);
m_btnPrivate->addClickEventListener([=](Ref *pSender){
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(SHOW_PRIVATE_END);
this->hide();
});
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť;
m_btnContinue = static_cast<Button*>(m_rootPanel->getChildByName("btnContinue"));
CC_ASSERT(m_btnContinue != nullptr);
m_btnContinue->addClickEventListener(CC_CALLBACK_1(DZGameEndNode::onButtonContinueClick, this));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť;
m_btnShare = static_cast<Button*>(m_rootPanel->getChildByName("btnShare"));
CC_ASSERT(m_btnShare != nullptr);
m_btnShare->addClickEventListener([=](Ref *pSender){
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(WEIXIN_SHOW);
});
//ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
m_sprTitleWin = static_cast<Sprite*>(m_rootPanel->getChildByName("sprTitleWin"));
CC_ASSERT(m_sprTitleWin != nullptr);
////ʤ<><CAA4><EFBFBD><EFBFBD>־;
//m_sprWin = static_cast<Sprite*>(m_rootPanel->getChildByName("sprWin"));
//CC_ASSERT(m_sprWin != nullptr);
return true;
}
//<2F><>ʾ;
void DZGameEndNode::show(uint16 wLandChairID, bool bNobodyCall, uint16 wSelfChairID, uint16 wFriendChairID, std::string aryNickName[], DZ_CMD_S_GameConclude* pGameConclude, uint16 wTime)
{
//<2F><>ȡ<EFBFBD>ı<EFBFBD>;
for (int i = 0; i < DZ_GAME_PLAYER; i++)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
auto panelPlayer = static_cast<Layout*>(m_rootPanel->getChildByName(StringUtils::format("panelPlayer_%d", i)));
CC_ASSERT(panelPlayer != nullptr);
auto imgRank = static_cast<ImageView*>(panelPlayer->getChildByName("imgRank"));
CC_ASSERT(imgRank != nullptr);
imgRank->setVisible(false);
auto txtNickName = static_cast<Text*>(panelPlayer->getChildByName("txtNickName"));
CC_ASSERT(txtNickName != nullptr);
txtNickName->setString(aryNickName[i]);
// <20><><EFBFBD><EFBFBD>;
auto splandlord = static_cast<Sprite*>(panelPlayer->getChildByName("landlord"));
CC_ASSERT(splandlord != nullptr);
if (bNobodyCall)
{
// <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>;
if (wFriendChairID == i)
{
splandlord->setScale(1.5f);
splandlord->setTexture(DZ_FARMER_FLAG_PNG_FILE);
splandlord->setVisible(true);
}
else
{
splandlord->setVisible(false);
}
}
else
{
if (i == wLandChairID)
{
splandlord->setScale(1.0f);
splandlord->setTexture(DZ_LANDLORD_FLAG_PNG_FILE);
splandlord->setVisible(true);
}
else
{
splandlord->setVisible(false);
}
}
// ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
auto txtBombScore = static_cast<TextBMFont*>(panelPlayer->getChildByName("txtBombScore"));
CC_ASSERT(txtBombScore != nullptr);
if (pGameConclude->lBombScore[i] > 0)
{
txtBombScore->setFntFile(DZ_WIN_NUMBER_FNT_FILE);
txtBombScore->setString(StringUtils::format("+%d", pGameConclude->lBombScore[i]));
}
else
{
txtBombScore->setFntFile(DZ_LOSE_NUMBER_FNT_FILE);
txtBombScore->setString(StringUtils::format("%d", pGameConclude->lBombScore[i]));
}
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
auto txtGameScore = static_cast<TextBMFont*>(panelPlayer->getChildByName("txtGameScore"));
CC_ASSERT(txtGameScore != nullptr);
if (pGameConclude->lGameScore[i] > 0)
{
txtGameScore->setFntFile(DZ_WIN_NUMBER_FNT_FILE);
txtGameScore->setString(StringUtils::format("+%d", pGameConclude->lGameScore[i]));
}
else
{
txtGameScore->setFntFile(DZ_LOSE_NUMBER_FNT_FILE);
txtGameScore->setString(StringUtils::format("%d", pGameConclude->lGameScore[i]));
}
// <20>ܻ<EFBFBD><DCBB><EFBFBD>;
auto txtAllScore = static_cast<TextBMFont*>(panelPlayer->getChildByName("txtAllScore"));
CC_ASSERT(txtAllScore != nullptr);
if (pGameConclude->lAllScore[i] > 0)
{
txtAllScore->setFntFile(DZ_WIN_NUMBER_FNT_FILE);
txtAllScore->setString(StringUtils::format("+%d", pGameConclude->lAllScore[i]));
}
else
{
txtAllScore->setFntFile(DZ_LOSE_NUMBER_FNT_FILE);
txtAllScore->setString(StringUtils::format("%d", pGameConclude->lAllScore[i]));
}
auto panelLeftCard = static_cast<Layout*>(panelPlayer->getChildByName("panelLeftCard"));
CC_ASSERT(panelLeftCard != nullptr);
panelLeftCard->removeAllChildren();
if (pGameConclude->cbCardCount[i] > 0)
{
showLeftCard(panelLeftCard, pGameConclude->cbCardData[i], pGameConclude->cbCardCount[i]);
}
}
// <20><><EFBFBD><EFBFBD>;
for (int i = 0; i < DZ_GAME_PLAYER; i++)
{
uint16 wRanker = pGameConclude->wWinOrder[i];
if (wRanker == INVALID_CHAIR) continue;
auto panelPlayer = static_cast<Layout*>(m_rootPanel->getChildByName(StringUtils::format("panelPlayer_%d", wRanker)));
CC_ASSERT(panelPlayer != nullptr);
auto imgRank = static_cast<ImageView*>(panelPlayer->getChildByName("imgRank"));
CC_ASSERT(imgRank != nullptr);
std::string strRankres = StringUtils::format("Games/DaZha/Table/imgRanking%d.png", i + 1);
// <20><>ʾһ<CABE><D2BB><EFBFBD><EFBFBD>;
if (pGameConclude->iGameEndType == DZ_GAME_END_TWO_WIN && i < 2)
{
imgRank->loadTexture(strRankres);
imgRank->setVisible(true);
}
// ȫ<><C8AB>ʾ;
else if (pGameConclude->iGameEndType == DZ_GAME_END_ONE_WIN)
{
imgRank->loadTexture(strRankres);
imgRank->setVisible(true);
}
// ȫ<><C8AB><EFBFBD><EFBFBD>ʾ;
else
{
imgRank->setVisible(false);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӯ<EFBFBD><D3AE>;
CC_ASSERT(wSelfChairID <= DZ_GAME_PLAYER);
if (pGameConclude->iGameEndType != DZ_GAME_END_NULL)
{
std::string strGameEndType = "";
switch (pGameConclude->iGameEndType)
{
case DZ_GAME_END_NULL:
break;
case DZ_GAME_END_ONE_WIN:
strGameEndType = "Games/DaZha/Result/endrtitle1.png";
break;
case DZ_GAME_END_TWO_WIN:
strGameEndType = "Games/DaZha/Result/endrtitle2.png";
break;
case DZ_GAME_END_DRAW:
case DZ_GAME_END_8_BOMB:
case DZ_GAME_END_NO_BOMB:
strGameEndType = "Games/DaZha/Result/endrtitle3.png";
break;
default:
break;
}
//StringUtils::format("Games/DaZha/Result/endrtitle%d.png", pGameConclude->iGameEndType);
m_sprTitleWin->setTexture(strGameEndType);
}
//this->setVisible(true);
}
void DZGameEndNode::hide()
{
this->setVisible(false);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
void DZGameEndNode::onButtonContinueClick(Ref*)
{
auto dispatcher = Director::getInstance()->getEventDispatcher();
EventCustom event(CONTINUE_GAME);
//<2F>ɷ<EFBFBD><C9B7>ܾ<EFBFBD><DCBE><EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>DDZGameScene
dispatcher->dispatchEvent(&event);
hide();
}
void DZGameEndNode::onButtonShareClick(Ref*)
{
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(WEIXIN_SHOW);
}
void DZGameEndNode::SetShowPrivate()
{
m_btnContinue->setVisible(false);
m_btnPrivate->setVisible(true);
}
//<2F><>ʾʣ<CABE><CAA3><EFBFBD>˿<EFBFBD>;
void DZGameEndNode::showLeftCard(Layout* pRootPanel, uint8 aryCardData[], uint8 cbCardCount)
{
CC_ASSERT(pRootPanel != nullptr);
// <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ʾ;
uint16 nwidth = pRootPanel->getContentSize().width;
uint16 nheight = pRootPanel->getContentSize().height;
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>;
for (uint8 i = 0; i < cbCardCount; i++)
{
DZSmallCardSprite* pCard = DZSmallCardSprite::create(aryCardData[i]);
CC_ASSERT(pCard != nullptr);
if (pCard)
{
pCard->setPositionX(i * 15);
pRootPanel->addChild(pCard);
}
}
}