bool RDummyList::Save(MXmlElement *pElement) { MXmlElement aDummyListElement = pElement->CreateChildElement(RTOK_DUMMYLIST); for (auto& Dummy : *this) { aDummyListElement.AppendText("\n\t\t"); char buffer[256]; MXmlElement aElement,aChild; aElement = aDummyListElement.CreateChildElement(RTOK_DUMMY); aElement.AddAttribute(RTOK_NAME, Dummy.Name.c_str()); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_POSITION); aChild.SetContents(Format(buffer, Dummy.Position)); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_DIRECTION); aChild.SetContents(Format(buffer, Dummy.Direction)); aElement.AppendText("\n\t\t"); } aDummyListElement.AppendText("\n\t"); return true; }
// xml 파일 만들기 예제 void Sample3() { MXmlDocument aXml; aXml.Create(); aXml.CreateProcessingInstruction(); MXmlElement aRootElement; MXmlElement aElement; MXmlElement aChildElement; aRootElement = aXml.CreateElement("XML"); aXml.AppendChild(aRootElement); aRootElement = aXml.GetDocumentElement(); /// text aRootElement.AppendText("\n\t"); aElement = aXml.CreateElement("TEST"); aRootElement.AppendChild(aElement); aElement.AddAttribute("id", "1"); aElement.AddAttribute("map", "bird"); /// text aElement.AppendText("\n\t\t"); aChildElement = aXml.CreateElement("CHILD"); aChildElement.AddAttribute("attr", 500); aChildElement.SetContents("자식 노드"); aElement.AppendChild(aChildElement); /// text aElement.AppendText("\n\t"); /// text aXml.GetDocumentElement().AppendText("\n"); aXml.SaveToFile("new2.xml"); printf("Done!!!\n"); }
bool RMaterialList::Save(MXmlElement *pElement) { MXmlElement aMaterialListElement = pElement->CreateChildElement(RTOK_MATERIALLIST); { for(iterator i=begin();i!=end();i++) { aMaterialListElement.AppendText("\n\t\t"); RMATERIAL *pMaterial=*i; char buffer[256]; MXmlElement aElement,aChild; aElement=aMaterialListElement.CreateChildElement(RTOK_MATERIAL); aElement.AddAttribute(RTOK_NAME,pMaterial->Name.c_str()); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_DIFFUSE); aChild.SetContents(Format(buffer,pMaterial->Diffuse)); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_AMBIENT); aChild.SetContents(Format(buffer,pMaterial->Ambient)); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_SPECULAR); aChild.SetContents(Format(buffer,pMaterial->Specular)); aElement.AppendText("\n\t\t\t"); aChild=aElement.CreateChildElement(RTOK_DIFFUSEMAP); aChild.SetContents(pMaterial->DiffuseMap.c_str()); { MXmlElement aFlagElement; if((pMaterial->dwFlags & RM_FLAG_ADDITIVE) !=0) { aElement.AppendText("\n\t\t\t"); aElement.CreateChildElement(RTOK_ADDITIVE); } if((pMaterial->dwFlags & RM_FLAG_TWOSIDED) !=0) { aElement.AppendText("\n\t\t\t"); aElement.CreateChildElement(RTOK_TWOSIDED); } if((pMaterial->dwFlags & RM_FLAG_USEOPACITY) !=0) { aElement.AppendText("\n\t\t\t"); aElement.CreateChildElement(RTOK_USEOPACITY); } if((pMaterial->dwFlags & RM_FLAG_USEALPHATEST) !=0) { aElement.AppendText("\n\t\t\t"); aElement.CreateChildElement(RTOK_USEALPHATEST); } } aElement.AppendText("\n\t\t"); } aMaterialListElement.AppendText("\n\t"); } return true; }
bool MEmblemMgr::SaveCache() { list<MEmblemNode*> sortedQueue; for (MEmblemMap::iterator i=m_EmblemMap.begin(); i!=m_EmblemMap.end(); i++) { MEmblemNode* pNode = (*i).second; sortedQueue.push_back(pNode); } sortedQueue.sort(CompareEmblem); MXmlDocument xmlDoc; char szBuf[256]=""; xmlDoc.Create(); xmlDoc.CreateProcessingInstruction(); MXmlElement rootElement; rootElement=xmlDoc.CreateElement("XML"); xmlDoc.AppendChild(rootElement); int nCount = 0; for (list<MEmblemNode*>::iterator i=sortedQueue.begin(); i!=sortedQueue.end(); i++) { MEmblemNode* pNode = (*i); rootElement.AppendText("\n\t"); MXmlElement emblemElement = rootElement.CreateChildElement(MTOK_EMBLEM); emblemElement.AppendText("\n\t\t"); MXmlElement childElement; sprintf_safe(szBuf,"%u", pNode->GetCLID()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_CLID); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t\t"); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_URL); childElement.SetContents(pNode->GetURL()); emblemElement.AppendText("\n\t\t"); sprintf_safe(szBuf,"%u", pNode->GetChecksum()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_CHECKSUM); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t\t"); sprintf_safe(szBuf, "%u", (unsigned int)pNode->GetTimeLastUsed()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_TIMELASTUSED); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t"); if (++nCount >= 1000) break; } rootElement.AppendText("\n"); bool bResult = xmlDoc.SaveToFile(GetEmblemDataFile()); xmlDoc.Destroy(); SetSaveFlag(false); sortedQueue.clear(); return bResult; }
bool ZConfiguration::SaveToFile(const char *szFileName, const char* szHeader) { char buffer[256]; MXmlDocument xmlConfig; xmlConfig.Create(); xmlConfig.CreateProcessingInstruction(szHeader); MXmlElement aRootElement; aRootElement=xmlConfig.CreateElement("XML"); aRootElement.AppendText("\n\t"); xmlConfig.AppendChild(aRootElement); // Check FirstTime Loading // Server { MXmlElement serverElement=aRootElement.CreateChildElement(ZTOK_SERVER); serverElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = serverElement.CreateChildElement(ZTOK_IP); aElement.SetContents(m_szServerIP); serverElement.AppendText("\n\t\t"); aElement = serverElement.CreateChildElement(ZTOK_PORT); sprintf(buffer,"%d",m_nServerPort); aElement.SetContents(buffer); serverElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Skin { MXmlElement skinElement=aRootElement.CreateChildElement(ZTOK_SKIN); skinElement.SetContents(m_szInterfaceSkinName); skinElement.AppendText(""); } aRootElement.AppendText("\n\n\t"); // Video { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_VIDEO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_VIDEO_WIDTH); char temp[256]; sprintf(temp, "%d", m_Video.nWidth); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_HEIGHT); sprintf(temp, "%d", m_Video.nHeight); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_COLORBITS); sprintf(temp, "%d", m_Video.nColorBits); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_GAMMA); sprintf(temp, "%d", m_Video.nGamma); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_FULLSCREEN); if(m_Video.bFullScreen==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_REFLECTION); if(m_Video.bReflection==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_LIGHTMAP); if(m_Video.bLightMap==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_DYNAMICLIGHT); if(m_Video.bDynamicLight==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_SHADER); if(m_Video.bShader==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_CHARTEXLEVEL); sprintf(temp, "%d", m_Video.nCharTexLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_MAPTEXLEVEL); sprintf(temp, "%d", m_Video.nMapTexLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_EFFECTLEVEL); sprintf(temp, "%d", m_Video.nEffectLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_TEXTUREFORMAT); sprintf(temp, "%d", m_Video.nTextureFormat); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOVINGPICTURE_RESOLUTION); sprintf(temp, "%d", m_MovingPicture.iResolution); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOVINGPICTURE_FILESIZE); sprintf(temp, "%d", m_MovingPicture.iFileSize); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement("NHARDWARETNL"); sprintf(temp, "%s", m_Video.bTerrible ? "true" : "false" ); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Audio { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_AUDIO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; char temp[256]; aElement = parentElement.CreateChildElement(ZTOK_AUDIO_BGM_MUTE); if(m_Audio.bBGMMute==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_BGM_VOLUME); sprintf(temp, "%f", m_Audio.fBGMVolume ); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_EFFECT_MUTE); if(m_Audio.bEffectMute==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_EFFECT_VOLUME); sprintf(temp, "%f", m_Audio.fEffectVolume); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_3D_SOUND); sprintf(temp, "%d", m_Audio.b3DSound); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_8BITSOUND); if(m_Audio.b8BitSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_INVERSE); if(m_Audio.bInverse==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_HWMIXING); if(m_Audio.bHWMixing==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_HITSOUND); if(m_Audio.bHitSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_NARRATIONSOUND); if(m_Audio.bNarrationSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement( ZTOK_AUDIO_CUSTOMMUSIC ); if( m_Audio.bCustomMusic ) strcpy( temp, "true" ); else strcpy( temp, "false" ); aElement.SetContents( temp ); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Mouse { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_MOUSE); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_MOUSE_SENSITIVITY); char temp[256]; // 버그리포트 => 옵션->키보드->마우스->마우스 감도에서 최하로 설정했을때 마우스가 안움직인다. // 최소인 0바로전 값이 0.0135f이기때문에 이값보다 낮으면 0.0125f로 세팅 20090313 by kammir /*if(m_Mouse.fSensitivity < 0.01f) m_Mouse.fSensitivity = 0.0125f;*/ m_Mouse.fSensitivity = ValidateMouseSensitivityInFloat(m_Mouse.fSensitivity); sprintf(temp, "%f", m_Mouse.fSensitivity); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOUSE_INVERT); if(m_Mouse.bInvert==true) strcpy(temp, "TRUE"); else strcpy(temp, "FALSE"); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Joystick { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_JOYSTICK); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_JOYSTICK_SENSITIVITY); char temp[256]; sprintf(temp, "%f", m_Joystick.fSensitivity); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_JOYSTICK_INVERT); if(m_Joystick.bInvert==true) strcpy(temp, "TRUE"); else strcpy(temp, "FALSE"); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Control { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_KEYBOARD); for(int i=0; i<ZACTION_COUNT; i++){ char szItemName[256]; strcpy(szItemName, m_Keyboard.ActionKeys[i].szName); _strupr(szItemName); if(szItemName[0]!=0){ parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(szItemName); char temp[256]; sprintf(temp, "%d", m_Keyboard.ActionKeys[i].nVirtualKey); aElement.SetContents(temp); aElement.SetAttribute("alt",m_Keyboard.ActionKeys[i].nVirtualKeyAlt); } } parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Macro // if( parentElement.FindChildNode(ZTOK_MACRO, &childElement) ) { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_MACRO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; char* _temp[ZCONFIG_MACRO_MAX] = { ZTOK_MACRO_F1, ZTOK_MACRO_F2, ZTOK_MACRO_F3, ZTOK_MACRO_F4, ZTOK_MACRO_F5, ZTOK_MACRO_F6, ZTOK_MACRO_F7, ZTOK_MACRO_F8, }; for(int i=0;i<ZCONFIG_MACRO_MAX;i++) { aElement = parentElement.CreateChildElement( _temp[i] ); aElement.SetContents(m_Macro.szMacro[i]); parentElement.AppendText("\n\t\t"); } parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Etc { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_ETC); MXmlElement aElement; // Network port parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_NETWORKPORT1); char temp[256]; sprintf(temp, "%d", m_Etc.nNetworkPort1); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_NETWORKPORT2); sprintf(temp, "%d", m_Etc.nNetworkPort2); aElement.SetContents(temp); // Boost parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_BOOST); sprintf(temp, "%s", m_Etc.bBoost?"TRUE":"FALSE"); aElement.SetContents(temp); // 언어 선택 #ifdef _MULTILANGUAGE parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_LANGUAGE); sprintf(temp, "%s", GetSelectedLanguage()); aElement.SetContents(temp); #ifdef LOCALE_NHNUSA //NHNUSA는 config.xml에 의존하지 않으므로 언어변경후 재시작을 위해서 언어설정을 별도로 보존해둔다 g_LanguageSettingForNHNUSA.SetLanguageSetting( GetSelectedLanguageIndex()); #endif #endif //_MULTILANGUAGE // Reject normal chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_NORMALCHAT); sprintf(temp, "%s", m_Etc.bRejectNormalChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject team chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_TEAMCHAT); sprintf(temp, "%s", m_Etc.bRejectTeamChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject clan chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_CLANCHAT); sprintf(temp, "%s", m_Etc.bRejectClanChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject whisper parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_WHISPER); sprintf(temp, "%s", m_Etc.bRejectWhisper?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject invite parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_INVITE); sprintf(temp, "%s", m_Etc.bRejectInvite?"TRUE":"FALSE"); aElement.SetContents(temp); // crosshair parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_CROSSHAIR); sprintf(temp, "%d", m_Etc.nCrossHair); aElement.SetContents(temp); // FrameLimit parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_FRAMELIMIT_PERSECOND); sprintf(temp, "%d", m_Etc.nFrameLimit_perSecond); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Bind : 봉인 /* aRootElement.AppendText("\n\t"); MXmlElement bindsElement=aRootElement.CreateChildElement(ZTOK_BINDS); for(ZHOTKEYS::iterator i=m_HotKeys.begin();i!=m_HotKeys.end();i++) { bindsElement.AppendText("\n\t\t"); MXmlElement bind=bindsElement.CreateChildElement(ZTOK_BIND); ZHOTKEY *photkey=(*i).second; bind.SetContents(photkey->command.c_str()); char buffer[256]; bind.SetAttribute(ZTOK_KEY,GetKeyName(photkey->nVirtKey,buffer)); bind.SetAttribute(ZTOK_KEY_CTRL,photkey->nModifier & MOD_CONTROL ? 1 : 0); bind.SetAttribute(ZTOK_KEY_ALT,photkey->nModifier & MOD_ALT ? 1 : 0); bind.SetAttribute(ZTOK_KEY_SHIFT,photkey->nModifier & MOD_SHIFT ? 1 : 0); } bindsElement.AppendText("\n\t"); */ aRootElement.AppendText("\n"); // LANGID LangID = LANG_KOREAN; /* Korean : 이거 정말 하드코딩 박기 싫었는디... 쩝... -_-;;; */ //#ifdef LOCALE_JAPAN // LangID = LANG_JAPANESE; /* Japanese */ //#elif LOCALE_US // LangID = LANG_ENGLISH; /* International */ //#elif LOCALE_BRAZIL // LangID = LANG_PORTUGUESE; /* Brazil */ //#elif LOCALE_INDIA // LangID = LANG_ENGLISH; /* India */ //#endif return xmlConfig.SaveToFile(szFileName); }