Ejemplo n.º 1
0
        private MpqHash GetHashEntry(string Filename)
        {
            //uint index = HashString(Filename, 0);
            //index  &= mHeader.HashTableSize - 1;
            uint name1 = HashString(Filename, 0x100);
            uint name2 = HashString(Filename, 0x200);

            // 63   32 31    0
            // |     | |     |
            // [name2] [name1]

            MpqHash hash;

            if (dcHashes.TryGetValue((((UInt64)name2) << 32) | name1, out hash))
            {
                return(hash);
            }


            /*for (uint i = index; ; )
             * {
             *  MpqHash hash = mHashes[i];
             *  if (hash.Name1 == name1 && hash.Name2 == name2) return hash;
             *
             *  if (++i >= mHashes.Length) i = 0;
             *  if (i == index) break;
             * }*/

            return(MpqHash.InvalidHash());
        }
Ejemplo n.º 2
0
        private MpqHash GetHashEntry(string Filename)
        {
            uint index = HashString(Filename, 0);

            index &= mHeader.HashTableSize - 1;
            uint name1 = HashString(Filename, 0x100);
            uint name2 = HashString(Filename, 0x200);

            uint i = index;

            do
            {
                MpqHash hash = mHashes[i];
                if (hash.Name1 == name1 && hash.Name2 == name2)
                {
                    return(hash);
                }
                if (++i >= mHashes.Length)
                {
                    i = 0;
                }
            } while (i != index);

            return(MpqHash.InvalidHash());
        }
Ejemplo n.º 3
0
        private MpqHash GetHashEntry(string Filename)
        {
            uint index = HashString(Filename, 0);

            index &= mHeader.HashTableSize - 1;
            uint name1 = HashString(Filename, 0x100);
            uint name2 = HashString(Filename, 0x200);

            for (uint i = index; i < mHashes.Length; ++i)
            {
                MpqHash hash = mHashes[i];
                if (hash.Name1 == name1 && hash.Name2 == name2)
                {
                    return(hash);
                }
            }

            return(MpqHash.InvalidHash());
        }