Пример #1
0
        public void Open(string filePath)
        {
            FileInfo fileInfo = new FileInfo(filePath);

            if (m_Indexes == null)
                m_Indexes = new Dictionary<int, int>();
            m_UnDiacriticalIndex = new Dictionary<int, int>();
            m_TextIndexes = new Dictionary<string, int>();
            m_TextIndexesOverride = new Dictionary<string, string>();
            m_TextSortIndex = new Dictionary<int, int>();

            byte[] fileContent = new byte[fileInfo.Length];
            FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            fileStream.Read(fileContent, 0, fileContent.Length);
            fileStream.Dispose();

            m_Stream = new BigEndianReader(fileContent);

            int position = m_Stream.ReadInt();
            m_Stream.Seek(position);

            int indexCount = m_Stream.ReadInt();

            for (int index = 0; index < indexCount; index += 9)
            {
                int key = m_Stream.ReadInt();
                bool diacriticalText = m_Stream.ReadBoolean();
                int pointeur = m_Stream.ReadInt();
                m_Indexes.Add(key, pointeur);

                if (diacriticalText)
                {
                    index += 4;
                    m_UnDiacriticalIndex.Add(key, m_Stream.ReadInt());
                }
                else
                    m_UnDiacriticalIndex.Add(key, pointeur);
            }

            int textIndexesCount = m_Stream.ReadInt();

            while (textIndexesCount > 0)
            {
                position = (int)m_Stream.Position;
                m_TextIndexes.Add(m_Stream.ReadUTF(), m_Stream.ReadInt());
                textIndexesCount -= (int)(m_Stream.Position - position);
            }

            textIndexesCount = m_Stream.ReadInt();

            int i = 0;

            while (textIndexesCount > 0)
            {
                position = (int)m_Stream.Position;
                m_TextSortIndex.Add(m_Stream.ReadInt(), ++i);
                textIndexesCount -= (int)(m_Stream.Position - position);
            }
        }
Пример #2
0
 public override void Deserialize(BigEndianReader reader)
 {
     byte flag = reader.ReadByte();
     m_hasRights = BooleanByteWrapper.GetFlag(flag, 0);
     m_wasAlreadyConnected = BooleanByteWrapper.GetFlag(flag, 1);
     m_login = reader.ReadUTF();
     m_nickname = reader.ReadUTF();
     m_accountId = reader.ReadInt();
     m_communityId = reader.ReadByte();
     m_secretQuestion = reader.ReadUTF();
     m_accountCreation = reader.ReadDouble();
     m_subscriptionElapsedDuration = reader.ReadDouble();
     m_subscriptionEndDate = reader.ReadDouble();
 }
Пример #3
0
 public override void Deserialize(BigEndianReader reader)
 {
     m_major = reader.ReadByte();
     m_minor = reader.ReadByte();
     m_release = reader.ReadByte();
     m_revision = reader.ReadInt();
     m_patch = reader.ReadByte();
     m_buildType = reader.ReadByte();
 }