void SkillObjectEditor::OnSaveAsSkillObject(wxCommandEvent &e) { if (NULL == mSkill) { wxMessageBox("您还没有创建技能,请创建后重试!","提示"); return; } SaveAsSkillDialog *dlg = new SaveAsSkillDialog(this, wxID_ANY, _("另存技能"), mSkill); bool ok = (dlg->ShowModal() == wxID_OK); if(ok) { Ogre::StringVector templates; Ogre::String fileName = dlg->mComboBox->GetValue().c_str(); Ogre::String templateName = dlg->mTextCtrl->GetValue().c_str(); if(templateName.length() == 0) { dlg->Destroy(); return; } //判断文件名 Ogre::StringVector strings = Ogre::StringUtil::split( fileName, "." ); if (strings.size() != 2 || strings[1] != "skill") { fileName.append(".skill"); } Fairy::EffectManager::getSingleton().getSkillTemplatesFromScriptFile(fileName, templates); std::ofstream outFile; Ogre::String pathFileName = EFFECT_PATH+fileName; outFile.open ( pathFileName.c_str(), std::ios::out | std::ios::trunc ); // append to file if (!outFile.is_open()) { dlg->Destroy(); return; } bool newTemplate = true; // 把所有的模板都写入该文件中 for ( size_t i=0; i<templates.size(); ++i ) { // if (templates[i] != mEffect->getTemplateName()) ///{ Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(templates[i]); assert (skill); if (skill->getSkillName() == dlg->mTextCtrl->GetValue().c_str()) { saveSkill(mSkill, dlg->mTextCtrl->GetValue().c_str(), outFile ); newTemplate = false; } else saveSkill(skill, skill->getSkillName(), outFile); } if (newTemplate) { // 刷新EffectManager中的模板内容 Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(templateName); if (NULL == skill) { skill = Fairy::EffectManager::getSingleton().createSkillTemplate(templateName); } *skill = *mSkill; saveSkill(skill, templateName, outFile ); Fairy::EffectManager::getSingleton().addToSkillTemplateScriptFileMap(templateName, fileName); InitSkillEditor(skill, templateName); } outFile.close(); } wxBusyInfo* busyInfo = new wxBusyInfo(wxT("更新技能数据 ..."), this); m_Frame->GetSkillSelector()->Reload(); delete busyInfo; dlg->Destroy(); }
void SkillObjectEditor::OnSaveSkillObject(wxCommandEvent &e) { if (NULL == mSkill) { wxMessageBox("您还没有创建技能,请创建后重试!","提示"); return; } if(mSaveFileName == "") { SaveSkillDialog *dlg = new SaveSkillDialog(this, wxID_ANY, _("保存技能"), mSkill); bool ok = (dlg->ShowModal() == wxID_OK); if(ok) { mSaveFileName = dlg->mComboBox->GetValue().c_str(); //判断文件名 Ogre::StringVector strings = Ogre::StringUtil::split( mSaveFileName, "." ); if (strings.size() != 2 || strings[1] != "skill") { mSaveFileName.append(".skill"); } dlg->Destroy(); } else { dlg->Destroy(); return; } } //if(mbRecoverSave) //{ // char buf[256]; // sprintf(buf,"是否覆盖文件%s中的%s效果数据!",mSaveFileName.c_str(),mSkillTemplateName.c_str()); // RecoverSaveDialog* dlg = new RecoverSaveDialog(m_Frame,wxID_ANY,wxT("覆盖文件")); // dlg->SetText(wxString(buf)); // if(wxID_OK == dlg->ShowModal()) // { // mbRecoverSave = false; // dlg->Destroy(); // } // else // { // dlg->Destroy(); // return; // } //} Ogre::StringVector templates; const Ogre::String fileName = mSaveFileName; Fairy::EffectManager::getSingleton().getSkillTemplatesFromScriptFile(fileName, templates); std::ofstream outFile; Ogre::String pathFileName = EFFECT_PATH+fileName; outFile.open ( pathFileName.c_str(), std::ios::out | std::ios::trunc ); // append to file if (!outFile.is_open()) { return; } bool newTemplate = true; // 把所有的模板都写入该文件中 for ( size_t i=0; i<templates.size(); ++i ) { // if (templates[i] != mEffect->getTemplateName()) ///{ Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(templates[i]); assert (skill); if (skill->getSkillName() == mSkillTemplateName) { saveSkill(mSkill, mSkillTemplateName, outFile ); *skill = *mSkill; newTemplate = false; } else saveSkill(skill, skill->getSkillName(), outFile); } if (newTemplate) { saveSkill(mSkill, mSkillTemplateName, outFile ); mSkill->setSkillName(mSkillTemplateName); Fairy::EffectManager::getSingleton().addToSkillTemplateScriptFileMap(mSkillTemplateName, fileName); } outFile.close(); }
void UserData::save() { saveSkill(); saveProcess(); }