Files
wnmj/Classes/Games/WNMJ/WN_CNotifyDlg.cpp

302 lines
7.7 KiB
C++
Raw Normal View History

2026-02-13 14:34:15 +08:00
#include "WN_CNotifyDlg.h"
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "cocostudio/CocoStudio.h"
#include "YSAudioEngine.h"
#include "PopScene.h"
using namespace WNMJ_SPACE;
WN_NotifyDlg::WN_NotifyDlg()
{
zeromemory(m_pGangCardItem, sizeof(m_pGangCardItem));
}
WN_NotifyDlg::~WN_NotifyDlg()
{
}
bool WN_NotifyDlg::init()
{
if (!Node::init()) {
return false;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
auto rool = CSLoader::createNode("Games/WNMJ/NoticeLayer.csb");
this->addChild(rool);
m_pNoticelayer = (Layout*)rool->getChildByName("Panel_bg");
ASSERT(m_pNoticelayer != nullptr);
m_btnGuo = (Button*)m_pNoticelayer->getChildByName("btnGuo");
m_btnGuo->addClickEventListener(CC_CALLBACK_1(WN_NotifyDlg::onEventGuo, this));
m_btnGuo->setVisible(false);
m_btnHu = (Button*)m_pNoticelayer->getChildByName("btnHu");
m_btnHu->addClickEventListener(CC_CALLBACK_1(WN_NotifyDlg::onEventHu, this));
m_btnHu->setVisible(false);
m_btnPeng = (Button*)m_pNoticelayer->getChildByName("btnPeng");
m_btnPeng->addClickEventListener(CC_CALLBACK_1(WN_NotifyDlg::onEventPeng, this));
m_btnPeng->setVisible(false);
m_btnGang = (Button*)m_pNoticelayer->getChildByName("btnGang");
m_btnGang->addClickEventListener(CC_CALLBACK_1(WN_NotifyDlg::onEventGang, this));
m_btnGang->setVisible(false);
return true;
}
void WN_NotifyDlg::onEnter()
{
Node::onEnter();
}
void WN_NotifyDlg::onEnterTransitionDidFinish()
{
Node::onEnterTransitionDidFinish();
}
void WN_NotifyDlg::onExit()
{
Node::onExit();
}
void WN_NotifyDlg::onEventHu(cocos2d::Ref *pSender) // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
YSAudioEngine::Instance().playBtnClickEffect();
if (pSender == nullptr) return;
if ((m_OperateNotify.dwActionMask&WIK_WN_CHI_HU) != 0)
{
CMD_C_OperateCard OperateCard;
OperateCard.dwOperateCode = WIK_WN_CHI_HU;
OperateCard.cbOperateCard = m_OperateNotify.cbActionCard;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_wCurrentUser
CCLOG("WN_NotifyDlg click btnHu hide...");
this->setVisible(false);
}
void WN_NotifyDlg::onEventPeng(cocos2d::Ref *pSender) // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
YSAudioEngine::Instance().playBtnClickEffect();
if (pSender == nullptr) return;
if ((m_OperateNotify.dwActionMask&WIK_WN_PENG) != 0)
{
CMD_C_OperateCard OperateCard;
OperateCard.dwOperateCode = WIK_WN_PENG;
OperateCard.cbOperateCard = m_OperateNotify.cbActionCard;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CCLOG("WN_NotifyDlg click btnPeng hide...");
this->setVisible(false);
}
// <20><>
void WN_NotifyDlg::onEventGang(cocos2d::Ref *pSender) // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
YSAudioEngine::Instance().playBtnClickEffect();
if (pSender == nullptr) return;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 cbCardCount = m_OperateNotify.GangPaiResult.cbCardCount;
CMD_C_OperateCard OperateCard;
zeromemory(&OperateCard, sizeof(OperateCard));
OperateCard.dwOperateCode = WIK_WN_GANG;
// ֻ<><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
if (cbCardCount == 1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 cbCardData = m_OperateNotify.GangPaiResult.cbCardData[cbCardCount - 1];
OperateCard.cbOperateCard = cbCardData;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
cocos2d::log("dwOperateCode = 0x%0x, cbOperateCard = 0x%0x", WIK_WN_GANG, cbCardData);
CCLOG("WN_NotifyDlg click one btnGang hide...");
this->setVisible(false);
}
else if (cbCardCount > 1)
{
m_btnGang->setVisible(false);
// <20><>ʾ<EFBFBD><CABE><EFBFBD>Ըܵ<D4B8><DCB5>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ѡ<EFBFBD><D1A1>;
for (int i = 0; i < cbCardCount; i++)
{
uint8 cbCardValue = m_OperateNotify.GangPaiResult.cbCardData[i];
if (WN_CGameLogic::IsValidCard(cbCardValue))
{
m_pGangCardItem[i] = WN_SparrowCard::createWithDirection(cbCardValue, SP_SELFSTAND);
if (m_pGangCardItem[i] != nullptr)
{
m_pGangCardItem[i]->setPosition(Vec2(m_btnGang->getPositionX() - (NCMJ_SELF_HAND_CARD_WIDHT + 25)*i, 10));
m_pNoticelayer->addChild(m_pGangCardItem[i]);
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>¼<EFBFBD>;
m_pGangCardItem[i]->addClickEventListener([cbCardValue, this](cocos2d::Ref *, Vec2 pos)->bool{
CMD_C_OperateCard OperateCard;
OperateCard.dwOperateCode = WIK_WN_GANG;
OperateCard.cbOperateCard = cbCardValue;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_wCurrentUser
CCLOG("WN_NotifyDlg click move btnGang hide...");
this->setVisible(false);
m_wCurrentUser = INVALID_CHAIR;
return true;
});
}
}
}
}
}
void WN_NotifyDlg::onEventGuo(cocos2d::Ref *pSender) // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
YSAudioEngine::Instance().playBtnClickEffect();
if (m_OperateNotify.dwActionMask != WIK_WN_NULL)
{
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>
if (m_wCurrentUser == SELF_VIEW_CHAIRID)
{
CCLOG("WN_NotifyDlg click btnGuo hide...m_wCurrentUser = 0x%0x", m_wCurrentUser);
this->setVisible(false);
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
if ((m_OperateNotify.dwActionMask&WIK_WN_CHI_HU) != 0)
{
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), [=](){
CMD_C_OperateCard OperateCard;
OperateCard.dwOperateCode = WIK_WN_NULL;
OperateCard.cbOperateCard = m_OperateNotify.cbActionCard;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_wCurrentUser
CCLOG("WN_NotifyDlg click btnGuo hide...");
this->setVisible(false);
}, [=](){
// <20><><EFBFBD><EFBFBD>ʲô<CAB2><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ʾȡ<CABE><C8A1><EFBFBD><EFBFBD>ť;
});
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>
else
{
CMD_C_OperateCard OperateCard;
OperateCard.dwOperateCode = WIK_WN_NULL;
OperateCard.cbOperateCard = m_OperateNotify.cbActionCard;
EventCustom event(CUSTOM_EVENT_OPER_CARD);
event.setUserData(&OperateCard);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_wCurrentUser
CCLOG("WN_NotifyDlg click btnGuo hide...");
this->setVisible(false);
}
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ߼<D8B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_wCurrentUser
CCLOG("WN_NotifyDlg click btnGuo hide...");
this->setVisible(false);
}
}
// <20><><EFBFBD>ø߼<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WN_NotifyDlg::SetNoticeData(CMD_S_OperateNotify * pOperateNotify)
{
if (m_pNoticelayer)
{
// <20>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_OperateNotify, pOperateNotify, sizeof(m_OperateNotify));
WORD dwActionMask = pOperateNotify->dwActionMask;
//<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
m_btnPeng->setVisible((dwActionMask&WIK_WN_PENG) != 0 ? true : false);
m_btnGang->setVisible((dwActionMask&WIK_WN_GANG) != 0 ? true : false);
m_btnHu->setVisible((dwActionMask&WIK_WN_CHI_HU) != 0 ? true : false);
m_btnGuo->setVisible((dwActionMask != WIK_WN_NULL) ? true : false);
// ɾ<><C9BE><EFBFBD>ܽڵ<DCBD>;
for (int i = 0; i < MAX_WEAVE; i++)
{
if (m_pGangCardItem[i] != nullptr)
{
m_pGangCardItem[i]->removeFromParent();
m_pGangCardItem[i] = nullptr;
}
}
CCLOG("WN_NotifyDlg show...");
this->setVisible(true);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void WN_NotifyDlg::HideNotifyDlg(bool isTimeOver/* = false*/)
{
if (m_pNoticelayer)
{
// <20>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(&m_OperateNotify, 0x0, sizeof(m_OperateNotify));
//<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
m_btnPeng->setVisible(false);
m_btnGang->setVisible(false);
m_btnHu->setVisible(false);
m_btnGuo->setVisible(false);
}
// ɾ<><C9BE><EFBFBD>ܽڵ<DCBD>;
for (int i = 0; i < MAX_WEAVE; i++)
{
if (m_pGangCardItem[i] != nullptr)
{
m_pGangCardItem[i]->removeFromParent();
m_pGangCardItem[i] = nullptr;
}
}
CCLOG("WN_NotifyDlg hide...");
this->setVisible(false);
}