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

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

       public weat()
       {
           Fields.AddRange(new MetaNode[] {
           new Reflexive("Particle System", 140, new MetaNode[] { 
               new TagReference("Sprites"),
               new Value("View Box Width", typeof(float)),
               new Value("View Box Height", typeof(float)),
               new Value("View Box Depth", typeof(float)),
               new Value("Exclusion Radius", typeof(float)),
               new Value("Max Velocity", typeof(float)),
               new Value("Min Mass", typeof(float)),
               new Value("Max Mass", typeof(float)),
               new Value("Min Size", typeof(float)),
               new Value("Max Size", typeof(float)),
               new Value("Maximum Number Of Particles", typeof(int)),
               new Value("Initial Velocity i", typeof(float)),
               new Value("Initial Velocity j", typeof(float)),
               new Value("Initial Velocity k", typeof(float)),
               new Unused(4),
               new Value("Block Offset", typeof(uint)),
               new Value("Block Size", typeof(uint)),
               new Value("Section Data Size", typeof(uint)),
               new Value("Resource Data Size", typeof(uint)),
               new Reflexive("Resources", 16, new MetaNode[] { 
                   new HaloObjects.Enum("Type", new string[] {  }, 32),
                   new Value("Primary Locator", typeof(short)),
                   new Value("Secondary Locator", typeof(short)),
                   new Value("Resource Data Size", typeof(uint)),
                   new Value("Resource Data Offset", typeof(uint)),
               }),
               new Ident("Owner Tag Section Offset"),
               new Value("Unknown", typeof(uint)),
               new Unused(12),
               new HaloObjects.Enum("Type", new string[] { "Generic", "Snow", "Rain", "Rain_Splash", "Bugs", "Sand_Storm", "Debris", "Bubbles" }, 32),
               new Value("Minimum Opacity", typeof(float)),
               new Value("Maximum Opacity", typeof(float)),
               new Value("Rain Streak Scale", typeof(float)),
               new Value("Rain Line Width", typeof(float)),
               new Unused(12),
           }),
           new Reflexive("Background Plates", 936, new MetaNode[] { 
               new TagReference("Texture_0"),
               new TagReference("Texture_1"),
               new TagReference("Texture_2"),
               new Value("Plate Position 0", typeof(float)),
               new Value("Plate Position 1", typeof(float)),
               new Value("Plate Position 2", typeof(float)),
               new Value("Move Speed 0 i", typeof(float)),
               new Value("Move Speed 0 j", typeof(float)),
               new Value("Move Speed 0 k", typeof(float)),
               new Value("Move Speed 1 i", typeof(float)),
               new Value("Move Speed 1 j", typeof(float)),
               new Value("Move Speed 1 k", typeof(float)),
               new Value("Move Speed 2 i", typeof(float)),
               new Value("Move Speed 2 j", typeof(float)),
               new Value("Move Speed 2 k", typeof(float)),
               new Value("Texture Scale 0", typeof(float)),
               new Value("Texture Scale 1", typeof(float)),
               new Value("Texture Scale 2", typeof(float)),
               new Value("Jitter 0 i", typeof(float)),
               new Value("Jitter 0 j", typeof(float)),
               new Value("Jitter 0 k", typeof(float)),
               new Value("Jitter 1 i", typeof(float)),
               new Value("Jitter 1 j", typeof(float)),
               new Value("Jitter 1 k", typeof(float)),
               new Value("Jitter 2 i", typeof(float)),
               new Value("Jitter 2 j", typeof(float)),
               new Value("Jitter 2 k", typeof(float)),
               new Value("Plate Z Near", typeof(float)),
               new Value("Plate Z Far", typeof(float)),
               new Value("Depth Blend Z Near", typeof(float)),
               new Value("Depth Blend Z Far", typeof(float)),
               new Value("Opacity 0", typeof(float)),
               new Value("Opacity 1", typeof(float)),
               new Value("Opacity 2", typeof(float)),
               new Bitmask("Flags", new string[] { "Forward", "Auto_Position_Planes", "Auto_Scale_Planesauto_Update_Spe" }, 32),
               new Value("Tint Color 0 R", typeof(float)),
               new Value("Tint Color 0 G", typeof(float)),
               new Value("Tint Color 0 B", typeof(float)),
               new Value("Tint Color 1 R", typeof(float)),
               new Value("Tint Color 1 G", typeof(float)),
               new Value("Tint Color 1 B", typeof(float)),
               new Value("Tint Color 2 R", typeof(float)),
               new Value("Tint Color 2 G", typeof(float)),
               new Value("Tint Color 2 B", typeof(float)),
               new Value("Mass 1", typeof(float)),
               new Value("Mass 2", typeof(float)),
               new Value("Mass 3", typeof(float)),
               new Unused(736),
           }),
           new Value("Wind Tiling Scale", typeof(float)),
           new Unused(36),
           new Value("Wind Primary Heading i", typeof(float)),
           new Value("Wind Primary Heading j", typeof(float)),
           new Value("Wind Primary Heading k", typeof(float)),
           new Unused(8),
           new Value("Primary Rate Of Change", typeof(float)),
           new Value("Primary Min Strength", typeof(float)),
           new Unused(4),
           new Value("Wind Gusting Heading i", typeof(float)),
           new Value("Wind Gusting Heading j", typeof(float)),
           new Value("Wind Gusting Heading k", typeof(float)),
           new Unused(12),
           new Value("Gust Directional Rate Of Change", typeof(float)),
           new Value("Gust Strength Rate Of Change", typeof(float)),
           new Value("Gust Cone Angle", typeof(float)),
           new Unused(16),
           new Value("Turbulance Rate Of Change", typeof(float)),
           new Value("Turbulence Scale x,y,z i", typeof(float)),
           new Value("Turbulence Scale x,y,z j", typeof(float)),
           new Value("Turbulence Scale x,y,z k", typeof(float)),
           new Value("Gravity Constant", typeof(float)),
           new Unused(12),
           new Value("Fade Radius", typeof(float)),
           });
       }
    }
}
