static void loadSaveDatafromVmu(unsigned int id) { char path[16]; unsigned char buf[MAX_VM_SIZE]; int size = MAX_VM_SIZE; int res; const char *load_title = "Select a VMU to load from"; sprintf(path, "%x", id); ZeroMemory(buf, sizeof(buf)); int files = vm_SearchFile(path, &res); if (!files) { return; } if (files == 1 && load_from_vmu(res, path, buf, &size)) { loadSaveData(id, buf); checked_vm = res; return; } for (;;) { if (!vmu_select(&res, load_title)) return; if (!load_from_vmu(res, path, buf, &size)) { _debug("Failed!"); } else { loadSaveData(id, buf); checked_vm = res; return; } } }
void SaveLoadMenuScreen::changePage(int page) { assert(page >= 0 && page <= _maxPage); removeSaveDataWidgets(); loadSaveData(page); _widgets[kWidgetBack]->setVisible(page > 0); _widgets[kWidgetNext]->setVisible(page < _maxPage); StarkSettings->setIntSetting(Settings::kSaveLoadPage, page); _page = page; }
void SaveLoadMenuScreen::open() { StaticLocationScreen::open(); _page = StarkSettings->getIntSetting(Settings::kSaveLoadPage); _widgets.push_back(new StaticLocationWidget( "loadsavebg", nullptr, nullptr)); _widgets.push_back(new StaticLocationWidget( "back to index", CLICK_HANDLER(SaveLoadMenuScreen, backHandler), nullptr)); _widgets.back()->setupSounds(0, 1); _widgets.push_back(new StaticLocationWidget( "Cancel", CLICK_HANDLER(SaveLoadMenuScreen, backHandler), nullptr)); _widgets.back()->setupSounds(0, 1); _widgets.push_back(new StaticLocationWidget( "SaveText", nullptr, nullptr)); _widgets.push_back(new StaticLocationWidget( "LoadText", nullptr, nullptr)); _widgets.push_back(new StaticLocationWidget( "Back", CLICK_HANDLER(SaveLoadMenuScreen, prevPageHandler), nullptr)); _widgets.back()->setupSounds(0, 1); _widgets.back()->setTextColor(Color(0, 0, 0)); _widgets.back()->setVisible(_page > 0); _widgets.push_back(new StaticLocationWidget( "Next", CLICK_HANDLER(SaveLoadMenuScreen, nextPageHandler), nullptr)); _widgets.back()->setupSounds(0, 1); _widgets.back()->setTextColor(Color(0, 0, 0)); _widgets.back()->setVisible(_page < 10); loadSaveData(_page); }
bool RPGStartSceneLayer::init() { if(RPGBaseSceneLayer::init()) { //加载语言文件 string languageFile = CCFileUtils::sharedFileUtils()->fullPathForFilename("scene_start_cns.plist"); this->m_stringList = CCDictionary::createWithContentsOfFileThreadSafe(languageFile.c_str()); this->m_stringList->retain(); //样式数据 this->m_styleData.push_back(pair<string, string>("style1", "样式1")); this->m_styleData.push_back(pair<string, string>("style2", "样式2")); this->m_styleData.push_back(pair<string, string>("style3", "样式3")); //使用数据库的当前样式 RPGSaveData *saveDataObj = loadSaveData(&this->m_db); CCLog("%s", saveDataObj->m_windowStyle.c_str()); CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); //背景 OzgCCScrollBgNode *bg = OzgCCScrollBgNode::create("start_bg.png"); bg->setAnchorPoint(CCPointZero); bg->setPosition(CCPointZero); bg->setTag(kRPGStartSceneLayerTagBg); this->addChild(bg); this->showMainMenu(); //背景音乐 if(!SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio_start.mp3", true); return true; } return false; }
void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) { CCMenuItem *menuItem = (CCMenuItem*)pObject; switch (menuItem->getTag()) { case kRPGStartSceneLayerTagMainMenuItemRestart: { //重新开始 SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("confirm_delete"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_ok"))->getCString(), kRPGStartSceneLayerTagDialogOK, ((CCString*)this->m_stringList->objectForKey("confirm_cancel"))->getCString(), kRPGStartSceneLayerTagDialogCancel, winSize.width, winSize.height, this, menu_selector(RPGStartSceneLayer::onDialog)); dialog->setTag(kRPGStartSceneLayerTagDialog); this->addChild(dialog); CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGStartSceneLayerTagMainMenu); mainMenu->setEnabled(false); } break; case kRPGStartSceneLayerTagMainMenuItemSettings: { //游戏设置 SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); this->removeChildByTag(kRPGStartSceneLayerTagMainMenu, true); this->showSettingsMenu(); } break; case kRPGStartSceneLayerTagSettingsBack: { //游戏设置里面的返回 SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); this->removeChildByTag(kRPGStartSceneLayerTagSettingsMenu, true); this->removeChildByTag(kRPGStartSceneLayerTagLabStyle, true); this->removeChildByTag(kRPGStartSceneLayerTagLabCurrStyle, true); this->showMainMenu(); } break; case kRPGStartSceneLayerTagSettingsRestore: { //点击了还原设置 SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); //还原样式设置 this->m_selectedStyleIndex = 1; CCLabelTTF *labCurrStyleLabel = (CCLabelTTF*)this->getChildByTag(kRPGStartSceneLayerTagLabCurrStyle); labCurrStyleLabel->setString(this->m_styleData[this->m_selectedStyleIndex].second.c_str()); //更新数据库 RPGSaveData *saveDataObj = loadSaveData(&this->m_db); saveDataObj->m_windowStyle = this->m_styleData[this->m_selectedStyleIndex].first; saveData(&this->m_db, saveDataObj); //更新当前样式 CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); } break; case kRPGStartSceneLayerTagSettingsStyleLeft: { //点击了样式选择的<< SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); this->m_selectedStyleIndex--; if(this->m_selectedStyleIndex < 0) this->m_selectedStyleIndex = 0; CCLabelTTF *labCurrStyleLabel = (CCLabelTTF*)this->getChildByTag(kRPGStartSceneLayerTagLabCurrStyle); labCurrStyleLabel->setString(this->m_styleData[this->m_selectedStyleIndex].second.c_str()); //更新数据 RPGSaveData *saveDataObj = loadSaveData(&this->m_db); saveDataObj->m_windowStyle = this->m_styleData[this->m_selectedStyleIndex].first; saveData(&this->m_db, saveDataObj); //更新当前样式 CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); } break; case kRPGStartSceneLayerTagSettingsStyleRight: { //点击了样式选择的>> SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); this->m_selectedStyleIndex++; int max = (int)this->m_styleData.size() - 1; if(this->m_selectedStyleIndex > max) this->m_selectedStyleIndex = max; CCLabelTTF *labCurrStyleLabel = (CCLabelTTF*)this->getChildByTag(kRPGStartSceneLayerTagLabCurrStyle); labCurrStyleLabel->setString(this->m_styleData[this->m_selectedStyleIndex].second.c_str()); //更新数据 RPGSaveData *saveDataObj = loadSaveData(&this->m_db); saveDataObj->m_windowStyle = this->m_styleData[this->m_selectedStyleIndex].first; saveData(&this->m_db, saveDataObj); //更新当前样式 CCUserDefault::sharedUserDefault()->setStringForKey(GAME_STYLE, saveDataObj->m_windowStyle); } break; default: { //开始游戏 SimpleAudioEngine::sharedEngine()->playEffect("audio_start_btn.wav"); this->goToMapScene(); } break; } }
void RPGStartSceneLayer::showSettingsMenu() { RPGSaveData *saveDataObj = loadSaveData(&this->m_db); CCMenu *settingsMenu = CCMenu::create(); settingsMenu->setAnchorPoint(CCPointZero); settingsMenu->setPosition(CCPointZero); settingsMenu->setTag(kRPGStartSceneLayerTagSettingsMenu); this->addChild(settingsMenu); //设置样式的标题 CCString *labStyleStr = (CCString*)this->m_stringList->objectForKey("settingslab_style"); CCLabelTTF *labStyleLabel = CCLabelTTF::create(OzgCCUtility::generalString(labStyleStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentLeft, kCCVerticalTextAlignmentCenter); labStyleLabel->setFontFillColor(ccc3(188, 188, 188)); labStyleLabel->setTag(kRPGStartSceneLayerTagLabStyle); labStyleLabel->setPosition(ccp(300, 550)); this->addChild(labStyleLabel); //设置样式的按钮 CCLabelTTF *menuStyleLeftLabel = CCLabelTTF::create("<<", "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); CCMenuItemLabel *menuStyleLeft = CCMenuItemLabel::create(menuStyleLeftLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); menuStyleLeft->setPosition(ccp(450, 550)); menuStyleLeft->setTag(kRPGStartSceneLayerTagSettingsStyleLeft); settingsMenu->addChild(menuStyleLeft); CCLabelTTF *menuStyleRightLabel = CCLabelTTF::create(">>", "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); CCMenuItemLabel *menuStyleRight = CCMenuItemLabel::create(menuStyleRightLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); menuStyleRight->setPosition(ccp(650, 550)); menuStyleRight->setTag(kRPGStartSceneLayerTagSettingsStyleRight); settingsMenu->addChild(menuStyleRight); //设置样式的当前使用样式 CCString *labCurrStyleStr = NULL; for (int i = 0; i < this->m_styleData.size(); i++) { pair<string, string> item = this->m_styleData[i]; if(strcmp(item.first.c_str(), saveDataObj->m_windowStyle.c_str()) == 0) { this->m_selectedStyleIndex = i; labCurrStyleStr = CCString::create(item.second); break; } } if(labCurrStyleStr) { CCLabelTTF *labCurrStyleLabel = CCLabelTTF::create(OzgCCUtility::generalString(labCurrStyleStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); labCurrStyleLabel->setFontFillColor(ccc3(188, 188, 188)); labCurrStyleLabel->setTag(kRPGStartSceneLayerTagLabCurrStyle); labCurrStyleLabel->setPosition(ccp(550, 550)); this->addChild(labCurrStyleLabel); } //恢复默认 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); CCMenuItemLabel *menuRestore = CCMenuItemLabel::create(menuRestoreLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); menuRestore->setPosition(ccp(300, 170)); menuRestore->setTag(kRPGStartSceneLayerTagSettingsRestore); settingsMenu->addChild(menuRestore); //返回 CCString *menuBackStr = (CCString*)this->m_stringList->objectForKey("settingsmenu_back"); CCLabelTTF *menuBackLabel = CCLabelTTF::create(OzgCCUtility::generalString(menuBackStr->getCString()).c_str(), "FZCuYuan-M03S", 28, CCSizeMake(120, 40), kCCTextAlignmentLeft, kCCVerticalTextAlignmentCenter); CCMenuItemLabel *menuBack = CCMenuItemLabel::create(menuBackLabel, this, menu_selector(RPGStartSceneLayer::onMenu)); menuBack->setPosition(ccp(300, 100)); menuBack->setTag(kRPGStartSceneLayerTagSettingsBack); settingsMenu->addChild(menuBack); }