239 lines
4.5 KiB
C++
239 lines
4.5 KiB
C++
#include "JoinScene.h"
|
|
#include "Define.h"
|
|
#include "Utility.h"
|
|
|
|
JoinScene::JoinScene()
|
|
{
|
|
memset(m_cbRoomID, 0xff, sizeof(m_cbRoomID));
|
|
memset(m_SpriteNum, 0x0, sizeof(m_SpriteNum));
|
|
memset(m_btnNum, 0x0, sizeof(m_btnNum));
|
|
|
|
m_isJoinRoom = true;
|
|
}
|
|
|
|
JoinScene::~JoinScene()
|
|
{
|
|
}
|
|
|
|
bool JoinScene::init()
|
|
{
|
|
if (!Node::init())
|
|
{
|
|
return false;
|
|
};
|
|
|
|
auto rootPanel = CSLoader::createNode("Platform/JoinScene.csb");
|
|
CC_ASSERT(rootPanel != nullptr);
|
|
this->addChild(rootPanel);
|
|
|
|
m_ImageViewBg = (ImageView*)rootPanel->getChildByName("Imagebg");
|
|
CC_ASSERT(nullptr != m_ImageViewBg);
|
|
|
|
//获取关闭按钮
|
|
auto btnClose = (Button*)m_ImageViewBg->getChildByName("btnClose");
|
|
CC_ASSERT(btnClose != nullptr);
|
|
|
|
//注册关闭按钮事件
|
|
btnClose->addClickEventListener([this](Ref*){
|
|
//this->removeFromParent();
|
|
YSAudioEngine::Instance().playBtnClickEffect();
|
|
this->popScene();
|
|
});
|
|
|
|
m_txtTitle = (Text*)m_ImageViewBg->getChildByName("txtTitle");
|
|
CC_ASSERT(m_txtTitle != nullptr);
|
|
|
|
InitUI(m_ImageViewBg);
|
|
|
|
return true;
|
|
}
|
|
|
|
void JoinScene::onEnter()
|
|
{
|
|
Node::onEnter();
|
|
}
|
|
|
|
void JoinScene::onEnterTransitionDidFinish()
|
|
{
|
|
Node::onEnterTransitionDidFinish();
|
|
}
|
|
|
|
void JoinScene::onExit()
|
|
{
|
|
Node::onExit();
|
|
}
|
|
|
|
// UI初始化
|
|
void JoinScene::InitUI(Node* rootPanel)
|
|
{
|
|
if (nullptr == rootPanel) return;
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
{
|
|
std::string strKey = __String::createWithFormat("txtNum_%d", i)->getCString();
|
|
m_SpriteNum[i] = (Text*)rootPanel->getChildByName(strKey);
|
|
CC_ASSERT(m_SpriteNum[i]);
|
|
if (nullptr == m_SpriteNum[i]) continue;
|
|
|
|
m_SpriteNum[i]->setString("");
|
|
}
|
|
|
|
for (int j = 0; j < 10; j++)
|
|
{
|
|
std::string strKey = __String::createWithFormat("btn_num_%d", j)->getCString();
|
|
m_btnNum[j] = (Button*)rootPanel->getChildByName(strKey);
|
|
CC_ASSERT(m_btnNum[j] != nullptr);
|
|
|
|
m_btnNum[j]->addClickEventListener(CC_CALLBACK_1(JoinScene::onClickNumber, this));
|
|
}
|
|
|
|
// 删除
|
|
auto btnDel = (Button*)rootPanel->getChildByName("btn_del");
|
|
CC_ASSERT(btnDel != nullptr);
|
|
|
|
btnDel->addClickEventListener([this](Ref* obj){
|
|
|
|
YSAudioEngine::Instance().playBtnClickEffect();
|
|
|
|
for (int k = 5; k >= 0; k--)
|
|
{
|
|
if (m_cbRoomID[k] != 0xff)
|
|
{
|
|
m_cbRoomID[k] = 0xff;
|
|
m_SpriteNum[k]->setString("");
|
|
break;
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
// 清空
|
|
auto btnC = (Button*)rootPanel->getChildByName("btn_C");
|
|
CC_ASSERT(btnC != nullptr);
|
|
|
|
btnC->addClickEventListener([this](Ref* pSender){
|
|
YSAudioEngine::Instance().playBtnClickEffect();
|
|
|
|
for (int k = 5; k >= 0; k--)
|
|
{
|
|
m_cbRoomID[k] = 0xff;
|
|
m_SpriteNum[k]->setString("");
|
|
}
|
|
});
|
|
}
|
|
|
|
void JoinScene::onClickNumber(Ref* obj)
|
|
{
|
|
YSAudioEngine::Instance().playBtnClickEffect();
|
|
|
|
int num = 0xff;
|
|
|
|
// 查找按钮数字
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
if (obj == m_btnNum[i])
|
|
{
|
|
num = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (0xff == num) return;
|
|
|
|
for (int k = 0; k < 6; k++)
|
|
{
|
|
if (m_cbRoomID[k] == 0xff)
|
|
{
|
|
m_cbRoomID[k] = num;
|
|
|
|
// 修改图片
|
|
std::string strKey = __String::createWithFormat("%d", num)->getCString();
|
|
m_SpriteNum[k]->setString(strKey);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 已经输入六位
|
|
if (m_cbRoomID[5] != 0xff)
|
|
{
|
|
auto dispatcher = Director::getInstance()->getEventDispatcher();
|
|
|
|
int iRoomID = 0;
|
|
|
|
int iCarry[6] = { 100000, 10000, 1000, 100, 10, 1 }; // 进位
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
{
|
|
int num = 0;
|
|
if (0xff != m_cbRoomID[i])
|
|
{
|
|
num = m_cbRoomID[i];
|
|
}
|
|
|
|
iRoomID += num * iCarry[i];
|
|
}
|
|
|
|
__Integer* pnNum = __Integer::create(iRoomID);
|
|
|
|
if (m_isJoinRoom)
|
|
{
|
|
EventCustom event(JOIN_PRIVATE_ROOM_EVENT);
|
|
event.setUserData(pnNum);
|
|
dispatcher->dispatchEvent(&event);
|
|
}
|
|
else
|
|
{
|
|
EventCustom event(INPUT_UNION_ID);
|
|
event.setUserData(pnNum);
|
|
dispatcher->dispatchEvent(&event);
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
void JoinScene::pushScene(bool isJoinRoom /*= true*/)
|
|
{
|
|
if (m_ImageViewBg)
|
|
{
|
|
m_isJoinRoom = isJoinRoom;
|
|
|
|
if (m_isJoinRoom)
|
|
{
|
|
m_txtTitle->setString(utility::a_u8("请输入6位房间号"));
|
|
}
|
|
else
|
|
{
|
|
m_txtTitle->setString(utility::a_u8("请输入公会码"));
|
|
}
|
|
|
|
for (int k = 5; k >= 0; k--)
|
|
{
|
|
m_cbRoomID[k] = 0xff;
|
|
m_SpriteNum[k]->setString("");
|
|
}
|
|
|
|
this->setVisible(true);
|
|
m_ImageViewBg->setScale(0.8f);
|
|
m_ImageViewBg->runAction(Sequence::create(Show::create(), ScaleTo::create(0.2f, 1.2f), ScaleTo::create(0.1f, 1.f), nullptr));
|
|
}
|
|
}
|
|
|
|
void JoinScene::popScene()
|
|
{
|
|
if (m_ImageViewBg)
|
|
{
|
|
m_ImageViewBg->runAction(Sequence::create(Hide::create(), ScaleTo::create(0.1f, 0.1f), CallFunc::create([&]()
|
|
{
|
|
for (int k = 5; k >= 0; k--)
|
|
{
|
|
m_cbRoomID[k] = 0xff;
|
|
m_SpriteNum[k]->setString("");
|
|
}
|
|
|
|
this->setVisible(false);
|
|
}), nullptr));
|
|
}
|
|
}
|