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

namespace Halo3Map.Tags.Layouts
{
    [Tag("Digital Marine", "weap", 0.1)]

    public class weap : H3Tag
    {
        [Size(52)]
        public byte[] unused1;
        public TagReference hlmt;

        [Size(60)]
        public byte[] unused2;
        public TagReference foot;

        [Size(44)]
        public byte[] unused3;
        public H3Reflexive<Attachments> attachments;
        [Size(32)]
        //Offset: 188, Size: 32
        public class Attachments : Chunk
        {
            public TagReference FX; //0-16
            public int Unknown1; //16-20
            public int Unknown2; //20-24
            public int Unknown3; //24-28
            public int Unknown4; //28-30
        }

        [Size(40)]
        public byte[] unused4;
        public H3Reflexive<Unknown_1> Unknown_Reflexive_1;
        [Size(32)]
        //Offset: 236, Size: 32
        public class Unknown_1 : Chunk
        {
            [Size(32)]
            public byte unused;
        }

        [Size(808)]
        public byte[] unused5;
        public H3Reflexive<fpmodels> FP_Models;
        [Size(32)]
        //Offset: 1052, Size: 32
        public class fpmodels : Chunk
        {
            public TagReference Model;
            public TagReference Animation;
        }

        [Size(32)]
        public byte[] unused6;
        public H3Reflexive<mag> Magazine;
        [Size(128)]
        //Offset: 1092, Size: 128
        public class mag : Chunk
        {
            [Size(6)]
            public byte[] unused1;
            public short Starting_Ammo,
                Max_Ammo,
                Clip_Size,
                Max_Holding_Ammo;
            [Size(6)]
            public byte[] unused2;
            public short Reloading_Amount;

            [Size(94)]
            public byte[] unused3;
            public H3Reflexive<ammo> Ammo_Pack_Settings_Question;
            [Size(20)]
            //Offset: 116, Size: 20
            public class ammo : Chunk
            {
                public short Ammo_Picked_Up;
                [Size(2)]
                public byte[] unused;
                public TagReference Equipment;
            }
        }

        [Size(4)]
        public byte[] unused7;
        public H3Reflexive<triggers> Triggers_Question;
        [Size(144)]
        //Offset: 1104, Size: 144
        public class triggers : Chunk
        {
            [Size(144)]
            public byte[] unused;
        }

        [Size(4)]
        public byte[] unused8;
        public H3Reflexive<projectiles> Projectiles;
        [Size(304)]
        //Offset: 1116, Size: 304
        public class projectiles : Chunk
        {
            public short Unknown1,
                Unknown2;
            public float Rounds_Per_Sec_Min,
                Rounds_Per_Sec_Max,
                Accel_Min,
                Decel_Max,
                Blurred_ROF,
                Unknown;
            public short Rounds_Per_Shot,
                Min_Rounds_Loaded_Question;
            public float Chamber_Time_secs;
            [Size(6)]
            public byte[] unused;
            public short Ammo_per_Shot;
            [Size(74)]
            public byte[] unused1;
            public short Projectiles_per_Shot;
            [Size(32)]
            public byte[] unused2;
            public TagReference Projectile;
            [Size(128)]
            public byte[] unused3;
            public H3Reflexive<firingeffects> Firing_Effects;
            [Size(196)]
            //Offset: 296, Size: 196
            public class firingeffects : Chunk
            {
                public short ShotCount_LowerBound,
                    ShotCount_UpperBound;
                public TagReference Firing_Effect;
                [Size(16)]
                public byte[] unused;
                public TagReference Sound;
                [Size(16)]
                public byte[] unused1;
                public TagReference Damage_Response;

            }
        }
    }
}