/** * Writes the attributed object id, comments, and artifacts. */ void Translator::WriteAttributedObject(const AttributedObject& aobj, Context& ctxt, tinyxml2::XMLElement & elem, bool bIdAttributeRequired) { //Write the ID. if( aobj.Id().length() > 0 ) elem.SetAttribute( "id", aobj.Id().c_str()); else if( bIdAttributeRequired ) throw GnssMetadata::TranslationException( "Required id attribute not defined."); //Write the comments. CommentList::const_iterator citer = aobj.Comments().begin(); for(; citer != aobj.Comments().end(); citer++) { XMLElement* pec = elem.GetDocument()->NewElement( "comment"); const Comment& cmt = *citer; const char* szFormat = (cmt.Format() == Comment::text) ? "text":"html"; pec->SetAttribute("format",szFormat); pec->SetText( cmt.Value().c_str()); elem.InsertEndChild(pec); } //Write the Artifacts. AnyUriList::const_iterator aiter = aobj.Artifacts().begin(); for(; aiter != aobj.Artifacts().end(); aiter++) { XMLElement* pec = elem.GetDocument()->NewElement( "artifact"); pec->SetText( aiter->Value().c_str()); elem.InsertEndChild(pec); } }
/** * @brief This function takes the passed in SaveSlot, and writes it to the .xml file. * @param This is the SaveSlot to be written. */ void WriteSaveSlot(SaveSlot s){ string d = "SaveSlot" + std::to_string(s.m_id); const char * c = d.c_str(); tinyxml2::XMLElement * saveSlot = xmlDoc.NewElement(c); //Inserts Values to the .xml file tinyxml2::XMLElement * pElement = xmlDoc.NewElement("TimePlayed"); pElement->SetText(s.m_timePlayed); saveSlot->InsertEndChild(pElement); pElement = xmlDoc.NewElement("CurrentGold"); pElement->SetText(s.m_currentGold); saveSlot->InsertEndChild(pElement); pElement = xmlDoc.NewElement("Levels"); for (int i = 0; i < 7; i++){ string level = "LVL" + std::to_string(i + 1); const char * c = level.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(s.m_LVL_DATA[level]); pElement->InsertEndChild(pListElement); saveGame->InsertEndChild(saveSlot); saveSlot->InsertEndChild(pElement); } pElement = xmlDoc.NewElement("Achievements"); for (int i = 0; i < 21; i++) { string ach = "ACH" + std::to_string(i + 1); const char * c = ach.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(s.m_ACH_DATA[ach]); pElement->InsertEndChild(pListElement); saveSlot->InsertEndChild(pElement); saveGame->InsertEndChild(saveSlot); } pElement = xmlDoc.NewElement("Statistics"); for (int i = 0; i < 10; i++) { string stat = "STAT" + std::to_string(i + 1); const char * c = stat.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(s.m_ACH_DATA[stat]); pElement->InsertEndChild(pListElement); saveSlot->InsertEndChild(pElement); saveGame->InsertEndChild(saveSlot); } }
/** * @brief This generates a new saveData.xml for the game insertting all the approprate * formatting for reading later. * @see SaveSlot */ void GenerateSaveFile(){ cLog::inst()->print(3, "XML Loader", "Generating new save_data.xml"); //create and insert the root node of the .xml document tinyxml2::XMLNode *pRoot = xmlDoc.NewElement("Root"); xmlDoc.InsertFirstChild(pRoot); tinyxml2::XMLElement *saveGame = xmlDoc.NewElement("SaveGame"); for (int i = 0; i < 3; i++) { string d = "SaveSlot" + std::to_string(i + 1); const char * c = d.c_str(); tinyxml2::XMLElement * saveSlot = xmlDoc.NewElement(c); //Inserts IntValue to the .xml file tinyxml2::XMLElement * pElement = xmlDoc.NewElement("TimePlayed"); pElement->SetText(0); saveSlot->InsertEndChild(pElement); pElement = xmlDoc.NewElement("CurrentGold"); pElement->SetText(0); saveSlot->InsertEndChild(pElement); pElement = xmlDoc.NewElement("Levels"); for (int i = 0; i < 7; i++) { string d = "LVL" + std::to_string(i + 1); const char * c = d.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(1); pElement->InsertEndChild(pListElement); } saveSlot->InsertEndChild(pElement); //Insert Achievement Tracking into the saveData.sav pElement = xmlDoc.NewElement("Achievements"); for (int i = 0; i < 21; i++) { string d = "ACH" + std::to_string(i + 1); const char * c = d.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(0); pElement->InsertEndChild(pListElement); } saveSlot->InsertEndChild(pElement); //Insert Stat Tracking into the saveData.sav pElement = xmlDoc.NewElement("Statistics"); for (int i = 0; i < 10; i++) { string d = "STAT" + std::to_string(i + 1); const char * c = d.c_str(); tinyxml2::XMLElement * pListElement = xmlDoc.NewElement(c); pListElement->SetText(0); pElement->InsertEndChild(pListElement); } saveSlot->InsertEndChild(pElement); saveGame->InsertEndChild(saveSlot); } pRoot->InsertEndChild(saveGame); tinyxml2::XMLError eResult = xmlDoc.SaveFile("Assets/save_data.xml"); }
void UIAnimation::Save(tinyxml2::XMLElement& elem) { if (mGlobalAnim){ elem.SetAttribute("globalName", mName.c_str()); } else { elem.SetAttribute("id", mID); elem.SetAttribute("name", mName.c_str()); elem.SetAttribute("length", mLength); elem.SetAttribute("loop", mLoop); if (!mKeyTextColor.empty()){ auto textColorElem = elem.GetDocument()->NewElement("TextColor"); elem.InsertEndChild(textColorElem); for (auto& it : mKeyTextColor) { auto keyelem = textColorElem->GetDocument()->NewElement("key"); textColorElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str()); } } if (!mKeyBackColor.empty()){ auto backColorElem = elem.GetDocument()->NewElement("BackColor"); elem.InsertEndChild(backColorElem); for (auto& it : mKeyBackColor) { auto keyelem = backColorElem->GetDocument()->NewElement("key"); backColorElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str()); } } if (!mKeyMaterialColor.empty()){ auto materialColorElem = elem.GetDocument()->NewElement("MaterialColor"); elem.InsertEndChild(materialColorElem); for (auto& it : mKeyMaterialColor) { auto keyelem = materialColorElem->GetDocument()->NewElement("key"); materialColorElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("color", StringMathConverter::ToString(it.second).c_str()); } } if (!mKeyPos.empty()){ auto posElem = elem.GetDocument()->NewElement("Pos"); elem.InsertEndChild(posElem); for (auto& it : mKeyPos) { auto keyelem = posElem->GetDocument()->NewElement("key"); posElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("pos", StringMathConverter::ToString(it.second).c_str()); } } if (!mKeyScale.empty()){ auto scaleElem = elem.GetDocument()->NewElement("Scale"); elem.InsertEndChild(scaleElem); for (auto& it : mKeyScale) { auto keyelem = scaleElem->GetDocument()->NewElement("key"); scaleElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("scale", StringMathConverter::ToString(it.second).c_str()); } } if (!mKeyAlpha.empty()){ auto alphaElem = elem.GetDocument()->NewElement("Alpha"); elem.InsertEndChild(alphaElem); for (auto& it : mKeyAlpha) { auto keyelem = alphaElem->GetDocument()->NewElement("key"); alphaElem->InsertEndChild(keyelem); keyelem->SetAttribute("time", it.first); keyelem->SetAttribute("alpha", StringConverter::ToString(it.second).c_str()); } } } }