167 lines
4.4 KiB
C++
167 lines
4.4 KiB
C++
#include "SetScene.h"
|
|
#include "MissionWeiXin.h"
|
|
#include "SimpleAudioEngine.h"
|
|
#include "UserInfo.h"
|
|
|
|
SetScene::SetScene()
|
|
{
|
|
m_Imagebg = nullptr;
|
|
m_SliderMusic = nullptr;
|
|
m_SliderEffect = nullptr;
|
|
}
|
|
|
|
SetScene::~SetScene()
|
|
{
|
|
}
|
|
|
|
bool SetScene::init()
|
|
{
|
|
if (!Node::init())
|
|
{
|
|
return false;
|
|
};
|
|
|
|
auto rootPanel = CSLoader::createNode("Platform/SetScene.csb");
|
|
CC_ASSERT(rootPanel != nullptr);
|
|
this->addChild(rootPanel);
|
|
|
|
m_Imagebg = (ImageView*)rootPanel->getChildByName("Imagebg");
|
|
CC_ASSERT(m_Imagebg != nullptr);
|
|
|
|
//获取关闭按钮
|
|
auto btnClose = (Button*)m_Imagebg->getChildByName("btnClose");
|
|
CC_ASSERT(btnClose != nullptr);
|
|
|
|
//注册关闭按钮事件
|
|
btnClose->addClickEventListener([this](Ref*){
|
|
YSAudioEngine::Instance().playBtnClickEffect();
|
|
|
|
// 记录
|
|
std::string strMusic = StringUtils::format("Music_%d", UserInfo::Instance().getGameID());
|
|
std::string strEffect = StringUtils::format("Effect_%d", UserInfo::Instance().getGameID());
|
|
std::string strSountType = StringUtils::format("SoundType_%d", UserInfo::Instance().getGameID());
|
|
|
|
int iMusic = m_SliderMusic->getPercent();
|
|
UserDefault::getInstance()->setFloatForKey(strMusic.c_str(), iMusic);
|
|
int iEffect = m_SliderEffect->getPercent();
|
|
UserDefault::getInstance()->setFloatForKey(strEffect.c_str(), iEffect);
|
|
|
|
UserDefault::getInstance()->setIntegerForKey(strSountType.c_str(), m_cbSoundType);
|
|
|
|
//this->removeFromParent();
|
|
this->popScene();
|
|
});
|
|
|
|
|
|
// 语言设置
|
|
m_chbPuTong = (CheckBox*)m_Imagebg->getChildByName("chb_pt");
|
|
CC_ASSERT(m_chbPuTong != nullptr);
|
|
m_RadioGroupYX.AddCheckBox(m_chbPuTong);
|
|
m_chbPuTong->addClickEventListener([this](Ref*){
|
|
m_cbSoundType = 0;
|
|
YSAudioEngine::Instance().setSoundType(m_cbSoundType);
|
|
});
|
|
|
|
m_chbFangYan = (CheckBox*)m_Imagebg->getChildByName("chbFY");
|
|
CC_ASSERT(m_chbFangYan != nullptr);
|
|
m_RadioGroupYX.AddCheckBox(m_chbFangYan);
|
|
m_chbFangYan->addClickEventListener([this](Ref*){
|
|
m_cbSoundType = 1;
|
|
YSAudioEngine::Instance().setSoundType(m_cbSoundType);
|
|
});
|
|
|
|
m_cbSoundType = YSAudioEngine::Instance().getSoundType();
|
|
m_RadioGroupYX.setDelauftSelect(m_cbSoundType, true);
|
|
|
|
return true;
|
|
}
|
|
|
|
void SetScene::onEnter()
|
|
{
|
|
Node::onEnter();
|
|
|
|
InitSimpleAudio();
|
|
}
|
|
|
|
void SetScene::onEnterTransitionDidFinish()
|
|
{
|
|
Node::onEnterTransitionDidFinish();
|
|
}
|
|
|
|
void SetScene::onExit()
|
|
{
|
|
Node::onExit();
|
|
}
|
|
|
|
void SetScene::InitSimpleAudio()
|
|
{
|
|
if (m_Imagebg == nullptr) return;
|
|
|
|
std::string strMusic = StringUtils::format("Music_%d", UserInfo::Instance().getGameID());
|
|
std::string strEffect = StringUtils::format("Effect_%d", UserInfo::Instance().getGameID());
|
|
|
|
int iMusic = UserDefault::getInstance()->getIntegerForKey(strMusic.c_str(), 50);
|
|
int iEffect = UserDefault::getInstance()->getIntegerForKey(strEffect.c_str(), 50);
|
|
|
|
m_SliderMusic = (Slider*)m_Imagebg->getChildByName("SliderMusic");
|
|
CC_ASSERT(m_SliderMusic);
|
|
m_SliderMusic->setMaxPercent(100);
|
|
|
|
m_SliderEffect = (Slider*)m_Imagebg->getChildByName("SliderEffect");
|
|
CC_ASSERT(m_SliderEffect);
|
|
m_SliderEffect->setMaxPercent(100);
|
|
|
|
m_SliderMusic->setPercent(iMusic);
|
|
m_SliderEffect->setPercent(iEffect);
|
|
|
|
// 事件初始化
|
|
m_SliderMusic->addEventListener(CC_CALLBACK_2(SetScene::SliderCallBack, this));
|
|
m_SliderEffect->addEventListener(CC_CALLBACK_2(SetScene::SliderCallBack, this));
|
|
}
|
|
|
|
void SetScene::pushScene()
|
|
{
|
|
if (m_Imagebg)
|
|
{
|
|
this->setVisible(true);
|
|
m_Imagebg->setScale(0.8f);
|
|
m_Imagebg->runAction(Sequence::create(Show::create(), ScaleTo::create(0.2f, 1.2f), ScaleTo::create(0.1f, 1.f), nullptr));
|
|
}
|
|
}
|
|
|
|
void SetScene::popScene()
|
|
{
|
|
if (m_Imagebg)
|
|
{
|
|
m_Imagebg->runAction(Sequence::create(Hide::create(), ScaleTo::create(0.1f, 0.1f), CallFunc::create([&]()
|
|
{
|
|
this->setVisible(false);
|
|
}), nullptr));
|
|
}
|
|
}
|
|
|
|
void SetScene::SliderCallBack(cocos2d::Ref* widget, Slider::EventType type)
|
|
{
|
|
Slider* slider = (Slider*)widget;
|
|
|
|
if (type == Slider::EventType::ON_SLIDEBALL_DOWN)
|
|
{
|
|
cocos2d::log("slider button pressed!");
|
|
}
|
|
else if (type == Slider::EventType::ON_PERCENTAGE_CHANGED)
|
|
{
|
|
cocos2d::log("slider is moving! percent = %f", 100.0f * slider->getPercent() / slider->getMaxPercent());
|
|
if (slider == m_SliderEffect)
|
|
{
|
|
CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(slider->getPercent() / (float)slider->getMaxPercent());
|
|
}
|
|
else
|
|
{
|
|
CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(slider->getPercent() / (float)slider->getMaxPercent());
|
|
}
|
|
}
|
|
else if (type == Slider::EventType::ON_SLIDEBALL_UP)
|
|
{
|
|
cocos2d::log("slider button is released.");
|
|
}
|
|
} |