Files
wnmj/Classes/Scenes/MainScene.cpp

1420 lines
40 KiB
C++
Raw Permalink Normal View History

2026-02-13 14:34:15 +08:00
#include "MainScene.h"
#include "SimpleAudioEngine.h"
#include "JniFun.h"
#include "SetScene.h"
#include "HelpScene.h"
#include "PopScene.h"
#include "JoinScene.h"
#include "RecordScene.h"
#include "PlayerScene.h"
#include "PayScene.h"
#include "PayLogScene.h"
#include "DuiHuanScene.h"
#include "GongHuiScene.h"
#include "MissionWeiXin.h"
#include "UserInfo.h"
#include "ImagicDownManager.h"
#include "LoadingScene.h"
#include "ShowScene.h"
#include "GlobalJosn.h"
#include "LogonScene.h"
#include "YSAudioEngine.h"
#include "GameCreator.h"
#include "WN_GameScene.h"
#include "NoticeScene.h"
#include "CreateScene.h"
#include "WN_GameScene.h"
#include "DDZ_GameScene.h"
#include "NN_GameScene.h"
#include "DZ_GameScene.h"
#include "13S_GameScene.h"
#include "ZJH_GameScene.h"
#include "PDK_GameScene.h"
MainScene::MainScene()
//:m_kUserInGameServer(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort)
{
m_rootPanel = nullptr;
m_btnClickType = BT_CLICK_NULL;
UserInfo::Instance().addUpPlayerInfoCB(this,QY_CALLFUNC_SELECTOR(MainScene::upPlayerInfo));
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addCustomEventListener(CREATE_PRIVATE_ROOM_EVENT, CC_CALLBACK_1(MainScene::onEventCreatePrivateRoom, this));
dispatcher->addCustomEventListener(JOIN_PRIVATE_ROOM_EVENT, CC_CALLBACK_1(MainScene::onEventJoinPrivateRoom, this));
dispatcher->addCustomEventListener(UPDATE_USER_INSURE, CC_CALLBACK_1(MainScene::onEventUpdateUserInsure, this));
dispatcher->addCustomEventListener(WXSHARE_FRIENDS_SUCCESS, CC_CALLBACK_1(MainScene::WXShardFriendsSuccess, this));
dispatcher->addCustomEventListener(INPUT_UNION_ID, CC_CALLBACK_1(MainScene::onEventInpuUnionID, this));
dispatcher->addCustomEventListener(Get_Union_Room_List, CC_CALLBACK_1(MainScene::onEventGetRoomList, this));
dispatcher->addCustomEventListener(Get_AUTO_ROOM_INFO, CC_CALLBACK_1(MainScene::onEventGetAutoRoomList, this));
dispatcher->addCustomEventListener(CREATE_AUTO_ROOM_EVENT, CC_CALLBACK_1(MainScene::onEventCreateAutoRoomInfo, this));
dispatcher->addCustomEventListener(DEL_AUTO_ROOM_EVENT, CC_CALLBACK_1(MainScene::onEventDeleteAutoRoomInfo, this));
UserInfo::Instance().setIndividualMissionSink(this);
MissionWeiXin::Instance().setMissionSink(this);
m_kUserInGameServer.setUrl(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort);
m_kUserInGameServer.setMissionSink(this);
m_IndivMission.setUrl(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort);
m_IndivMission.setMissionSink(this);
m_kPrivateMission.setMissionSink(this);
m_IsStartGame = false;
m_SetNode = nullptr;
m_JoinNode = nullptr;
m_CreateNode = nullptr;
m_GameUnionNode = nullptr;
}
MainScene::~MainScene()
{
UserInfo::Instance().delCallByPoint(this);
UserInfo::Instance().setIndividualMissionSink(nullptr);
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->removeCustomEventListeners(CREATE_PRIVATE_ROOM_EVENT);
dispatcher->removeCustomEventListeners(JOIN_PRIVATE_ROOM_EVENT);
dispatcher->removeCustomEventListeners(UPDATE_USER_INSURE);
dispatcher->removeCustomEventListeners(WXSHARE_FRIENDS_SUCCESS);
dispatcher->removeCustomEventListeners(INPUT_UNION_ID);
dispatcher->removeCustomEventListeners(Get_AUTO_ROOM_INFO);
m_kPrivateMission.stop();
m_IndivMission.stop();
m_kUserInGameServer.stop();
}
bool MainScene::init()
{
if (!Scene::init())
{
return false;
};
this->setTag(SCENE_TAG_MAIN);
m_rootPanel = CSLoader::createNode("Platform/MainScene.csb");
CC_ASSERT(m_rootPanel != nullptr);
this->addChild(m_rootPanel);
//<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
m_CreateItem = (Button*)m_rootPanel->getChildByName("btnCreateItem");
CC_ASSERT(m_CreateItem != nullptr);
m_CreateItem->addClickEventListener([this](Ref*){
onEventBtnClick(BT_CLICK_CREATE);
});
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
auto btnJoinGame = (Button*)m_rootPanel->getChildByName("btnJoinGame");
CC_ASSERT(btnJoinGame != nullptr);
btnJoinGame->addClickEventListener([this](Ref*){
onEventBtnClick(BT_CLICK_JOIN);
});
//<2F><><EFBFBD><EFBFBD><E1BFAA>
auto btnCreateUnionItem = (Button*)m_rootPanel->getChildByName("btnCreateUnionItem");
CC_ASSERT(btnCreateUnionItem != nullptr);
btnCreateUnionItem->addClickEventListener([this](Ref*){
onEventBtnClick(BT_CLICK_UNION);
});
//<2F><EFBFBD><E6B7A8><EFBFBD><EFBFBD>
auto btnHelp = (Button*)m_rootPanel->getChildByName("btnHelp");
CC_ASSERT(btnHelp != nullptr);
btnHelp->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = HelpScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
// <20><><EFBFBD>ð<EFBFBD>ť
auto btnSetting = (Button*)m_rootPanel->getChildByName("btnSetting");
CC_ASSERT(btnSetting != nullptr);
btnSetting->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
if (m_SetNode == nullptr)
{
m_SetNode = SetScene::create();
m_rootPanel->addChild(m_SetNode);
}
CC_ASSERT(m_SetNode != nullptr);
m_SetNode->pushScene();
});
// ս<><D5BD>
auto btnRecord = (Button*)m_rootPanel->getChildByName("btnRecord");
ASSERT(btnRecord);
btnRecord->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
RecordScene* pNode = RecordScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//auto panelUser = (Layout*)m_rootPanel->getChildByName("panelUser");
//CC_ASSERT(panelUser != nullptr);
// <20><><EFBFBD><EFBFBD>
auto btnShop = (Button*)m_rootPanel->getChildByName("btnShop");
CC_ASSERT(btnShop != nullptr);
btnShop->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
PopScene::Instance().show(GlobalJosn::getInstance()->m_strAgentTip);
});
// <20><><EFBFBD><EFBFBD>
auto btnShow = (Button*)m_rootPanel->getChildByName("btnShow");
CC_ASSERT(btnShow);
btnShow->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = ShowScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
// <20><>ֵ;
auto btnChongzhi = (Button*)m_rootPanel->getChildByName("btnChongzhi");
CC_ASSERT(btnChongzhi);
btnChongzhi->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = PayScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
// <20><>ֵ<EFBFBD><D6B5>¼;
auto btnPayLog = (Button*)m_rootPanel->getChildByName("btnPayLog");
CC_ASSERT(btnPayLog);
btnPayLog->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = PayLogScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
if (0==pGlobalUserData->cbInsureEnabled)
{
btnChongzhi->setVisible(false);
btnPayLog->setVisible(false);
}
// <20>һ<EFBFBD>;
auto btnDuiHuan = (Button*)m_rootPanel->getChildByName("btnDuiHuan");
CC_ASSERT(btnDuiHuan);
btnDuiHuan->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = DuiHuanScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
// <20><><EFBFBD><EFBFBD>;
auto btnGongHui = (Button*)m_rootPanel->getChildByName("btnGongHui");
CC_ASSERT(btnGongHui);
btnGongHui->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
TipNode* pNode = GongHuiScene::create();
CC_ASSERT(pNode != nullptr);
m_rootPanel->addChild(pNode);
pNode->pushScene();
});
// <20><><EFBFBD><EFBFBD>;
m_SystemInfo = (ImageView*)m_rootPanel->getChildByName("System_bg");
CC_ASSERT(m_SystemInfo);
m_PlatformNotic = SystemNotice::createSystemNotice("common/Img/lobby_msg_bg.png");
m_PlatformNotic->setPosition(Vec2(m_SystemInfo->getContentSize().width / 2, m_SystemInfo->getContentSize().height / 2));
m_PlatformNotic->setCascadeOpacityEnabled(true);
m_PlatformNotic->setCallBack([this](){
m_SystemInfo->setVisible(false);
});
m_SystemInfo->addChild(m_PlatformNotic);
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
initUnionRoom();
//<2F><><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>ļ<EFBFBD><C4BC><EFBFBD>
auto keyListener = EventListenerKeyboard::create();
//<2F>ͻص<CDBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
keyListener->onKeyReleased = CC_CALLBACK_2(MainScene::onKeyReleased, this);
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5>¼<EFBFBD><C2BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyListener, this);
return true;
}
void MainScene::initUnionRoom()
{
m_isRefreshing = false;
m_dwSelectUnionCode = 0;
m_nRefreshErr = 0;
if (m_rootPanel == nullptr) return;
m_PanelRoom = (Layout*)m_rootPanel->getChildByName("PanelRoom");
ASSERT(m_PanelRoom != nullptr);
if (m_PanelRoom == nullptr) return;
m_PanelRoom->setVisible(false);
// ˢ<>°<EFBFBD>ť;
m_btnRefresh = (Button*)m_PanelRoom->getChildByName("btnRefresh");
ASSERT(m_btnRefresh != nullptr);
m_btnRefresh->setVisible(false);
m_btnRefresh->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
RequsetUnionRoomList();
});
// ѡ<>񹤻<EFBFBD><F1B9A4BB><EFBFBD>ʶ;
m_txtSelectUnion = (Button*)m_PanelRoom->getChildByName("btnGameInfo");
ASSERT(m_txtSelectUnion != nullptr);
m_txtSelectUnion->setVisible(false);
// <20><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD>б<EFBFBD>;
m_btnBackUnion = (Button*)m_PanelRoom->getChildByName("btnUnionList");
ASSERT(m_btnBackUnion != nullptr);
m_btnBackUnion->setVisible(false);
m_btnBackUnion->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
m_dwSelectUnionCode = 0;
m_isRefreshing = false;
m_UnionList->setVisible(true);
m_RoomList->setVisible(false);
m_btnBackUnion->setVisible(false);
m_btnRefresh->setVisible(false);
m_txtSelectUnion->setVisible(true);
});
// <20>б<EFBFBD>;
m_RoomList = (ScrollView*)m_PanelRoom->getChildByName("RoomList");
ASSERT(m_RoomList != nullptr);
m_RoomList->setVisible(false);
m_UnionList = (ScrollView*)m_PanelRoom->getChildByName("UnionList");
ASSERT(m_UnionList != nullptr);
m_UnionList->setVisible(false);
m_btnUnionItem = (Button*)m_rootPanel->getChildByName("btnUninItem");
CC_ASSERT(nullptr != m_btnUnionItem);
m_btnUnionItem->setVisible(false);
m_btnRoomItem0 = (Button*)m_rootPanel->getChildByName("btnRoomItem0");
ASSERT(m_btnRoomItem0 != nullptr);
m_btnRoomItem0->setVisible(false);
m_btnRoomItem1 = (Button*)m_rootPanel->getChildByName("btnRoomItem1");
CC_ASSERT(nullptr != m_btnRoomItem1);
m_btnRoomItem1->setVisible(false);
for (int i = 0; i < 5; i++)
{
std::string strkey = StringUtils::format("imghead_%d", i);
auto sp0 = (ImageView*)m_btnRoomItem0->getChildByName(strkey);
assert(sp0 != nullptr);
sp0->setVisible(false);
auto sp1 = (ImageView*)m_btnRoomItem1->getChildByName(strkey);
assert(sp1 != nullptr);
sp1->setVisible(false);
}
}
// <20><>ʱˢ<CAB1><CBA2><EFBFBD>б<EFBFBD>;
void MainScene::startUnionRoomTime()
{
if (m_PanelRoom == nullptr) return;
// <20><>ֹͣ;
m_PanelRoom->stopAllActions();
int nRefreshTime = GlobalJosn::getInstance()->GetRefreshTime();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
auto act = Sequence::createWithTwoActions(DelayTime::create(nRefreshTime), CallFunc::create([this](){
if (m_GameUnionNode != nullptr && m_GameUnionNode->isVisible()) return;
if (m_RoomList != nullptr && !m_RoomList->isVisible()) return;
RequsetUnionRoomList(false);
}));
auto seq = RepeatForever::create(act);
m_PanelRoom->runAction(seq);
}
void MainScene::RequsetUnionRoomList(bool isLoading /*= true*/)
{
2026-03-01 13:48:24 +08:00
if (this->isVisible() && m_PanelRoom->isVisible() && m_dwSelectUnionCode > 0 && m_dwSelectUnionCode < 100000000)
2026-02-13 14:34:15 +08:00
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>ʧ<EFBFBD>ܣ<EFBFBD>ǿ<EFBFBD><C7BF>ˢ<EFBFBD><CBA2>;
if (m_isRefreshing && m_nRefreshErr < 3)
{
m_nRefreshErr++;
return;
}
if (isLoading)
{
LoadingScene::Instance().show(this);
}
CMD_GR_GetUnionRoomInfo getUnionRoom;
2026-03-01 13:48:24 +08:00
memset(&getUnionRoom, 0, sizeof(getUnionRoom)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2026-02-13 14:34:15 +08:00
getUnionRoom.dwUserID = UserInfo::getInstance()->getUserID();
getUnionRoom.dwUnionCode = m_dwSelectUnionCode;
m_kUserInGameServer.PerformGetUnionRoomList(&getUnionRoom);
m_isRefreshing = true;
m_nRefreshErr = 0;
}
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
void MainScene::ShowUnionList(tagUnionAndGameList* pUnionAndGameList)
{
2026-03-01 13:48:24 +08:00
utility::mlog("ShowUnionList: called");
utility::mlog("ShowUnionList: m_UnionList=%p, m_PanelRoom=%p", m_UnionList, m_PanelRoom);
if (m_UnionList == nullptr) {
utility::mlog("ShowUnionList: m_UnionList is NULL, return!");
return;
}
if (pUnionAndGameList == nullptr) {
utility::mlog("ShowUnionList: pUnionAndGameList is NULL, return!");
return;
}
2026-02-13 14:34:15 +08:00
m_UnionList->removeAllChildren();
int iUnionCount = pUnionAndGameList->kUnionList.size();
2026-03-01 13:48:24 +08:00
utility::mlog("ShowUnionList: iUnionCount=%d", iUnionCount);
2026-02-13 14:34:15 +08:00
// <20><><EFBFBD><EFBFBD>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>;
if (iUnionCount <= 0)
{
2026-03-01 13:48:24 +08:00
utility::mlog("ShowUnionList: no unions, hiding panel");
2026-02-13 14:34:15 +08:00
m_PanelRoom->setVisible(false);
return;
}
2026-03-01 13:48:24 +08:00
utility::mlog("ShowUnionList: showing panel, creating union buttons...");
2026-02-13 14:34:15 +08:00
m_PanelRoom->setVisible(true);
// <20><>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>;
std::string strUnionCode = StringUtils::format("UnionCode_%d", UserInfo::Instance().getGameID());
m_dwSelectUnionCode = UserDefault::getInstance()->getIntegerForKey(strUnionCode.c_str(), 0);
2026-03-01 13:48:24 +08:00
// У<><EFBFBD><E9A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_dwSelectUnionCode < 0 || m_dwSelectUnionCode > 100000000)
{
utility::mlog("ShowUnionList: invalid m_dwSelectUnionCode=%d, reset to 0", m_dwSelectUnionCode);
m_dwSelectUnionCode = 0;
UserDefault::getInstance()->setIntegerForKey(strUnionCode.c_str(), 0);
}
2026-02-13 14:34:15 +08:00
uint32 dwMeUserID = CGlobalUserInfo::GetInstance()->getUserID();
// <20>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>;
Size svSize = m_RoomList->getInnerContainerSize();
if (iUnionCount > 5)
{
svSize.height = iUnionCount * (m_btnUnionItem->getContentSize().height + 20);
m_UnionList->setInnerContainerSize(svSize);
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
for (int i = 0; i < iUnionCount; i++)
{
tagUnionItem* pUnionItem = &pUnionAndGameList->kUnionList[i];
2026-03-01 13:48:24 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
utility::mlog("UnionItem[%d]: UserID=%d, Code=%d, GoldOpen=%d, Open=%d, People=%d, Card=%d, Name=%s",
i,
pUnionItem->dwUserID,
pUnionItem->dwUnionCode,
pUnionItem->cbUnionGoldOpen,
pUnionItem->cbUnionOpen,
pUnionItem->lPeople,
pUnionItem->lUnionCard,
pUnionItem->szUnionName);
2026-02-13 14:34:15 +08:00
DWORD dwUnionCode = pUnionItem->dwUnionCode;
BYTE cbUnionGoldOpen = pUnionItem->cbUnionGoldOpen;
Button* btnUnionItem = nullptr;
btnUnionItem = (Button*)m_btnUnionItem->clone();
ASSERT(btnUnionItem != nullptr);
if (btnUnionItem == nullptr) break;
// <20><><EFBFBD><EFBFBD>;
Text* txtUnionName = (Text*)btnUnionItem->getChildByName("txtUnoinName");
ASSERT(txtUnionName != nullptr);
std::string strUnionName = pUnionItem->szUnionName;
if (cbUnionGoldOpen == 1)
{
strUnionName += "-<2D><><EFBFBD>ֳ<EFBFBD>";
}
txtUnionName->setString(utility::a_u8(strUnionName));
// <20><><EFBFBD><EFBFBD>;
Text* txtPlayerCount = (Text*)btnUnionItem->getChildByName("txtUserCount");
ASSERT(txtPlayerCount != nullptr);
std::string strPlayerCount = StringUtils::format("%d<><64>", pUnionItem->lPeople);
txtPlayerCount->setString(utility::a_u8(strPlayerCount.c_str()));
// <20><><EFBFBD><EFBFBD>;
Text* txtCardCount = (Text*)btnUnionItem->getChildByName("txtCardCount");
ASSERT(txtCardCount != nullptr);
std::string strCardCount = StringUtils::format("%d<><64>", pUnionItem->lUnionCard);
txtCardCount->setString(utility::a_u8(strCardCount.c_str()));
txtCardCount->setVisible(pUnionItem->dwUserID == dwMeUserID);
// ѡ<>񹤻<EFBFBD><F1B9A4BB>¼<EFBFBD>;
btnUnionItem->addClickEventListener([this, dwUnionCode, cbUnionGoldOpen](Ref* ref){
YSAudioEngine::Instance().playBtnClickEffect();
// <20><EFBFBD><E6B4A2>ǰѡ<C7B0><D1A1><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>;
std::string strUnionCode = StringUtils::format("UnionCode_%d", UserInfo::Instance().getGameID());
UserDefault::getInstance()->setIntegerForKey(strUnionCode.c_str(), dwUnionCode);
m_dwSelectUnionCode = dwUnionCode;
RequsetUnionRoomList();
});
// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
float x = (svSize.width - btnUnionItem->getContentSize().width) / 2;
float y = svSize.height - btnUnionItem->getContentSize().height - (btnUnionItem->getContentSize().height + 20) * i;
btnUnionItem->setPositionX(x);
btnUnionItem->setPositionY(y);
btnUnionItem->setVisible(true);
m_UnionList->addChild(btnUnionItem);
}
2026-03-01 13:48:24 +08:00
// <20><> for ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
utility::mlog("ShowUnionList: added %d union buttons", iUnionCount);
2026-02-13 14:34:15 +08:00
// <20><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>;
if (m_dwSelectUnionCode != 0 && !m_isRefreshing)
{
m_txtSelectUnion->setVisible(false);
m_UnionList->setVisible(false);
m_RoomList->setVisible(true);
m_btnBackUnion->setVisible(true);
m_btnRefresh->setVisible(true);
RequsetUnionRoomList();
}
else
{
m_UnionList->setVisible(true);
m_txtSelectUnion->setVisible(true);
m_RoomList->setVisible(false);
m_btnBackUnion->setVisible(false);
m_btnRefresh->setVisible(false);
}
2026-03-01 13:48:24 +08:00
// <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
utility::mlog("ShowUnionList: m_dwSelectUnionCode=%d, m_isRefreshing=%d", m_dwSelectUnionCode, m_isRefreshing);
2026-02-13 14:34:15 +08:00
}
// <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
void MainScene::showUnionRoomList(tagRoomItemList *pRoomItemList)
{
LoadingScene::Instance().hide();
m_isRefreshing = false;
if (m_RoomList == nullptr) return;
if (pRoomItemList == nullptr) return;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
m_UnionList->setVisible(false);
m_RoomList->setVisible(true);
m_btnBackUnion->setVisible(true);
m_btnRefresh->setVisible(true);
m_txtSelectUnion->setVisible(false);
m_RoomList->removeAllChildren();
// <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
int iUnionCount = pRoomItemList->kList.size();
// <20>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>;
Size svSize = m_RoomList->getInnerContainerSize();
if (iUnionCount > 3)
{
svSize.height = iUnionCount * (m_btnRoomItem0->getContentSize().height + 20);
m_RoomList->setInnerContainerSize(svSize);
}
uint8 cbChairCount = 0;
uint32 dwLastUnionCode = 0;
for (int i = 0; i < iUnionCount; i++)
{
tagRoomItem* pUnionRoomItem = &pRoomItemList->kList[i];
uint8 cbUnionGoldOpen = pUnionRoomItem->cbUnionGoldOpen;
uint32 dwRoomID = pUnionRoomItem->dwRoomID;
uint8 cbGameStatus = pUnionRoomItem->cbGameOK;
Button* btnRoomItem = nullptr;
// <20><><EFBFBD>ֳ<EFBFBD>;
if (1 == cbUnionGoldOpen)
{
btnRoomItem = (Button*)m_btnRoomItem0->clone();
}
else
{
btnRoomItem = (Button*)m_btnRoomItem1->clone();
}
ASSERT(btnRoomItem != nullptr);
if (btnRoomItem == nullptr) break;
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
Text* txtGameName = (Text*)btnRoomItem->getChildByName("txtGameName");
ASSERT(txtGameName != nullptr);
std::string strGameName;
if (DDZ_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = DDZ_GAME_NAME;
cbChairCount = DDZ_GAME_PLAYER;
}
else if (WN_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = WN_GAME_NAME;
cbChairCount = WNMJ_SPACE::WN_GameScene::GetRealChairCount(pUnionRoomItem->dwGameRule);
}
else if (NN_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = NN_GAME_NAME;
cbChairCount = NN_GAME_PLAYER;
}
else if (SSS_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = SSS_GAME_NAME;
cbChairCount = SSS_GAME_PLAYER;
}
else if (ZJH_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = ZJH_GAME_NAME;
cbChairCount = ZJH_GAME_PLAYER;
}
else if (DZ_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = DZ_GAME_NAME;
cbChairCount = DZ_GAME_PLAYER;
}
else if (PDK_KIND_ID == pUnionRoomItem->wKindID)
{
strGameName = PDK_GAME_NAME;
cbChairCount = PDK_SPACE::PDKGameScene::getRealChairCount(pUnionRoomItem->dwGameRule);
}
txtGameName->setString(utility::a_u8(strGameName));
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Text* txtUnionName = (Text*)btnRoomItem->getChildByName("txtUnoinName");
ASSERT(txtUnionName != nullptr);
std::string strUnionName = pUnionRoomItem->szUnionName;
txtUnionName->setString(utility::a_u8(strUnionName));
uint8 cbPlaycout = pUnionRoomItem->cbPlayCout;
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
Text* txtGameRule = (Text*)btnRoomItem->getChildByName("txtGameRule");
ASSERT(txtGameRule != nullptr);
std::string strGameRule = getGameRule(pUnionRoomItem->wKindID, pUnionRoomItem->dwGameRule);
if (cbGameStatus == 2)
{
cbPlaycout++;
txtGameRule->setString(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD>..."));
txtGameRule->setTextColor(Color4B(0xDB, 0x08, 0x93, 0xff));
}
else
{
txtGameRule->setString(utility::a_u8(strGameRule));
txtGameRule->setTextColor(Color4B(0x1a, 0x1a, 0x1a, 0xff));
}
if (cbPlaycout > pUnionRoomItem->cbPlayCoutIdex)
{
cbPlaycout = pUnionRoomItem->cbPlayCoutIdex;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
Text* txtRoomInfo = (Text*)btnRoomItem->getChildByName("txtRoomInfo");
ASSERT(txtRoomInfo != nullptr);
Text* txtBaseScore = (Text*)btnRoomItem->getChildByName("txtBaseScore");
ASSERT(txtBaseScore != nullptr);
std::string strRoomInfo = "";
std::string strBaseSccore = "";
// <20><><EFBFBD>ֳ<EFBFBD>;
if (1 == cbUnionGoldOpen)
{
strRoomInfo = StringUtils::format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d,%d/%d<><64>", dwRoomID, cbPlaycout, pUnionRoomItem->cbPlayCoutIdex);
strBaseSccore = StringUtils::format("<EFBFBD>׷<EFBFBD>:%d", pUnionRoomItem->cbBaseScore);
}
else
{
strRoomInfo = StringUtils::format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d,%d/%d<><64>, <20>׷<EFBFBD>:%d", dwRoomID, cbPlaycout, pUnionRoomItem->cbPlayCoutIdex, pUnionRoomItem->cbBaseScore);
}
txtRoomInfo->setString(utility::a_u8(strRoomInfo));
txtBaseScore->setString(utility::a_u8(strBaseSccore));
//std::string strRoomInfo = StringUtils::format("<22><><EFBFBD><EFBFBD>:%d,%d/%d<><64>", dwRoomID, cbPlaycout, pUnionRoomItem->cbPlayCoutIdex);
//txtRoomInfo->setString(utility::a_u8(strRoomInfo));
//// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
//Text* txtGameRule = (Text*)btnRoomItem->getChildByName("txtGameRule");
//ASSERT(txtGameRule != nullptr);
//std::string strGameRule = getGameRule(pUnionRoomItem->wKindID, pUnionRoomItem->dwGameRule);
//txtGameRule->setString(utility::a_u8(strGameRule));
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
auto btnShare = (Button*)btnRoomItem->getChildByName("btnShare");
ASSERT(btnShare != nullptr);
btnShare->addClickEventListener([this, dwRoomID, strGameName, strRoomInfo, strGameRule](Ref* ref){
YSAudioEngine::Instance().playBtnClickEffect();
std::string strText = StringUtils::format("%s, %s.", strRoomInfo.c_str(), strGameRule.c_str());
std::string strUrl = GlobalJosn::getInstance()->getShareInfoByKind(SH_KIND_WEIXIN_URL);
std::string strUrlInfo = StringUtils::format("%s?param=%d", strUrl.c_str(), dwRoomID);
2026-03-01 13:48:24 +08:00
MissionWeiXin::Instance().shareUrlWeiXin(strUrlInfo, strGameName, strText);
2026-02-13 14:34:15 +08:00
//SelectShareScene::Instance().shareRoomInfo(strUrlInfo, utility::a_u8(strGameName), strText, 0);
});
btnShare->setVisible(cbGameStatus != 2);
// <20><><EFBFBD>뷿<EFBFBD><EBB7BF>;
btnRoomItem->addClickEventListener([this, dwRoomID](Ref* ref){
YSAudioEngine::Instance().playBtnClickEffect();
joinPrivateRoom(dwRoomID);
});
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>;
for (int nIndex = 0; nIndex < cbChairCount; nIndex++)
{
std::string strkey = StringUtils::format("imghead_%d", nIndex);
auto sphead = (ImageView*)btnRoomItem->getChildByName(strkey);
if (sphead != nullptr)
{
uint32 dwUserID = pUnionRoomItem->dwUserIDs[nIndex];
if (dwUserID != 0 && dwUserID != INVALID_CHAIR)
{
std::string strHttp = StringUtils::format(HEAD_HTTP_ADDRESS, dwUserID);
ImagicDownManager::Instance().addDown(sphead, strHttp, dwUserID, true);
}
sphead->setVisible(true);
}
}
btnRoomItem->setVisible(true);
// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
float x = (svSize.width - btnRoomItem->getContentSize().width)/2;
float y = svSize.height - btnRoomItem->getContentSize().height - (btnRoomItem->getContentSize().height + 20) * i;
btnRoomItem->setPositionX(x);
btnRoomItem->setPositionY(y);
m_RoomList->addChild(btnRoomItem);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void MainScene::onKeyReleased(EventKeyboard::KeyCode keyCode, Event * pEvent)
{
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if (keyCode == EventKeyboard::KeyCode::KEY_ESCAPE)
{
YSAudioEngine::Instance().playBtnClickEffect();
auto callback = []{
Director::getInstance()->end();
// <20><><EFBFBD><EFBFBD>΢<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>Ϣ;
UserDefault::getInstance()->setStringForKey("access_token", "");
UserDefault::getInstance()->setStringForKey("refresh_token", "");
UserDefault::getInstance()->setStringForKey("openid", "");
UserDefault::getInstance()->setStringForKey("unionid", "");
UserDefault::getInstance()->flush();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
};
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), callback, nullptr);
}
}
void MainScene::onEnter()
{
Scene::onEnter();
upPlayerInfo();
InitSystemInfo();
m_IsStartGame = false;
}
void MainScene::onEnterTransitionDidFinish()
{
Scene::onEnterTransitionDidFinish();
auto txtVersion = (Text*)m_rootPanel->getChildByName("txtVersion");
CC_ASSERT(txtVersion != nullptr);
std::string strVersion = StringUtils::format("<EFBFBD>汾: v%s", JniFun::getVersionName().c_str());//JniFun::getVersionName();
txtVersion->setString(utility::a_u8(strVersion));
UserInfo::Instance().reqAccountInfo();
upPlayerInfo();
RequsetHttpInfo();
updateServerInfo();
m_isRefreshing = false;
onEventInpuUnionID(nullptr);
startUnionRoomTime();
}
void MainScene::onExit()
{
Scene::onExit();
}
void MainScene::upPlayerInfo()
{
utility::mlog("MainScene::upPlayerInfo()");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
auto panelUser = (Layout*)m_rootPanel->getChildByName("panelUser");
CC_ASSERT(panelUser != nullptr);
//<2F><><EFBFBD><EFBFBD>ID
auto txtUserID = (Text*)panelUser->getChildByName("txtUserID");
CC_ASSERT(txtUserID != nullptr);
txtUserID->setString(StringUtils::format("ID:%d", UserInfo::Instance().getGameID()));
//<2F><><EFBFBD><EFBFBD>
auto txtExp = (Text*)panelUser->getChildByName("txtExp");
CC_ASSERT(txtExp != nullptr);
std::string strExp = utility::GetUserLevel(UserInfo::Instance().getUserData()->lGrade) + StringUtils::format("[%d]", UserInfo::Instance().getUserData()->lGrade);
txtExp->setString(utility::a_u8(strExp));
//<2F><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>
auto txtUserName = (Text*)panelUser->getChildByName("txtUserName");
CC_ASSERT(txtUserName != nullptr);
2026-03-01 13:48:24 +08:00
txtUserName->setString(utility::a_u8(UserInfo::Instance().getUserNicName()));
2026-02-13 14:34:15 +08:00
//<2F><><EFBFBD><EFBFBD>
auto txtDiamond = (Text*)panelUser->getChildByName("txtDiamond");
CC_ASSERT(txtDiamond != nullptr);
txtDiamond->setString(StringUtils::format("%d", UserInfo::Instance().getUserInsure()));
//<2F><>ֵ
auto btnPay = (Button*)panelUser->getChildByName("btnPay");
CC_ASSERT(btnPay != nullptr);
btnPay->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
PopScene::Instance().show(GlobalJosn::getInstance()->getShareInfoByKind(SH_KIND_BUY));
std::string strUrl = StringUtils::format("%s/Lobby/UserInfo?uid=%d&t=%ld", WEB_SERVER_ADDRESS, UserInfo::Instance().getUserID(), time(NULL));
CWebReq::getInstance().sendRequestDocumentUrl(strUrl, CC_CALLBACK_1(MainScene::ResponseUserInfoResult, this), nullptr);
});
// <20><>ʾͷ<CABE><CDB7>
ShowHead();
}
void MainScene::onEventCreatePrivateRoom(EventCustom* event)
{
tagCreatePrivate* pkSendNet = static_cast<tagCreatePrivate *>(event->getUserData());
CMD_GR_Create_Private CreatePrivate;
memcpy(&CreatePrivate, &pkSendNet->CMD_Private, sizeof(CMD_GR_Create_Private));
CGameServerItem * pGameServerItem = CServerListData::shared()->getGameServerByKind(pkSendNet->wServerID);
if (pGameServerItem)
{
tagGameServer& tmpGameServer = pGameServerItem->m_GameServer;
WORD wServerID = tmpGameServer.wServerID;
m_kPrivateMission.SetCreateInfo(&CreatePrivate);
m_kPrivateMission.ConnectServerByServerID(wServerID);
}
else
{
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵȴ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void MainScene::onEventCreateAutoRoomInfo(EventCustom* event)
{
CMD_GR_AutoRoomInfo* pkSendNet = static_cast<CMD_GR_AutoRoomInfo *>(event->getUserData());
CGameServerItem * pGameServerItem = CServerListData::shared()->getGameServerByKind(pkSendNet->wKindID);
if (pGameServerItem)
{
tagGameServer& tmpGameServer = pGameServerItem->m_GameServer;
WORD wServerID = tmpGameServer.wServerID;
m_kPrivateMission.SetCreateAutoInfo(pkSendNet);
m_kPrivateMission.ConnectServerByServerID(wServerID);
}
else
{
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵȴ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void MainScene::onEventJoinPrivateRoom(EventCustom* event)
{
__Integer* pData = (__Integer*)event->getUserData();
uint32 dwJoinRoomNum = pData->getValue();
joinPrivateRoom(dwJoinRoomNum);
}
void MainScene::onEventInpuUnionID(EventCustom* event)
{
uint32 dwUserID = UserInfo::Instance().getUserID();
m_kUserInGameServer.PerformGetUnionList(dwUserID);
}
void MainScene::onEventGetRoomList(EventCustom* event)
{
//uint32 dwUserID = UserInfo::Instance().getUserID();
//m_kUserInGameServer.PerformGetUnionRoomList(dwUserID);
CMD_GR_GetUnionRoomInfo* pkSendNet = static_cast<CMD_GR_GetUnionRoomInfo *>(event->getUserData());
m_dwSelectUnionCode = pkSendNet->dwUnionCode;
m_kUserInGameServer.PerformGetUnionRoomList(pkSendNet);
}
// <20><>ȡ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void MainScene::onEventGetAutoRoomList(EventCustom* event)
{
uint32 dwUserID = UserInfo::Instance().getUserID();
m_kUserInGameServer.PerformGetAutoRoomList(dwUserID);
}
void MainScene::joinPrivateRoom(uint32 dwRoomNum)
{
int nServerID = dwRoomNum / 10000 - 10;
m_kPrivateMission.SetJoinInfo(dwRoomNum);
m_kPrivateMission.ConnectServerByServerID(nServerID);
}
void MainScene::onEventUpdateUserInsure(EventCustom* event)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
auto panelUser = m_rootPanel->getChildByName("panelUser");
CC_ASSERT(panelUser != nullptr);
//<2F><><EFBFBD><EFBFBD>
auto txtDiamond = (Text*)panelUser->getChildByName("txtDiamond");
CC_ASSERT(txtDiamond != nullptr);
txtDiamond->setString(StringUtils::format("%d", UserInfo::Instance().getUserInsure()));
}
void MainScene::WXShardFriendsSuccess(EventCustom* event)
{
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
// <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>;
if ((0 == pGlobalUserData->cbWXShareTimes) && (m_IndivMission.isAlive() == false))
{
m_IndivMission.wxShareSuccess();
}
}
void MainScene::onWXShardReward(CMD_GP_WXShareReward* pReward)
{
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
pGlobalUserData->lUserInsure += pReward->cbFKCount;
pGlobalUserData->cbWXShareTimes++;
onEventUpdateUserInsure(nullptr);
std::string strInfo = StringUtils::format("<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d <20>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD>", pReward->cbFKCount);
PopScene::Instance().show(utility::a_u8(strInfo.c_str()), nullptr);
}
void MainScene::onGPNoticeResult(tagGameMatch& pGameMatchInfo, bool bSucess, const char* pStr)
{
PopScene::Instance().show(utility::a_u8(pStr));
}
void MainScene::onGPAccountInfo(CMD_GP_UserAccountInfo* pAccountInfo)
{
//upPlayerInfo();
}
void MainScene::onUserInGameServerID(CMD_GP_InGameSeverID* pNetInfo)
{
if (pNetInfo->LockServerID != 0)
{
CGameServerItem* pServer = CServerListData::shared()->SearchGameServer(pNetInfo->LockServerID);
if (pServer != nullptr)
{
m_kUserInGameServer.stop();
StartGameScene(pServer);
}
else
{
PopScene::Instance().show(utility::a_u8("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD>"));
}
}
else
{
if (m_btnClickType == BT_CLICK_UNION)
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>뷿<EFBFBD><EFBFBD><E4B4B0>
if (m_GameUnionNode == nullptr)
{
m_GameUnionNode = GameUnionScene::create();
m_GameUnionNode->setVisible(false);
m_rootPanel->addChild(m_GameUnionNode);
}
CC_ASSERT(m_GameUnionNode != nullptr);
m_GameUnionNode->pushScene();
}
else if (m_btnClickType == BT_CLICK_CREATE)
{
if (m_CreateNode == nullptr)
{
m_CreateNode = CreateScene::create();
CC_ASSERT(m_CreateNode != nullptr);
m_rootPanel->addChild(m_CreateNode);
}
m_CreateNode->pushScene();
}
else if (m_btnClickType == BT_CLICK_JOIN)
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>뷿<EFBFBD><EFBFBD><E4B4B0>;
if (m_JoinNode == nullptr)
{
m_JoinNode = JoinScene::create();
CC_ASSERT(m_JoinNode != nullptr);
m_rootPanel->addChild(m_JoinNode);
}
m_JoinNode->pushScene();
}
else
{
ASSERT(false);
}
}
}
void MainScene::StartGameScene(CGameServerItem* pServer)
{
if (pServer != nullptr)
{
try
{
if (m_IsStartGame) return;
GameMission::g_pGameServerItem = pServer;
GameFrameBase* pGameScene = CGameCreator::getInstance()->startGameClient(pServer->GetKindID());
if (pGameScene)
{
Director::getInstance()->pushScene(TransitionCrossFade::create(0.3f, pGameScene));
m_IsStartGame = true;
if (m_JoinNode && m_JoinNode->isVisible())
{
m_JoinNode->setVisible(false);
}
if (m_CreateNode && m_CreateNode->isVisible())
{
m_CreateNode->setVisible(false);
}
if (m_GameUnionNode != nullptr)
{
m_GameUnionNode->HideCreateNode();
}
}
}
catch (...)
{
m_IsStartGame = false;
}
}
}
void MainScene::checkInGameServer()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
m_kUserInGameServer.PerformInGameServerID(pGlobalUserData->dwUserID);
}
void MainScene::InitSystemInfo()
{
std::string strMusic = StringUtils::format("Music_%d", UserInfo::Instance().getGameID());
std::string strEffect = StringUtils::format("Effect_%d", UserInfo::Instance().getGameID());
std::string strSoundType = StringUtils::format("SoundType_%d", UserInfo::Instance().getGameID());
float fMusic = UserDefault::getInstance()->getFloatForKey(strMusic.c_str(), 100.0);
float fEffect = UserDefault::getInstance()->getFloatForKey(strEffect.c_str(), 100.0);
BYTE cbSoundType = UserDefault::getInstance()->getIntegerForKey(strSoundType.c_str(), PT_EFFECT);
CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(fMusic / 100.0);
CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(fEffect / 100.0);
YSAudioEngine::Instance().setSoundType(cbSoundType);
if (PLATFORM_MUISCBG)
{
CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("common/sound/bg_music.mp3", true);
}
}
void MainScene::appWillEnterForeground()
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string strParam = JniFun::getRunParam();
if (!strParam.empty())
{
cocos2d::log("------------------------------");
cocos2d::log("%s", strParam.c_str());
cocos2d::log("------------------------------");
joinPrivateRoom(atoi(strParam.c_str()));
}
// <20><>ʾͷ<CABE><CDB7>
ShowHead();
}
// <20><>ʾͷ<CABE><CDB7>
void MainScene::ShowHead()
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾͷ<CABE><CDB7>
auto panelUser = (Layout*)m_rootPanel->getChildByName("panelUser");
CC_ASSERT(panelUser != nullptr);
auto sphead = (Sprite*)panelUser->getChildByName("head");
CC_ASSERT(sphead != nullptr);
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
uint32 dwUserID = UserInfo::Instance().getUserID();
std::string strHttp = UserInfo::Instance().getHeadHttp();
ImagicDownManager::Instance().addDown(sphead, strHttp, dwUserID, true);
sphead->setVisible(true);
}
// <20><>ȡ<EFBFBD><C8A1>Ϣ;
void MainScene::RequsetHttpInfo()
{
LoadingScene::Instance().show(this);
std::string strUrl = StringUtils::format("%s/Lobby/Config?t=%ld", WEB_SERVER_ADDRESS, time(NULL));
CWebReq::getInstance().sendRequestDocumentUrl(strUrl, CC_CALLBACK_1(MainScene::ResponseResult, this), nullptr);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
void MainScene::ResponseResult(rapidjson::Document* pDoc)
{
LoadingScene::Instance().hide();
if (pDoc == nullptr) return;
// <20><><EFBFBD><EFBFBD>;
if (pDoc->HasMember("Notices") && (*pDoc)["Notices"].IsArray())
{
for (rapidjson::SizeType i = 0; i < (*pDoc)["Notices"].Size(); ++i)
{
const rapidjson::Value& v = (*pDoc)["Notices"][i];
std::string strNotices = v.GetString();
if (m_PlatformNotic)
{
m_PlatformNotic->postMessage(strNotices, 0, true);
}
}
}
// <20><><EFBFBD><EFBFBD>;
if (pDoc->HasMember("AgentTip") && (*pDoc)["AgentTip"].IsString())
{
const rapidjson::Value& v = (*pDoc)["AgentTip"];
GlobalJosn::getInstance()->m_strAgentTip = v.GetString();
}
// <20><><EFBFBD><EFBFBD>;
if (pDoc->HasMember("ShareTip") && (*pDoc)["ShareTip"].IsString())
{
const rapidjson::Value& v = (*pDoc)["ShareTip"];
GlobalJosn::getInstance()->m_strShareTip = v.GetString();
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string strParam = JniFun::getRunParam();
if (!strParam.empty())
{
cocos2d::log("%s", strParam.c_str());
joinPrivateRoom(atoi(strParam.c_str()));
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>;
if (GlobalJosn::getInstance()->m_IsNotice)
{
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
if (pGlobalUserInfo->GetShowNotice())
{
auto noticeNode = NoticeScene::create();
CC_ASSERT(noticeNode != nullptr);
this->addChild(noticeNode);
noticeNode->pushScene();
}
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void MainScene::ResponseUserInfoResult(rapidjson::Document* pDoc)
{
if (pDoc == nullptr) return;
do
{
if (!pDoc->HasMember("ret") || !((*pDoc)["ret"].IsBool()) || !((*pDoc)["ret"].GetBool()))
{
break;
}
if (pDoc->HasMember("CardNum") && (*pDoc)["CardNum"].IsInt())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
auto panelUser = (Layout*)m_rootPanel->getChildByName("panelUser");
CC_ASSERT(panelUser != nullptr);
int nCurNum = CWebReq::getDataValueInt(pDoc, "CardNum");
//<2F><><EFBFBD><EFBFBD>;
auto txtDiamond = (Text*)panelUser->getChildByName("txtDiamond");
CC_ASSERT(txtDiamond != nullptr);
txtDiamond->setString(StringUtils::format("%d", nCurNum));
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
pGlobalUserData->lUserInsure = nCurNum;
}
} while (false);
}
void MainScene::updateServerInfo()
{
m_kUserInGameServer.GetServerOnLine();
}
void MainScene::onUserInUnion(CMD_GP_InUnion* pNetInfo)
{
if (pNetInfo == nullptr) return;
// <20>ڹ<EFBFBD><DAB9><EFBFBD>;
if (pNetInfo->cbResultCode == 0)
{
if (m_JoinNode != nullptr && m_JoinNode->isVisible())
{
m_JoinNode->setVisible(false);
}
if (m_CreateNode == nullptr)
{
m_CreateNode = CreateScene::create();
m_rootPanel->addChild(m_CreateNode);
}
if (m_CreateNode)
{
m_CreateNode->pushScene(CDT_CREATE_PRIVATE, pNetInfo->dwUnionCode);
}
}
else
{
PopScene::Instance().show(utility::a_u8(pNetInfo->szDescribeString));
}
}
void MainScene::onUnionAndGameInfo(tagUnionAndGameList *pUnionAndGameList)
{
2026-03-01 13:48:24 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
utility::mlog("onUnionAndGameInfo: pUnionAndGameList=%p", pUnionAndGameList);
if (pUnionAndGameList != nullptr) {
utility::mlog("onUnionAndGameInfo: UnionCount=%d", pUnionAndGameList->kUnionList.size());
}
2026-02-13 14:34:15 +08:00
if (pUnionAndGameList == nullptr) return;
2026-03-01 13:48:24 +08:00
utility::mlog("onUnionAndGameInfo: m_GameUnionNode=%p", m_GameUnionNode);
2026-02-13 14:34:15 +08:00
if (m_GameUnionNode != nullptr)
{
m_GameUnionNode->ShowUnionList(pUnionAndGameList);
}
else
{
ShowUnionList(pUnionAndGameList);
}
}
void MainScene::onUnionRoomInfo(tagRoomItemList *pRoomItemList)
{
if (pRoomItemList == nullptr) return;
if (m_GameUnionNode != nullptr && m_GameUnionNode->isVisible())
{
m_GameUnionNode->ShowRoomList(pRoomItemList);
}
else
{
showUnionRoomList(pRoomItemList);
}
}
void MainScene::onAutoRoomInfo(tagAutoRoomItemList *pRoomItemList)
{
if (pRoomItemList == nullptr) return;
if (m_GameUnionNode != nullptr)
{
m_GameUnionNode->ShowAutoRoomList(pRoomItemList);
}
}
void MainScene::onEventBtnClick(BT_CLICK_TYPE btnClickType)
{
YSAudioEngine::Instance().playBtnClickEffect();
m_btnClickType = btnClickType;
if (CServerListData::shared()->GetGameServerCount() > 0)
{
checkInGameServer();
}
else
{
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եȣ<EFBFBD>"));
}
}
void MainScene::CreateAutoRoomInfoResulte(CMD_GR_AutoResulte* pAutoResulte)
{
if (pAutoResulte == nullptr) return;
// <20>ɹ<EFBFBD>ˢ<EFBFBD>½<EFBFBD><C2BD><EFBFBD>;
if (pAutoResulte->lErrorCode == 0)
{
onEventGetAutoRoomList(nullptr);
}
else
{
PopScene::Instance().show(utility::a_u8(pAutoResulte->szDescribeString));
}
}
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void MainScene::onEventDeleteAutoRoomInfo(EventCustom* event)
{
CMD_GP_DelAutoRoomInfo* pkSendNet = static_cast<CMD_GP_DelAutoRoomInfo *>(event->getUserData());
CGameServerItem * pGameServerItem = CServerListData::shared()->SearchGameServer(pkSendNet->wServerID);
if (pGameServerItem)
{
m_kPrivateMission.SetDelAutoInfo(pkSendNet);
m_kPrivateMission.ConnectServerByServerID(pkSendNet->wServerID);
}
else
{
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵȴ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
std::string MainScene::getGameRule(uint16 wKindID, uint32 dwGameRule)
{
std::string strGameRule;
if (DDZ_KIND_ID == wKindID)
{
strGameRule = DDZ_SPACE::DDZGameScene::getGameRule(dwGameRule);
}
else if (WN_KIND_ID == wKindID)
{
strGameRule = WNMJ_SPACE::WN_GameScene::getGameRule(dwGameRule);
}
else if (NN_KIND_ID == wKindID)
{
strGameRule = NiuNiu_SPACE::NNGameScene::getGameRule(dwGameRule);
}
else if (SSS_KIND_ID == wKindID)
{
strGameRule = SSS_SPACE::SSSGameScene::getGameRule(dwGameRule);
}
else if (ZJH_KIND_ID == wKindID)
{
strGameRule = ZJH_SPACE::ZJHGameScene::getGameRule(dwGameRule);
}
else if (DZ_KIND_ID == wKindID)
{
strGameRule = DZ_SPACE::DZGameScene::getGameRule(dwGameRule);
}
else if (PDK_KIND_ID == wKindID)
{
strGameRule = PDK_SPACE::PDKGameScene::getGameRule(dwGameRule);
}
return strGameRule;
}