示例#1
0
        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);
            }
        }
示例#2
0
 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);
         }
     }
 }