public ModelAnimation FindAnimation(WeaponType nWeaponType, string szName) { string szRawName = ConvertString.GetRawAnimationName(nWeaponType, szName); ModelAnimation ani = null; for (int i = 0; i < m_Animations.Count; i++) { ani = (ModelAnimation)m_Animations[i]; if (ani.RawName == szRawName) { return(ani); } } return(null); }
private void SetupWeaponAniNames() { m_WeaponAnimationNames.Clear(); for (int i = 0; i < m_Animations.Count; i++) { ModelAnimation ani = (ModelAnimation)m_Animations[i]; if (ani.nWeaponType != WeaponType.WT_NONE) { if (!ExistWeaponAniName(ani.Name)) { m_WeaponAnimationNames.Add(ani.Name); } } } }
public bool EditAnimation(WeaponType nWeaponType, string szOldName, string szName, string szFileName, AnimationLoopType nLoopType) { ModelAnimation ani = FindAnimation(nWeaponType, szOldName); if (ani == null) { return(false); } if ((szOldName == szName) && (szFileName == ani.szFileName) && (nLoopType == ani.nLoopType)) { return(false); } ani.Set(nWeaponType, szName, szFileName, nLoopType); m_bEdited = true; return(true); }
public bool InsertAnimation(WeaponType nWeaponType, string szName, string szFileName, AnimationLoopType nLoopType) { ModelAnimation ani = FindAnimation(nWeaponType, szName); if (ani != null) { return(false); } ani = new ModelAnimation(); ani.Set(nWeaponType, szName, szFileName, nLoopType); m_Animations.Add(ani); if (nWeaponType != WeaponType.WT_NONE) { SetupWeaponAniNames(); } m_bEdited = true; return(true); }
public bool RemoveAnimation(WeaponType nWeaponType, string szName) { string szRawName = ConvertString.GetRawAnimationName(nWeaponType, szName); ModelAnimation ani = null; for (int i = 0; i < m_Animations.Count; i++) { ani = (ModelAnimation)m_Animations[i]; if (ani.RawName == szRawName) { m_Animations.RemoveAt(i); SetupWeaponAniNames(); // 다시 m_WeaponAnimationNames를 재설정한다. m_bEdited = true; return(true); } } return(false); }
public void Load() { if (m_nFileType != FileType.FT_XML) { return; } try { string path = Global.szRootPath + m_szPath; int len = path.Length; if (path.Substring(len - 3, 3).ToLower() != XML_TOKEN.TAG_XML.ToLower()) { return; } XmlTextReader xtr = new XmlTextReader(path); while (xtr.Read()) { if (xtr.NodeType == XmlNodeType.Element) { if (xtr.LocalName.ToLower() == XML_TOKEN.TAG_ADD_BASE_MODEL.ToLower()) { string name = ""; string filename = ""; if (xtr.AttributeCount > 0) { for (int i = 0; i < xtr.AttributeCount; i++) { xtr.MoveToAttribute(i); if (xtr.Name.ToLower() == XML_TOKEN.ATTR_NAME.ToLower()) { name = xtr.Value; } else if (xtr.Name.ToLower() == XML_TOKEN.ATTR_FILENAME.ToLower()) { filename = xtr.Value; } } if ((name != "") && (filename != "")) { m_BaseModel.szName = name; m_BaseModel.szFileName = filename; } } } else if (xtr.LocalName.ToLower() == XML_TOKEN.TAG_ADD_ANIMATION.ToLower()) { string name = ""; string filename = ""; string motion_loop_type = ""; if (xtr.AttributeCount > 0) { for (int i = 0; i < xtr.AttributeCount; i++) { xtr.MoveToAttribute(i); if (xtr.Name.ToLower() == XML_TOKEN.ATTR_NAME.ToLower()) { name = xtr.Value; } else if (xtr.Name.ToLower() == XML_TOKEN.ATTR_FILENAME.ToLower()) { filename = xtr.Value; } else if (xtr.Name.ToLower() == XML_TOKEN.ATTR_MOTION_LOOP_TYPE.ToLower()) { motion_loop_type = xtr.Value; } } if ((name != "") && (filename != "")) { ModelAnimation new_ani = new ModelAnimation(); new_ani.InitFromXml(name, filename, motion_loop_type); m_Animations.Add(new_ani); } } } xtr.Read(); } } //while xtr.Close(); } catch (FileNotFoundException e) { } SetupWeaponAniNames(); m_bEdited = false; }
public void Save() { if (m_nFileType != FileType.FT_XML) { return; } try { string path = Global.szRootPath + m_szPath; Encoding encoding = Encoding.UTF8; XmlTextWriter tw = new XmlTextWriter(path, encoding); tw.Formatting = Formatting.Indented; tw.WriteStartDocument(); tw.WriteStartElement(XML_TOKEN.TAG_XML); // AddBaseModel tw.WriteComment(" \n BaseModel \n "); tw.WriteStartElement(XML_TOKEN.TAG_ADD_BASE_MODEL); tw.WriteAttributeString(XML_TOKEN.ATTR_NAME, m_BaseModel.szName); tw.WriteAttributeString(XML_TOKEN.ATTR_FILENAME, m_BaseModel.szFileName); tw.WriteEndElement(); // XML_TOKEN.TAG_ADD_BASE_MODEL tw.WriteComment(" \n Normal Animation \n "); // AddAnimation (normal) for (int i = 0; i < m_Animations.Count; i++) { ModelAnimation ani = (ModelAnimation)m_Animations[i]; if (ani.nWeaponType == WeaponType.WT_NONE) { tw.WriteStartElement(XML_TOKEN.TAG_ADD_ANIMATION); tw.WriteAttributeString(XML_TOKEN.ATTR_NAME, ani.RawName); tw.WriteAttributeString(XML_TOKEN.ATTR_FILENAME, ani.szFileName); tw.WriteAttributeString(XML_TOKEN.ATTR_MOTION_LOOP_TYPE, ConvertString.GetAnimationLoopTypeStr(ani.nLoopType)); tw.WriteEndElement(); // XML_TOKEN.TAG_ADD_ANIMATION } } // AddAnimation (weapon) tw.WriteComment(" \n Weapon Animation \n "); for (int i = 0; i < m_Animations.Count; i++) { ModelAnimation ani = (ModelAnimation)m_Animations[i]; if (ani.nWeaponType != WeaponType.WT_NONE) { tw.WriteStartElement(XML_TOKEN.TAG_ADD_ANIMATION); tw.WriteAttributeString(XML_TOKEN.ATTR_NAME, ani.RawName); tw.WriteAttributeString(XML_TOKEN.ATTR_FILENAME, ani.szFileName); tw.WriteAttributeString(XML_TOKEN.ATTR_MOTION_LOOP_TYPE, ConvertString.GetAnimationLoopTypeStr(ani.nLoopType)); tw.WriteEndElement(); // XML_TOKEN.TAG_ADD_ANIMATION } } tw.WriteEndElement(); // XML_TOKEN.TAG_XML tw.Flush(); tw.Close(); } catch (FileNotFoundException e) { } m_bEdited = false; }