using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HaloPlugins.H2.Xbox.Raw_Definitions;

namespace HaloPlugins.Xbox
{
    public class weat : TagDefinition
    {
       public weat() : base("weat", "weather_system", 176, new WeatherDefinition())
       {
           Fields.AddRange(new IMetaNode[] {
           new TagBlock("Particle System", 140, 1, new IMetaNode[] { 
               new TagReference("Sprites", "bitm"),
               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 Padding(4),
               new Value("Block Offset", typeof(int)),
               new Value("Block Size", typeof(int)),
               new Value("Section Data Size", typeof(int)),
               new Value("Resource Data Size", typeof(int)),
               new TagBlock("Resources", 16, -1, new IMetaNode[] { 
                   new HaloPlugins.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 TagIndex("Owner Tag Section Offset", "weat"),
               new Value("Unknown", typeof(uint)),
               new Padding(12),
               new HaloPlugins.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 Padding(12),
           }),
           new TagBlock("Background Plates", 936, 3, new IMetaNode[] { 
               new TagReference("Texture_0", "bitm"),
               new TagReference("Texture_1", "bitm"),
               new TagReference("Texture_2", "bitm"),
               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 Flags("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 Padding(736),
           }),
           new Value("Wind Tiling Scale", typeof(float)),
           new Padding(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 Padding(8),
           new Value("Primary Rate Of Change", typeof(float)),
           new Value("Primary Min Strength", typeof(float)),
           new Padding(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 Padding(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 Padding(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 Padding(12),
           new Value("Fade Radius", typeof(float)),
           });
       }
    }
}
