Exemplo n.º 1
0
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;
		}
	}
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
    }
    
}
Exemplo n.º 6
0
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);
    
}