public static void Load() { FileStream fs = null; XmlReader xr = null; try { fs = File.OpenRead("objectdb.xml"); xr = XmlReader.Create(fs); xr.ReadToFollowing("database"); xr.MoveToAttribute("timestamp"); m_Timestamp = uint.Parse(xr.Value); } catch { if (xr != null) { xr.Close(); } if (fs != null) { fs.Close(); } m_Timestamp = 1; throw new Exception("Failed to open objectdb.xml"); } while (xr.ReadToFollowing("object")) { string temp; xr.MoveToAttribute("id"); int id = 0; int.TryParse(xr.Value, out id); if ((id < 0) || (id > m_ObjectInfo.Length)) { continue; } ObjectInfo oinfo = m_ObjectInfo[id]; oinfo.m_ID = (ushort)id; xr.ReadToFollowing("category"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out oinfo.m_Category); xr.ReadToFollowing("name"); oinfo.m_Name = xr.ReadElementContentAsString(); xr.ReadToFollowing("internalname"); oinfo.m_InternalName = xr.ReadElementContentAsString(); if (oinfo.m_InternalName.StartsWith("@CUSTOM%")) { oinfo.m_IsCustomModelPath = oinfo.m_InternalName.Substring(8); } else { oinfo.m_IsCustomModelPath = null; } if (oinfo.m_Name == "") { oinfo.m_Name = oinfo.m_InternalName; } xr.ReadToFollowing("actorid"); temp = xr.ReadElementContentAsString(); ushort.TryParse(temp, out oinfo.m_ActorID); xr.ReadToFollowing("description"); oinfo.m_Description = xr.ReadElementContentAsString(); xr.ReadToFollowing("bankreq"); temp = xr.ReadElementContentAsString(); if (temp == "none") { oinfo.m_BankRequirement = 0; } else { oinfo.m_BankRequirement = 1; try { oinfo.m_NumBank = int.Parse(temp.Substring(0, temp.IndexOf('='))); oinfo.m_BankSetting = int.Parse(temp.Substring(temp.IndexOf('=') + 1)); } catch { oinfo.m_BankRequirement = 2; } } List <ObjectInfo.ParamInfo> paramlist = new List <ObjectInfo.ParamInfo>(); while (xr.ReadToNextSibling("param")) { ObjectInfo.ParamInfo pinfo = new ObjectInfo.ParamInfo(); xr.ReadToFollowing("name"); pinfo.m_Name = xr.ReadElementContentAsString(); xr.ReadToFollowing("offset"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out pinfo.m_Offset); xr.ReadToFollowing("length"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out pinfo.m_Length); xr.ReadToFollowing("type"); pinfo.m_Type = xr.ReadElementContentAsString(); xr.ReadToFollowing("values"); pinfo.m_Values = xr.ReadElementContentAsString(); xr.ReadToFollowing("description"); pinfo.m_Description = xr.ReadElementContentAsString(); paramlist.Add(pinfo); } oinfo.m_ParamInfo = paramlist.ToArray(); } xr.Close(); fs.Close(); }
public static void Load() { FileStream fs = null; XmlReader xr = null; try { fs = File.OpenRead("objectdb.xml"); xr = XmlReader.Create(fs); xr.ReadToFollowing("database"); xr.MoveToAttribute("timestamp"); m_Timestamp = uint.Parse(xr.Value); } catch { if (xr != null) xr.Close(); if (fs != null) fs.Close(); m_Timestamp = 1; throw new Exception("Failed to open objectdb.xml"); } while (xr.ReadToFollowing("object")) { string temp; xr.MoveToAttribute("id"); int id = 0; int.TryParse(xr.Value, out id); if ((id < 0) || (id > m_ObjectInfo.Length)) continue; ObjectInfo oinfo = m_ObjectInfo[id]; oinfo.m_ID = (ushort)id; xr.ReadToFollowing("category"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out oinfo.m_Category); xr.ReadToFollowing("name"); oinfo.m_Name = xr.ReadElementContentAsString(); xr.ReadToFollowing("internalname"); oinfo.m_InternalName = xr.ReadElementContentAsString(); if (oinfo.m_Name == "") oinfo.m_Name = oinfo.m_InternalName; xr.ReadToFollowing("actorid"); temp = xr.ReadElementContentAsString(); ushort.TryParse(temp, out oinfo.m_ActorID); xr.ReadToFollowing("description"); oinfo.m_Description = xr.ReadElementContentAsString(); xr.ReadToFollowing("bankreq"); temp = xr.ReadElementContentAsString(); if (temp == "none") oinfo.m_BankRequirement = 0; else { oinfo.m_BankRequirement = 1; try { oinfo.m_NumBank = int.Parse(temp.Substring(0, temp.IndexOf('='))); oinfo.m_BankSetting = int.Parse(temp.Substring(temp.IndexOf('=') + 1)); } catch { oinfo.m_BankRequirement = 2; } } List<ObjectInfo.ParamInfo> paramlist = new List<ObjectInfo.ParamInfo>(); while (xr.ReadToNextSibling("param")) { ObjectInfo.ParamInfo pinfo = new ObjectInfo.ParamInfo(); xr.ReadToFollowing("name"); pinfo.m_Name = xr.ReadElementContentAsString(); xr.ReadToFollowing("offset"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out pinfo.m_Offset); xr.ReadToFollowing("length"); temp = xr.ReadElementContentAsString(); int.TryParse(temp, out pinfo.m_Length); xr.ReadToFollowing("type"); pinfo.m_Type = xr.ReadElementContentAsString(); xr.ReadToFollowing("values"); pinfo.m_Values = xr.ReadElementContentAsString(); xr.ReadToFollowing("description"); pinfo.m_Description = xr.ReadElementContentAsString(); paramlist.Add(pinfo); } oinfo.m_ParamInfo = paramlist.ToArray(); } xr.Close(); fs.Close(); }