using System;
using System.Collections.Generic;
using System.Text;
using Halo3Map.Data;

namespace Halo3Map.Tags.Layouts
{
    [Tag("shade45", "ugh!", 0.1)]
    public class ugh_ : H3Tag
    {
        public H3Reflexive<Unknown0> unknown0;
        [Size(4)]
        public class Unknown0 : Chunk
        {
            public short unknown;
            public short unknown2;
        }

        public H3Reflexive<Unknown12> unknown12;
        [Size(68)]
        public class Unknown12 : Chunk
        {
            public int unknown;
            public float unknown4;
            public float unknown8;
            public float unknown12;
            public float unknown16;
            public int unknown20;
            public int unknown24;
            public float unknown28;
            public int unknown32;
            public short unknown36;
            public short unknown38;
            public float pi;
            public float pi2;
            [Size(20)]
            public byte[] unknown48;
        }

        public H3Reflexive<Unknown24> unknown24;
        [Size(20)]
        public class Unknown24 : Chunk
        {
            public float unknown;
            public float unknown4;
            public float unknown8;
            public float unknown12;
            public float unknown16;
            public float unknown20;
        }

        public H3Reflexive<Unknown36> unknown36;
        [Size(4)]
        public class Unknown36 : Chunk
        {
            public short unknown;
            public short unknown2;
        }

        public H3Reflexive<Unknown48> unknown48;
        [Size(16)]
        public class Unknown48 : Chunk
        {
            public int unknown;
            public int unknown4;
            public int unknown8;
            public int unknown12;
        }

        public H3Reflexive<Unknown60> unknown60;
        [Size(12)]
        public class Unknown60 : Chunk
        {
            public short unknown;
            public short unknown2;
            public short unknown4;
            public short unknown6;
            public short unknown8;
            public short unknown10;
        }

        public H3Reflexive<Unknown72> unknown72;
        [Size(16)]
        public class Unknown72 : Chunk
        {
            public short unknown;
            public short unknown2;
            public short unknown4;
            public short unknown6;
            public short unknown8;
            public short unknown10;
            public short unknown12;
            public short unknown14;
        }

        public H3Reflexive<Unknown84> unknown84;
        [Size(72)]
        public class Unknown84 : Chunk
        {
            [Size(24)]
            public byte[] unknown;

            public H3Reflexive<Unknown24> unknown24;
            [Size(72)]
            public class Unknown24 : Chunk
            {
                [Size(8)]
                public byte[] unknown;

                public float unknown8;
                public float unknown12;

                [Size(8)]
                public byte[] unknown16;

                public float unknown24;
                public float unknown28;

                [Size(8)]
                public byte[] unknown32;

                public float unknown40;
                public float unknown44;

                [Size(24)]
                public byte[] unknown48;
            }

            [Size(36)]
            public byte[] unknown36;
        }

        public H3Reflexive<Unknown96> unknown96;
        [Size(28)]
        public class Unknown96 : Chunk
        {
            public int unknown;
            [Size(24)]
            public byte[] unknown4;
        }

        public H3Reflexive<Unknown108> unknown108;
        [Size(1)] //Padding 5%?
        public class Unknown108 : Chunk
        {
            public byte unknown;
        }

        [Size(28)]
        public byte[] unknown120;

        public H3Reflexive<Unknown148> unknown148;
        [Size(20)]
        public class Unknown148 : Chunk
        {
            public int unknown;
            public int unknown4;
            public short unknown8;
            public short unknown10;
            public short unknown12;
            public short unknown14;
            public short unknown16;
            public short unknown18;
        }

        [Size(12)]
        public byte[] unknown160;

        public H3Reflexive<Unknown172> unknown172;
        [Size(12)]
        public class Unknown172 : Chunk
        {
            public int unknown;
            public int unknown4;
            public int unknown8;
        }
    }
}
