public void ResidentionalCodesIdentifier_BaseResidentionaCode_BTICodesContainsResidentionalCodes()
        {
            IBTI bti        = new BTI("2.1, 2.2", false, false, false);
            var  processing = Handler("2.0", bti, "");
            var  excepted   = exceptedCodes("2.1, 2.2");

            processing.FullProcessing();

            Assert.AreEqual(excepted, processing.Codes.Show);
        }
        public void ResidentionalCodesIdentifier_BTI_HiLvlIsTrue_ReturnsCorrectResult(string Codes, string _excepted)
        {
            IBTI bti        = new BTI("2.5, 2.6, 2.7.1", false, false, true);
            var  processing = Handler(Codes, bti, "");
            var  excepted   = exceptedCodes(_excepted);

            processing.FullProcessing();

            Assert.AreEqual(excepted, processing.Codes.Show);
        }
        public void _Maintenance_InputStringIsNotMaintenance_ReturnsFalse(string input, string btiCodes)
        {
            ICodes       codes        = new Codes(mf);
            IBTI         buiding      = new BTI(btiCodes, false, false, true);
            ICodeSeeker  searchResult = new CodeSeeker(input, codes, mf);
            ICodeHandler processing   = new CodeHandler(searchResult.Codes, buiding, input, 0, mf);

            var result = processing.Maintenance;

            Assert.AreEqual(false, result);
        }
        public void FixCode_Other_NotASingleOtherCode_RetunsCodesWithoutOther()
        {
            IBTI   buildings = new BTI("2.6.0", false, false, true);
            ICodes Codes     = new Codes(mf);

            Codes.AddNodes("4.9.0, 12.3.0");
            ICodeHandler processing = new CodeHandler(Codes, buildings, "", 0, mf);
            var          result     = exceptedCodes("4.9.0");

            processing.FullProcessing();

            Assert.AreEqual(result, Codes.Show);
        }
        public void Landscaping_NotSingleLandscapeCode_returnsFalse()
        {
            IBTI        bti         = new BTI();
            string      input       = "Благоустройство территории и гараж";
            ICodeSeeker searchCodes = new CodeSeeker(input, new Codes(mf), mf);

            searchCodes.Seek();
            CodeHandler processing = new CodeHandler(searchCodes.Codes, bti, input, 0, mf);

            processing.FullProcessing();
            var result = processing.Landscaping;

            Assert.AreEqual(false, result);
        }
Example #6
0
        /// <summary>
        /// Generate a BinTexture from a BTI.
        /// </summary>
        /// <param name="bti">BTI to load as a BinTexture.</param>
        public UnusedTexture(BTI bti)
        {
            // Set texture width.
            Width = bti.Width;

            // Set texture height.
            Height = bti.Height;

            // Set texture format.
            Format = bti.Format;

            // Set texture alpha flag (Unsure, but seems logical)
            AlphaFlag = bti.AlphaFlag;

            // Set texture unknown 1. (Padding?)
            Unknown1 = 0;

            // Set texture data offset.
            DataOffset = bti.DataOffset;
        }
Example #7
0
        private void TexturesList_DoubleClick(object sender, EventArgs e)
        {
            if (texturesList.Items.Count == 0)
            {
                return;
            }

            string ext = Path.GetExtension(texturesList.GetItemText(texturesList.SelectedItem));

            string[] exts        = { ".bti", ".tpl", ".bclim" };
            bool     isSupported = false;

            for (int i = 0; i < exts.Length; i++)
            {
                if (exts[i] == ext)
                {
                    isSupported = true;
                    break;
                }
            }

            if (!isSupported)
            {
                MessageBox.Show("This image format does not support viewing yet.");
                return;
            }

            string fullPath = mMainRoot + "timg/" + texturesList.GetItemText(texturesList.SelectedItem);

            byte[] data = null;

            if (mLayoutImages.ContainsKey(fullPath))
            {
                data = mLayoutImages[fullPath];
            }

            // this is because TEX1 has paths as upper but the filenames are lowercase
            if (data == null)
            {
                if (mLayoutImages.ContainsKey(fullPath.ToLower()))
                {
                    data = mLayoutImages[fullPath.ToLower()];
                }
            }

            if (data == null)
            {
                return;
            }

            EndianBinaryReader reader = new EndianBinaryReader(data);

            ImageContainerBase container = null;

            // no need for a default case since it will return if the format isnt supported
            switch (ext)
            {
            case ".tpl":
                container = new TPL(ref reader);
                break;

            case ".bti":
                container = new BTI(ref reader);
                break;

            case ".bclim":
                container = new BCLIM(ref reader);
                break;
            }

            if (container == null)
            {
                return;
            }

            ImageViewer viewer = new ImageViewer(texturesList.GetItemText(texturesList.SelectedItem));

            viewer.setImage(container.getImage(0));
            viewer.Show();
        }
Example #8
0
        public MDL(byte[] data)
        {
            // Define a binary reader to read with.
            DhBinaryReader br = new DhBinaryReader(data, DhEndian.Big);

            Header = new MDLHeader(br);

            br.Goto(Header.MatricesOffset);
            Matrices = new Mat4[Header.JointCount + Header.WeightCount];
            for (int i = 0; i < Matrices.Length; i++)
            {
                Matrices[i] = Mat4.Identity;
            }

            for (int i = 0; i < Header.JointCount; i++)
            {
                float[] matrix = br.ReadF32s(12);

                Matrices[i] = new Mat4()
                {
                    Row1 = new Vec4(matrix[0], matrix[1], matrix[2], matrix[3]),
                    Row2 = new Vec4(matrix[4], matrix[5], matrix[6], matrix[7]),
                    Row3 = new Vec4(matrix[8], matrix[9], matrix[10], matrix[11]),
                    Row4 = new Vec4(0, 0, 0, 1),
                };
            }

            br.Goto(Header.PositionOffset);
            Positions = br.ReadVec3s(Header.PositionCount).ToList();

            br.Goto(Header.NormalOffset);
            Normals = br.ReadVec3s(Header.NormalCount).ToList();

            br.Goto(Header.ColorOffset);
            Colors = br.ReadClr4s(Header.ColorCount).ToList();

            br.Goto(Header.TextureCoordinateOffset);
            TextureCoordinates = br.ReadVec2s(Header.TextureCoordinateCount).ToList();

            br.Goto(Header.PacketOffset);
            Packets = new List <MDLShapePacket>();
            for (int i = 0; i < Header.PacketCount; i++)
            {
                Packets.Add(new MDLShapePacket(br));
            }

            br.Goto(Header.ShapeOffset);
            Shapes = new List <MDLShape>();
            for (int i = 0; i < Header.ShapeCount; i++)
            {
                Shapes.Add(new MDLShape(br, Packets));
            }

            foreach (MDLShape shape in Shapes)
            {
                ushort[] matrixIndices = new ushort[10];

                foreach (MDLShapePacket packet in shape.Packets)
                {
                    for (int m = 0; m < packet.MatrixCount; m++)
                    {
                        if (packet.MatrixIndices[m] == ushort.MaxValue)
                        {
                            continue;
                        }
                        matrixIndices[m] = packet.MatrixIndices[m];
                    }

                    DhBinaryReader reader = new DhBinaryReader(packet.Data, DhEndian.Big);

                    while (reader.Position() < packet.DataSize)
                    {
                        ShapePacketData packetData = new ShapePacketData();
                        packetData.PrimitiveType = reader.ReadU8();

                        if (packetData.PrimitiveType == 0x00)
                        {
                            continue;
                        }

                        packetData.VertexCount = reader.ReadU16();
                        for (int i = 0; i < packetData.VertexCount; i++)
                        {
                            MDLVertex vertex = new MDLVertex(reader, Header, shape.UseNbt);
                            if (vertex.MatrixIndex != -1)
                            {
                                vertex.MatrixDataIndex = matrixIndices[(vertex.MatrixIndex / 3)];
                            }
                            packetData.Vertices.Add(vertex);
                        }
                        packet.PacketData.Add(packetData);
                    }
                }
            }

            br.Goto(Header.TextureLocationOffset);
            Textures = new List <BTI>();
            for (int i = 0; i < Header.TextureCount; i++)
            {
                uint offset          = br.ReadU32();
                long currentPosition = br.Position();
                br.Goto(offset);
                BTI bti = new BTI(br, offset, Header.TextureLocationOffset);
                Textures.Add(bti);
                br.Goto(currentPosition);
            }

            br.Goto(Header.SamplerOffset);
            Samplers = new List <MDLSampler>();
            for (int i = 0; i < Header.SamplerCount; i++)
            {
                Samplers.Add(new MDLSampler(br));
            }

            br.Goto(Header.MaterialOffset);
            Materials = new List <MDLMaterial>();
            for (int i = 0; i < Header.MaterialCount; i++)
            {
                Materials.Add(new MDLMaterial(br, Samplers));
            }

            br.Goto(Header.DrawElementOffset);
            DrawElements = new List <MDLDrawElement>();
            for (int i = 0; i < Header.DrawElementCount; i++)
            {
                DrawElements.Add(new MDLDrawElement(br, Materials, Shapes));
            }

            br.Goto(Header.NodeOffset);
            Nodes = new List <MDLNode>();
            for (int i = 0; i < Header.NodeCount; i++)
            {
                Nodes.Add(new MDLNode(br, DrawElements));
            }
        }
 public BTIViewer(BTI Image)
 {
     this.Image = Image;
     InitializeComponent();
 }
Example #10
0
 public BTIViewer(BTI Image)
 {
     this.Image = Image;
     InitializeComponent();
 }