Пример #1
0
        public DlgeStructure ReadStructure(int iteration)
        {
            DlgeStructure structure = new DlgeStructure();

            structure.Category   = ReadInt32();
            structure.Identifier = ReadUInt32();
            ConfirmEquality(ReadInt32(), 0);

            var multiplier = _version == HitmanVersion.Version1Epic ? 6 : 4;

            if (_version == HitmanVersion.Version1 || _version == HitmanVersion.Version2)
            {
                ConfirmEquality(ReadInt64(), -1);
                ConfirmEquality(ReadInt32(), 0);
            }

            if (_version == HitmanVersion.Version1)
            {
                ConfirmEquality(ReadInt32(), 0);
            }

            ConfirmEquality(ReadInt32(), 2 + iteration * multiplier);
            ConfirmEquality(ReadInt32(), 3 + iteration * multiplier);

            structure.Dialogues = new string[12];

            return(structure);
        }
Пример #2
0
        public bool ReadLanguageMetadataAndDetermineIfEmpty(int i, int iteration, DlgeStructure structure)
        {
            if (_version == HitmanVersion.Version1 || _version == HitmanVersion.Version1Epic)
            {
                ConfirmEquality(ReadInt32(), 0);
            }

            if (_version == HitmanVersion.Version1Epic && i == 0)
            {
                var multiplier = 6;

                var first  = ReadInt32();
                var second = ReadInt32();

                if ((first == 4 + iteration * multiplier) && (second == 5 + iteration * multiplier))
                {
                    structure.MetaDataNegative = false;
                }
                else
                {
                    throw new InvalidDataException();
                }

                return(false);
            }

            if (_version == HitmanVersion.Version1Epic && i == 10)
            {
                var first  = ReadInt32();
                var second = ReadInt32();

                ConfirmEquality(first, 6 + iteration * 6);
                ConfirmEquality(second, 7 + iteration * 6);

                return(false);
            }

            if (((_version == HitmanVersion.Version1 || _version == HitmanVersion.Version2) && i == 9))
            {
                var multiplier = _version == HitmanVersion.Version1Epic ? 6 : 4;

                var first  = ReadInt32();
                var second = ReadInt32();
                if (first == -1 && second == -1)
                {
                    structure.MetaDataNegative = true;
                }
                else if ((first == 4 + iteration * multiplier) && (second == 5 + iteration * multiplier))
                {
                    structure.MetaDataNegative = false;
                }
                else
                {
                    throw new InvalidDataException();
                }

                return(true);
            }

            ConfirmEquality(ReadInt32(), -1);
            ConfirmEquality(ReadInt32(), -1);

            return(false);
        }