#include "OptionsLayer.h" #include "GameManager.h" #include "MainMenuLayer.h" USING_NS_CC; using namespace ui; Scene* OptionsLayer::createScene() { auto scene = Scene::create(); auto layer = OptionsLayer::create(); scene->addChild(layer); return scene; } bool OptionsLayer::init(){ if (!BaseMenuLayer::init()){ return false; } int marginX = 50 * getScaleX(); int marginY = _visibleSize.height - 100 * getScaleY(); //Label para ajustar sonidos de fondo _backGroundVolumeLabel = Label::createWithTTF("0", "fonts/arial.ttf", 16); _backGroundVolumeLabel->setAnchorPoint(Point(0, 1)); _backGroundVolumeLabel->setTextColor(Color4B::BLACK); _ostr << GameManager::getInstance()->getBgVolume(); _backGroundVolumeLabel->setString("Background volume: " + _ostr.str()); _ostr.str(""); _backGroundVolumeLabel->setPosition(Point(marginX, marginY)); addChild(_backGroundVolumeLabel); //slider para ajustar volumen de fondo _backGroundVolume = Slider::create(); _backGroundVolume->loadBarTexture("Slider_Back", Widget::TextureResType::PLIST); _backGroundVolume->loadSlidBallTextures("SliderNode_Normal", "SliderNode_Press", "SliderNode_Disable", Widget::TextureResType::PLIST); _backGroundVolume->loadProgressBarTexture("Slider_PressBar", Widget::TextureResType::PLIST); _backGroundVolume->setAnchorPoint(Point(0, 1)); marginY -= 5 * getScaleY() + _backGroundVolumeLabel->getBoundingBox().size.height; _backGroundVolume->setPosition(Point(marginX, marginY)); _backGroundVolume->setPercent(GameManager::getInstance()->getBgVolume()); _backGroundVolume->addEventListener(CC_CALLBACK_0(OptionsLayer::actionBackGroundVolumeSlider, this)); addChild(_backGroundVolume); //Label para ajustar volumen de efectos _effectsVolumeLabel = Label::createWithTTF("0", "fonts/arial.ttf", 16); _ostr << GameManager::getInstance()->getEffectsVolume(); _effectsVolumeLabel->setString("Effects volume: " + _ostr.str()); _ostr.str(""); _effectsVolumeLabel->setTextColor(Color4B::BLACK); _effectsVolumeLabel->setAnchorPoint(Point(0, 1)); marginY -= 50 * getScaleY() + _backGroundVolume->getBoundingBox().size.height; _effectsVolumeLabel->setPosition(Point(marginX, marginY)); addChild(_effectsVolumeLabel); //Slider para ajustar volumen de efectos _effectsVolume = Slider::create(); _effectsVolume->loadBarTexture("Slider_Back", Widget::TextureResType::PLIST); _effectsVolume->loadSlidBallTextures("SliderNode_Normal", "SliderNode_Press", "SliderNode_Disable", Widget::TextureResType::PLIST); _effectsVolume->loadProgressBarTexture("Slider_PressBar", Widget::TextureResType::PLIST); _effectsVolume->setAnchorPoint(Point(0, 1)); marginY -= 5 * getScaleY() + _effectsVolumeLabel->getBoundingBox().size.height; _effectsVolume->setPosition(Point(marginX, marginY)); _effectsVolume->setPercent(GameManager::getInstance()->getEffectsVolume()); _effectsVolume->addEventListener(CC_CALLBACK_0(OptionsLayer::actionEffectsVolumeSlider, this)); addChild(_effectsVolume); //boton de ir hacia atras auto backBt = Button::create("back0", "back1", "back1", Widget::TextureResType::PLIST); backBt->setAnchorPoint(Point(0, 0.5)); backBt->addClickEventListener(CC_CALLBACK_0(OptionsLayer::actionButtonBack, this)); backBt->setPosition(Point(42.5* getScaleX(), 50 * getScaleY())); addChild(backBt); return true; } void OptionsLayer::actionBackGroundVolumeSlider(){ _ostr << _backGroundVolume->getPercent(); _backGroundVolumeLabel->setString("Background volume: " + _ostr.str()); _ostr.str(""); GameManager::getInstance()->setBgVolume(_backGroundVolume->getPercent()); } void OptionsLayer::actionEffectsVolumeSlider(){ _ostr << _effectsVolume->getPercent(); _effectsVolumeLabel->setString("Effects volume: " + _ostr.str()); _ostr.str(""); GameManager::getInstance()->setEffectsVolume(_effectsVolume->getPercent()); } //guarda la configuracion y va al menu principal void OptionsLayer::actionButtonBack() { GameManager::getInstance()->saveSetting(); Director::getInstance()->replaceScene(TransitionFlipX::create(1, MainMenuLayer::createScene())); }