private void InitHmfEntityData(String defineFilePath, String defineFileListName) { try { byte[] bs = null; if (m_isUseOutterConfig) { bs = XMLParser.LoadBytes(defineFilePath + defineFileListName); } else { bs = XMLParser.LoadBytes(defineFilePath + defineFileListName); } if (bs == null) { LoggerHelper.Error("Entity file load failed: " + defineFilePath + defineFileListName); } var hmf = new Hmf(); var stream = new MemoryStream(bs); stream.Seek(0, SeekOrigin.Begin); var def = (Dictionary <object, object>)hmf.ReadObject(stream); var elements = (List <object>)def["entities"]; if (elements != null && elements.Count != 0) { EntitysByName.Clear(); for (var i = 0; i < elements.Count; i++) { ParseEntitiesHmfFile(String.Concat(defineFilePath, (string)elements[i], m_fileExtention), (string)elements[i], (ushort)(i + 1)); } //找父亲 foreach (var child in EntitysByName.Values) { foreach (var parent in EntitysByName.Values) { if (child.ParentName == parent.Name) { child.Parent = parent; break; } } } } } catch (Exception ex) { throw new DefineParseException(String.Format("Define parse error.\nreason: \n{0}", ex.Message), ex); } }
private void ParseEntitiesHmf(Dictionary <object, object> def, String etyName, ushort entityID) { if (def != null && def.Count != 0) { var etyDef = ParseHmfDef(def); etyDef.ID = entityID; etyDef.Name = etyName; if (!EntitysByName.ContainsKey(etyDef.Name)) { EntitysByName.Add(etyDef.Name, etyDef); } if (!m_entitysByID.ContainsKey(etyDef.ID)) { m_entitysByID.Add(etyDef.ID, etyDef); } } }