using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HaloObjects;

namespace HaloPlugins.Xbox
{
    public class tdtl
    {
       public List<MetaNode> Fields = new List<MetaNode>();

       public tdtl()
       {
           Fields.AddRange(new MetaNode[] {
           new Unused(2),
           new HaloObjects.Enum("Type", new string[] { "Standard", "Weapon_To_Projectile", "Projectile_From_Weapon" }, 16),
           new StringID("Attachment Marker Name"),
           new Unused(56),
           new Value("Falloff Distance From Camera", typeof(float)),
           new Value("Cutoff Distance From Camera", typeof(float)),
           new Unused(32),
           new Reflexive("Arcs", 236, new MetaNode[] { 
               new Bitmask("Flags", new string[] { "Basis_Marker-Relative", "Spread_By_External_Input", "Collide_With_Stuff", "No_Perspective_Midpoints" }, 16),
               new HaloObjects.Enum("Sprite Count", new string[] { "4_Sprites", "8_Sprites", "16_Sprites", "32_Sprites", "64_Sprites", "128_Sprites", "256_Sprites" }, 16),
               new Value("Natural Length", typeof(float)),
               new Value("Instances", typeof(short)),
               new Unused(2),
               new Value("Instance Spread Angle", typeof(float)),
               new Value("Instance Rotation Period", typeof(float)),
               new Unused(8),
               new TagReference("Material_Effects"),
               new TagReference("Bitmap"),
               new Unused(8),
               new Reflexive("Horizontal Range", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Vertical Range", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Value("Vertical Negative Scale", typeof(float)),
               new Reflexive("Roughness", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Unused(64),
               new Value("Octave 1 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 2 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 3 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 4 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 5 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 6 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 7 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 8 Frequency Cycles Per Sec", typeof(float)),
               new Value("Octave 9 Frequency Cycles Per Sec", typeof(float)),
               new Unused(28),
               new Bitmask("Octave Flags", new string[] { "Octave_1", "Octave_2", "Octave_3", "Octave_4", "Octave_5", "Octave_6", "Octave_7", "Octave_8", "Octave_9" }, 32),
               new Reflexive("Cores", 56, new MetaNode[] { 
                   new Value("Bitmap Index", typeof(short)),
                   new Unused(14),
                   new Reflexive("Thickness", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Reflexive("Color", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Reflexive("Brightness/Time", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Reflexive("Brightness/Facing", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Reflexive("Along-Axis Scale", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
               }),
               new Reflexive("Range-Collision Scale", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Brightness-Collision Scale", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
           }),
           });
       }
    }
}
