diff --git a/Classes/AppDelegate.cpp b/Classes/AppDelegate.cpp index 1147b44..81cde32 100755 --- a/Classes/AppDelegate.cpp +++ b/Classes/AppDelegate.cpp @@ -79,6 +79,10 @@ bool AppDelegate::applicationDidFinishLaunching() query.finalize(); db.close(); + //初始化背景音乐和效果音的默认大小值 + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_BG_AUDIO_VOLUME, 1.0)); + SimpleAudioEngine::sharedEngine()->setEffectsVolume(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 1.0)); + CCScene *mainScene = RPGStartSceneLayer::scene(); pDirector->runWithScene(mainScene); diff --git a/Classes/GameCfg.h b/Classes/GameCfg.h index b9847e1..2199c06 100755 --- a/Classes/GameCfg.h +++ b/Classes/GameCfg.h @@ -27,4 +27,7 @@ #define MAX_STATUS1 9999 //HP最大值 #define MAX_STATUS2 999 //MP、攻击力、防御力、速度、技能攻击、技能防御的最大值 +#define GAME_BG_AUDIO_VOLUME "GAME_BG_AUDIO_VOLUME" //背景音乐大小 +#define GAME_EFFECT_AUDIO_VOLUME "GAME_EFFECT_AUDIO_VOLUME" //效果音大小 + #endif diff --git a/Classes/RPGStartSceneLayer.cpp b/Classes/RPGStartSceneLayer.cpp index 17f0f63..d2a1e31 100755 --- a/Classes/RPGStartSceneLayer.cpp +++ b/Classes/RPGStartSceneLayer.cpp @@ -115,6 +115,8 @@ void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) this->removeChildByTag(kRPGStartSceneLayerTagSettingsMenu, true); this->removeChildByTag(kRPGStartSceneLayerTagLabStyle, true); this->removeChildByTag(kRPGStartSceneLayerTagLabCurrStyle, true); + this->removeChildByTag(kRPGStartSceneLayerTagLabBgAudio, true); + this->removeChildByTag(kRPGStartSceneLayerTagLabEffectAudio, true); this->showMainMenu(); } @@ -136,6 +138,19 @@ void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) //更新当前样式 CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); + + CCMenu *settingsMenu = (CCMenu*)this->getChildByTag(kRPGStartSceneLayerTagSettingsMenu); + + //还原背景音乐 + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_BG_AUDIO_VOLUME, 1.0); + ((CCMenuItemLabel*)settingsMenu->getChildByTag(kRPGStartSceneLayerTagSettingsBgAudioBtn))->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(1); + + //还原效果声音 + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 1.0); + ((CCMenuItemLabel*)settingsMenu->getChildByTag(kRPGStartSceneLayerTagSettingsEffectAudioBtn))->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setEffectsVolume(1); + } break; case kRPGStartSceneLayerTagSettingsStyleLeft: @@ -181,6 +196,49 @@ void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); } break; + case kRPGStartSceneLayerTagSettingsBgAudioBtn: + { + //点击了背景音乐的开关 + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_BG_AUDIO_VOLUME, 1.0) == 0) + { + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_BG_AUDIO_VOLUME, 1.0); + + ((CCMenuItemLabel*)menuItem)->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(1); + } + else + { + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_BG_AUDIO_VOLUME, 0); + + ((CCMenuItemLabel*)menuItem)->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_on"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0); + } + + } + break; + case kRPGStartSceneLayerTagSettingsEffectAudioBtn: + { + //点击了效果声音的开关 + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 1.0) == 0) + { + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 1.0); + + ((CCMenuItemLabel*)menuItem)->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setEffectsVolume(1); + } + else + { + CCUserDefault::sharedUserDefault()->setFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 0); + + ((CCMenuItemLabel*)menuItem)->setString(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_on"))->getCString()).c_str()); + SimpleAudioEngine::sharedEngine()->setEffectsVolume(0); + } + } + break; default: { //开始游戏 @@ -312,6 +370,44 @@ void RPGStartSceneLayer::showSettingsMenu() this->addChild(labCurrStyleLabel); } + //背景音乐的开关 + CCString *labBgAudioStr = (CCString*)this->m_stringList->objectForKey("settingsmenu_bgaudio"); + CCLabelTTF *labBgAudioLabel = CCLabelTTF::create(OzgCCUtility::generalString(labBgAudioStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentLeft, kCCVerticalTextAlignmentCenter); + labBgAudioLabel->setFontFillColor(ccc3(188, 188, 188)); + labBgAudioLabel->setTag(kRPGStartSceneLayerTagLabBgAudio); + labBgAudioLabel->setPosition(ccp(300, 470)); + this->addChild(labBgAudioLabel); + + //背景音乐的开关的按钮 + CCLabelTTF *labBgAudioBtnLabel = NULL; + if(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_BG_AUDIO_VOLUME, 1.0) == 0) + labBgAudioBtnLabel = CCLabelTTF::create(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_on"))->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + else + labBgAudioBtnLabel = CCLabelTTF::create(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + CCMenuItemLabel *labBgAudioBtn = CCMenuItemLabel::create(labBgAudioBtnLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); + labBgAudioBtn->setPosition(ccp(550, 470)); + labBgAudioBtn->setTag(kRPGStartSceneLayerTagSettingsBgAudioBtn); + settingsMenu->addChild(labBgAudioBtn); + + //效果声音的开关 + CCString *labEffectAudioStr = (CCString*)this->m_stringList->objectForKey("settingsmenu_effectaudio"); + CCLabelTTF *labEffectAudioLabel = CCLabelTTF::create(OzgCCUtility::generalString(labEffectAudioStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentLeft, kCCVerticalTextAlignmentCenter); + labEffectAudioLabel->setFontFillColor(ccc3(188, 188, 188)); + labEffectAudioLabel->setTag(kRPGStartSceneLayerTagLabEffectAudio); + labEffectAudioLabel->setPosition(ccp(300, 390)); + this->addChild(labEffectAudioLabel); + + //效果声音的开关的按钮 + CCLabelTTF *labEffectAudioBtnLabel = NULL; + if(CCUserDefault::sharedUserDefault()->getFloatForKey(GAME_EFFECT_AUDIO_VOLUME, 1.0) == 0) + labEffectAudioBtnLabel = CCLabelTTF::create(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_on"))->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + else + labEffectAudioBtnLabel = CCLabelTTF::create(OzgCCUtility::generalString(((CCString*)this->m_stringList->objectForKey("settingsmenu_audio_off"))->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + CCMenuItemLabel *labEffectAudioBtn = CCMenuItemLabel::create(labEffectAudioBtnLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); + labEffectAudioBtn->setPosition(ccp(550, 390)); + labEffectAudioBtn->setTag(kRPGStartSceneLayerTagSettingsEffectAudioBtn); + settingsMenu->addChild(labEffectAudioBtn); + //恢复默认 CCString *menuRestoreStr = (CCString*)this->m_stringList->objectForKey("settingsmenu_restore"); CCLabelTTF *menuRestoreLabel = CCLabelTTF::create(OzgCCUtility::generalString(menuRestoreStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentLeft, kCCVerticalTextAlignmentCenter); diff --git a/Classes/RPGStartSceneLayer.h b/Classes/RPGStartSceneLayer.h index 942ae9a..ef22044 100755 --- a/Classes/RPGStartSceneLayer.h +++ b/Classes/RPGStartSceneLayer.h @@ -25,10 +25,15 @@ enum RPGStartSceneLayerTag kRPGStartSceneLayerTagSettingsMenu = 8, kRPGStartSceneLayerTagSettingsStyleLeft = 10, kRPGStartSceneLayerTagSettingsStyleRight = 12, + kRPGStartSceneLayerTagSettingsBgAudioBtn = 18, + kRPGStartSceneLayerTagSettingsEffectAudioBtn = 19, kRPGStartSceneLayerTagSettingsRestore = 14, kRPGStartSceneLayerTagSettingsBack = 13, kRPGStartSceneLayerTagLabStyle = 11, - kRPGStartSceneLayerTagLabCurrStyle = 15 + kRPGStartSceneLayerTagLabCurrStyle = 15, + kRPGStartSceneLayerTagLabBgAudio = 16, + kRPGStartSceneLayerTagLabEffectAudio = 17 + }; class RPGStartSceneLayer : public RPGBaseSceneLayer diff --git a/Resources/scene_start_cns.plist b/Resources/scene_start_cns.plist index f6f2aff..b80d2f9 100755 --- a/Resources/scene_start_cns.plist +++ b/Resources/scene_start_cns.plist @@ -16,9 +16,17 @@ 游戏设置 settingslab_style 选择样式 + settingsmenu_bgaudio + 背景音乐 + settingsmenu_effectaudio + 效果声音 settingsmenu_restore 恢复默认 settingsmenu_back 返回 + settingsmenu_audio_on + + settingsmenu_audio_off + diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate index 52ed4a0..ae7c84a 100644 Binary files a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate and b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate differ