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

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

       public stem()
       {
           Fields.AddRange(new MetaNode[] {
           new Reflexive("Documentation", 1, new MetaNode[] { 
               new Value("Char Data", typeof(byte)),
           }),
           new StringID("Default Material Name"),
           new Bitmask("Flags", new string[] { "Force_Active_Camo", "Water", "Foliage", "Hide_Standard_Parameters" }, 32),
           new Unused(16),
           new TagReference("Light_Response"),
           new Unused(24),
           new TagReference("Aux_1_Shader"),
           new HaloObjects.Enum("Aux 1 Layer", new string[] { "Texaccum", "Environment_Map", "Self-Illumination", "Overlay", "Transparent", "Lightmap_(Indirect)", "Diffuse", "Specular", "Shadow_Generate", "Shadow_Apply", "Boom", "Fog", "Sh_Prt", "Active_Camo", "Water_Edge_Blend", "Decal", "Active_Camo_Stencil_Modulate", "Hologram", "Light_Albedo" }, 32),
           new TagReference("Aux_2_Shader"),
           new HaloObjects.Enum("Aux 2 Layer", new string[] { "Texaccum", "Environment_Map", "Self-Illumination", "Overlay", "Transparent", "Lightmap_(Indirect)", "Diffuse", "Specular", "Shadow_Generate", "Shadow_Apply", "Boom", "Fog", "Sh_Prt", "Active_Camo", "Water_Edge_Blend", "Decal", "Active_Camo_Stencil_Modulate", "Hologram", "Light_Albedo" }, 32),
           new Reflexive("Postprocess Definition", 40, new MetaNode[] { 
               new Reflexive("Levels Of Detail", 10, 4, new MetaNode[] { 
                   new Value("Layers", typeof(short)),
                   new Value("Available Layers", typeof(int)),
                   new Value("Projected Height Percentage", typeof(float)),
               }),
               new Reflexive("Layers", 2, 4, new MetaNode[] { 
                   new Value("Block Index Data", typeof(short)),
               }),
               new Reflexive("Passes", 10, 4, new MetaNode[] { 
                   new TagReference("Pass"),
                   new Value("Block Index Data", typeof(short)),
               }),
               new Reflexive("Implementations", 6, 4, new MetaNode[] { 
                   new Value("Bitmaps", typeof(short)),
                   new Value("Pixel Constant", typeof(short)),
                   new Value("Vertex Constant", typeof(short)),
               }),
               new Reflexive("Remappings", 4, 4, new MetaNode[] { 
                   new Value("Source Index", typeof(short)),
                   new Unused(2),
               }),
           }),
           });
       }
    }
}
