Files
wnmj-normal/Classes/Scenes/SetScene.cpp

167 lines
4.4 KiB
C++
Raw Normal View History

2026-03-03 13:56:44 +08:00
#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);
//<2F><>ȡ<EFBFBD>رհ<D8B1>ť
auto btnClose = (Button*)m_Imagebg->getChildByName("btnClose");
CC_ASSERT(btnClose != nullptr);
//ע<><D7A2><EFBFBD>رհ<D8B1>ť<EFBFBD>¼<EFBFBD>
btnClose->addClickEventListener([this](Ref*){
YSAudioEngine::Instance().playBtnClickEffect();
// <20><>¼
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();
});
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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);
// <20>¼<EFBFBD><C2BC><EFBFBD>ʼ<EFBFBD><CABC>
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.");
}
}