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

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

       public bipd()
       {
           Fields.AddRange(new MetaNode[] {
           new Bitmask("Flags", new string[] { "Does_Not_Cast_Shadow", "Search_Cardinal_Direction_Lightmaps", "unused", "Not_A_Pathfinding_Obstacle", "Extension_Of_Parent", "Does_Not_Cause_Collision_Damage", "Early_Mover", "Early_Mover_Localized_Physics", "Use_Static_Massive_Lightmap_Sample", "Object_Scales_Attachments", "Inherits_Player's_Appearance", "Dead_Bipeds_Can't_Localize", "Attach_To_Clusters_By_Dynamic_Sphere", "Effects_Created_By_This_Object_Do_Not" }, 32),
           new Value("Bounding Radius", typeof(float)),
           new Value("Bounding Offset X", typeof(float)),
           new Value("Bounding Offset Y", typeof(float)),
           new Value("Bounding Offset Z", typeof(float)),
           new Value("Acceleration Scale", typeof(float)),
           new HaloObjects.Enum("Lightmap Shadow Mode", new string[] { "Default", "Never", "Always" }, 32),
           new HaloObjects.Enum("Sweetener Size", new string[] { "Small", "Medium", "Large" }, 32),
           new Value("Dynamic Light Sphere Radius", typeof(float)),
           new Value("Dynamic Light Sphere Offset X", typeof(float)),
           new Value("Dynamic Light Sphere Offset Y", typeof(float)),
           new Value("Dynamic Light Sphere Offset Z", typeof(float)),
           new StringID("Default Model Variant"),
           new TagReference("Model"),
           new TagReference("Crate_Object"),
           new TagReference("Modifier_Shader"),
           new TagReference("Creation_Effect"),
           new TagReference("Material_Effects"),
           new Reflexive("Ai Properties", 16, new MetaNode[] { 
               new Bitmask("Flags", new string[] { "Destroyable_Cover", "Pathfinding_Ignore_When_Dead", "Dynamic_Cover" }, 32),
               new StringID("Type Name"),
               new HaloObjects.Enum("Size", new string[] { "Default", "Tiny", "Small", "Medium", "Large", "Huge", "Immobile" }, 32),
               new HaloObjects.Enum("Leap Jump Speed", new string[] { "None", "Down", "Step", "Crouch", "Stand", "Storey", "Tower", "Infinite" }, 32),
           }),
           new Reflexive("Functions", 32, new MetaNode[] { 
               new Bitmask("Flags", new string[] { "Invert", "Mapping_Does_Not_Controls_Active", "Always_Active", "Random_Time_Offset" }, 32),
               new StringID("Import Name"),
               new StringID("Export Name"),
               new StringID("Turn Off With"),
               new Value("Min Value", typeof(float)),
               new Reflexive("Function Type (Graph)", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new StringID("Scale By"),
           }),
           new Value("Apply Collision Damage Scale", typeof(float)),
           new Value("Min Game Acc (Default)", typeof(float)),
           new Value("Max Game Acc (Default)", typeof(float)),
           new Value("Min Gam Scale (Default)", typeof(float)),
           new Value("Max Gam Scale (Default)", typeof(float)),
           new Value("Min abs Acc (Default)", typeof(float)),
           new Value("Max abs Acc (Default)", typeof(float)),
           new Value("Min abs Scale (Default)", typeof(float)),
           new Value("Max abs Scale (Default)", typeof(float)),
           new Value("Hud Text Message Index", typeof(short)),
           new Unused(2),
           new Reflexive("Attachments", 24, new MetaNode[] { 
               new TagReference("Type"),
               new StringID("Marker"),
               new StringID("Change Color"),
               new StringID("Primary Scale"),
               new StringID("Secondary Scale"),
           }),
           new Reflexive("Widgets", 8, new MetaNode[] { 
               new TagReference("Type"),
           }),
           new Reflexive("Old Functions", 8, new MetaNode[] { 
               new Unused(8),
           }),
           new Reflexive("Change Colors", 16, new MetaNode[] { 
               new Reflexive("Initial Permutations", 32, new MetaNode[] { 
                   new Value("Weight", typeof(float)),
                   new Value("Color Lower Bound R", typeof(float)),
                   new Value("Color Lower Bound G", typeof(float)),
                   new Value("Color Lower Bound B", typeof(float)),
                   new Value("Color Upper Bound R", typeof(float)),
                   new Value("Color Upper Bound G", typeof(float)),
                   new Value("Color Upper Bound B", typeof(float)),
                   new StringID("Variant Name"),
               }),
               new Reflexive("Functions", 36, new MetaNode[] { 
                   new Bitmask("Scale Flags", new string[] { "Blend_In_HSV", "...More_Colors" }, 32),
                   new Value("Color Lower Bound R", typeof(float)),
                   new Value("Color Lower Bound G", typeof(float)),
                   new Value("Color Lower Bound B", typeof(float)),
                   new Value("Color Upper Bound R", typeof(float)),
                   new Value("Color Upper Bound G", typeof(float)),
                   new Value("Color Upper Bound B", typeof(float)),
                   new StringID("Darken By"),
                   new StringID("Scale By"),
               }),
           }),
           new Reflexive("Predicted Resource", 8, new MetaNode[] { 
               new Value("Type", typeof(short)),
               new Value("Resource Index", typeof(short)),
               new Ident("Tag_Index"),
           }),
           new Bitmask("Flags", new string[] { "Circular_Aiming", "Destroyed_After_Dying", "Half-speed_Interpolation", "Fires_From_Camera", "Entrance_Inside_Bounding_sphere_", "Doesn't_Show_Readied_Weapon", "Couses_Passenger_Dialogue", "Resists_Pings", "Melee_Attack_Is_Fatal", "Don't_Reface_During_Pings", "Has_No_Aiming", "Simple_Creature", "Impact_Melle_Attaches_To_Unit", "Impact_Melee_Dies_On_Shield", "Cannot_Open_Doors_Automatically", "Melee_Attackers_Cannot_Attach", "Not_Instantly_Killed_By_Melee", "Shield_Sapping", "Runs_Around_Flaming", "Inconsequential", "Special_Cinematic_Unit", "Ignored_By_AutoAiming", "Shields_Fry_Infection_Forms", "unused", "unused", "Acts_As_Gunner_For_Parent", "Controlled_By_Parent_Gunner", "Parent's_Primary_Weapon", "Unit_Has_Boost" }, 32),
           new HaloObjects.Enum("Default Team", new string[] { "Deafult", "Player", "Human", "Covenant", "Flood", "Sentinel", "Heretic", "Prophet" }, 16),
           new HaloObjects.Enum("Constant Sound Volume", new string[] { "Silent", "Medium", "Loud", "Shout", "Quiet" }, 16),
           new TagReference("Integrated_Light_Toggle"),
           new Value("Camera Field of View", typeof(float)),
           new Value("Camera Stiffness", typeof(float)),
           new StringID("Camera Marker Name"),
           new StringID("Camera Submerged Marker Name"),
           new Value("Pitch Auto-Level", typeof(float)),
           new Value("Pitch Range", typeof(float)),
           new Value("...To", typeof(float)),
           new Reflexive("Camera Tracks", 8, new MetaNode[] { 
               new TagReference("Track"),
           }),
           new Value("Acceleration Scale i", typeof(float)),
           new Value("Acceleration Scale j", typeof(float)),
           new Value("Acceleration Scale k", typeof(float)),
           new Value("Acceleration Action Scale", typeof(float)),
           new Value("Acceleration Attach Scale", typeof(float)),
           new Value("Soft Ping Threshold", typeof(float)),
           new Value("Soft Ping Interrupt Time", typeof(float)),
           new Value("Hard Ping Threshold", typeof(float)),
           new Value("Hard Ping Interrupt Time", typeof(float)),
           new Value("Hard Ping Death Threshold", typeof(float)),
           new Value("Feign Death Threshold", typeof(float)),
           new Value("Feign Death Time", typeof(float)),
           new Value("Dist Of Evade Anim", typeof(float)),
           new Value("Dist of Dive Anim", typeof(float)),
           new Value("Stunned Movement Threshold", typeof(float)),
           new Value("Feign Death Chance", typeof(float)),
           new Value("Feign Repeat Chance", typeof(float)),
           new TagReference("Spawned_Turret_Actor"),
           new Value("Spawned Actor Count", typeof(short)),
           new Value("...To", typeof(short)),
           new Value("Spawned Velocity", typeof(float)),
           new Value("Aiming Velocity Max", typeof(float)),
           new Value("Aiming Accel Max", typeof(float)),
           new Value("Casual Aiming Modifier", typeof(float)),
           new Value("Looking Velocity Max", typeof(float)),
           new Value("Looking Accel Max", typeof(float)),
           new StringID("Right Hand Node"),
           new StringID("Left Hand Node"),
           new StringID("Preferred Gun Node"),
           new TagReference("Melee_Damage"),
           new TagReference("Boarding_Melee_Damage"),
           new TagReference("Boarding_Melee_Response"),
           new TagReference("Landing_Melee_Damage"),
           new TagReference("Flurry_Melee_Damage"),
           new TagReference("Obstacle_Smash_Damage"),
           new HaloObjects.Enum("Motion Sensor Blip Size", new string[] { "Medium", "Small", "Large" }, 32),
           new Reflexive("Postures", 16, new MetaNode[] { 
               new StringID("Name"),
               new Value("Pill Offset i", typeof(float)),
               new Value("Pill Offset j", typeof(float)),
               new Value("Pill Offset k", typeof(float)),
           }),
           new Reflexive("New Hud Interfaces", 8, new MetaNode[] { 
               new TagReference("New_Unit_Hud_Interface"),
           }),
           new Reflexive("Dialogue Variants", 24, new MetaNode[] { 
               new Value("Variant Number", typeof(short)),
               new Unused(10),
               new TagReference("Dialogue"),
               new Unused(4),
           }),
           new Value("Grenade Velocity", typeof(float)),
           new HaloObjects.Enum("Grenade Type", new string[] { "Human_Fragmentation", "Covenant_Plasma" }, 16),
           new Value("Grenade Count", typeof(ushort)),
           new Reflexive("Powered Seats", 8, new MetaNode[] { 
               new Value("Driver Powerup Time", typeof(float)),
               new Value("Driver Powerdown Time", typeof(float)),
           }),
           new Reflexive("Weapon", 8, new MetaNode[] { 
               new TagReference("Weapon"),
           }),
           new Reflexive("Seats", 176, new MetaNode[] { 
               new Bitmask("Flags", new string[] { "Invisible", "Locked", "Driver", "Gunner", "3rd_Person_Camera", "Allows_Weapons", "3rd_Person_On_Enter", "1st_Person_Camera_Slaved_To_Gun", "Allow_Vehicle_Communication_Animations", "Not_Valid_Without_Driver", "Allow_AI_NonCombatants", "Boarding_Seat", "AI_Firing_Disabled_By_Max_Acceleration", "Boarding_Enters_Seat", "Boarding_Need_Any_Passenger", "Invaild_For_Player", "Invaild_For_Non-Player", "Gunner_(Player_Only)", "Invisible_Under_Major_Damage" }, 32),
               new StringID("Label"),
               new StringID("Sitting Postion Marker"),
               new StringID("Entry Marker(s) Name"),
               new StringID("Boarding Grenade Marker"),
               new StringID("Boarding Grenade String"),
               new StringID("Boarding Melee String"),
               new Value("Ping Scale", typeof(float)),
               new Value("Turnover Time (sec)", typeof(float)),
               new Value("Accel Range i", typeof(float)),
               new Value("Accel Range j", typeof(float)),
               new Value("Accel Range k", typeof(float)),
               new Value("Accel Action Scale", typeof(float)),
               new Value("Accel Attach Scale", typeof(float)),
               new Value("AI Scariness", typeof(float)),
               new HaloObjects.Enum("AI Seat Type", new string[] { "None", "Passenger", "Gunner", "Small_Cargo", "Large_Cargo", "Driver" }, 16),
               new Value("Boarding Seat #", typeof(short)),
               new Value("Listener Interpolation Factor", typeof(float)),
               new Value("Yaw Rate Bounds", typeof(float)),
               new Value("...To", typeof(float)),
               new Value("Pitch Rate Bounds", typeof(float)),
               new Value("...To", typeof(float)),
               new Value("Min Speed Ref", typeof(float)),
               new Value("Max Speed Ref", typeof(float)),
               new Value("Speed Exponent", typeof(float)),
               new StringID("Camera Marker Name"),
               new StringID("Camera Submerged Marker name"),
               new Value("Pitch Auto-level", typeof(float)),
               new Value("Pitch Range Lower", typeof(float)),
               new Value("Pitch Range Upper", typeof(float)),
               new Reflexive("Camera Tracks", 8, new MetaNode[] { 
                   new TagReference("Track"),
               }),
               new Reflexive("Unit Hud Interface", 8, new MetaNode[] { 
                   new TagReference("New_Unit_Hud_Interface"),
               }),
               new StringID("Enter Seat String"),
               new Value("Yaw Min", typeof(float)),
               new Value("Yaw Max", typeof(float)),
               new TagReference("Built-in_Gunner"),
               new Value("Entry Radius", typeof(float)),
               new Value("Entry Marker Cone Angle", typeof(float)),
               new Value("Entry Marker Facing Angle", typeof(float)),
               new Value("Maximum Relative Velocity", typeof(float)),
               new StringID("Invisible Seat Region"),
               new Value("Runtime Invisible Seat Region Index", typeof(float)),
           }),
           new Value("Boost Peak Power", typeof(float)),
           new Value("Boost Rise Power", typeof(float)),
           new Value("Boost Peak Time", typeof(float)),
           new Value("Boost Fall Power", typeof(float)),
           new Value("Dead Time", typeof(float)),
           new Value("Lip Sync Attack Weight", typeof(float)),
           new Value("Lip Sync decay Weight", typeof(float)),
           new Value("Moving Turning Speed (Degrees Per Second)", typeof(float)),
           new Bitmask("Flags", new string[] { "Turns_Without_Animating", "Passes_Through_Other_Bipeds", "Immune_To_Falling_Damage", "Rotate_While_Airborne", "Use_Limp_Body_Physics", "unused", "Random_Speed_Increase", "unused", "Spawn_Death_Children_On_Destroy", "Stunned_by_emp_damage(RD1)", "Dead_Physics_When_Stunned(RD2)", "Always_Ragdoll_When_Dead(RD3)" }, 32),
           new Value("Stationary Turning Threshold", typeof(float)),
           new Value("Jump Velocity", typeof(float)),
           new Value("Max Soft Landing Time", typeof(float)),
           new Value("Max Hard Landing Time", typeof(float)),
           new Value("Min Soft Landing Velocity", typeof(float)),
           new Value("Min Hard Landing Velocity", typeof(float)),
           new Value("Max Hard Landing Velocity", typeof(float)),
           new Value("Death Hard Landing Velocity", typeof(float)),
           new Value("Stun Duration", typeof(float)),
           new Value("Standing Camera Height", typeof(float)),
           new Value("Crouching Camera Height", typeof(float)),
           new Value("Crouch Trasition Time", typeof(float)),
           new Value("Camera Interpolation Start", typeof(float)),
           new Value("Camera Interpolation End", typeof(float)),
           new Value("Camera Forward Movement Scale", typeof(float)),
           new Value("Camera Side Movement Scale", typeof(float)),
           new Value("Camera Vertical Movement Scale", typeof(float)),
           new Value("Camera Exclusion Distance", typeof(float)),
           new Value("Autoaim Width", typeof(float)),
           new Bitmask("Flags", new string[] { "Locked_By_Human_Targeting", "Locked_By_Plasma_Targeting", "Always_Locked_By_Human_Targeting" }, 32),
           new Value("Lock On Distance", typeof(float)),
           new Unused(16),
           new Value("Head Shot Acc Scale", typeof(float)),
           new TagReference("Area_Damage_Effect"),
           new Bitmask("Flags", new string[] { "Centered_At_Origin", "Shape_Sperical", "Use_Player_Physics", "Climb_Any_Surface", "Flying", "Not_Physical", "Dead_Character_Collision_Group" }, 32),
           new Value("Height Standing", typeof(float)),
           new Value("Height Crouching", typeof(float)),
           new Value("Radius", typeof(float)),
           new Value("Mass", typeof(float)),
           new StringID("Living Material Name"),
           new StringID("Dead Material Name"),
           new Unused(4),
           new Reflexive("Dead Sphere Shapes", 128, 16, new MetaNode[] {
               new StringID("Name"),
               new Value("Material #", typeof(short)),
               new HaloObjects.Enum("Flags", new string[] { "unused" }, 16),
               new Value("Relative Mass Scale", typeof(float)),
               new Value("Friction", typeof(float)),
               new Value("Restitution", typeof(float)),
               new Value("Volume", typeof(float)),
               new Value("Mass", typeof(float)),
               new Value("Phantom", typeof(short)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Radius", typeof(float)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Rotation i i", typeof(float)),
               new Value("Rotation i j", typeof(float)),
               new Value("Rotation i k", typeof(float)),
               new Value("Rotation j i", typeof(float)),
               new Value("Rotation j j", typeof(float)),
               new Value("Rotation j k", typeof(float)),
               new Value("Rotation k i", typeof(float)),
               new Value("Rotation k j", typeof(float)),
               new Value("Rotation k k", typeof(float)),
               new Value("Translation i", typeof(float)),
               new Value("Translation j", typeof(float)),
               new Value("Translation k", typeof(float)),
               new Unused(38),
           }),
           new Reflexive("Pill Shapes", 80, new MetaNode[] { //16
               new StringID("Name"),
               new Value("Material #", typeof(short)),
               new HaloObjects.Enum("Flags", new string[] { "unused" }, 16),
               new Value("Relative Mass Scale", typeof(float)),
               new Value("Friction", typeof(float)),
               new Value("Restitution", typeof(float)),
               new Value("Volume", typeof(float)),
               new Value("Mass", typeof(float)),
               new Value("Phantom", typeof(short)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Radius", typeof(float)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Bottom i", typeof(float)),
               new Value("Bottom j", typeof(float)),
               new Value("Bottom k", typeof(float)),
               new Value("Top i", typeof(float)),
               new Value("Top j", typeof(float)),
               new Value("Top k", typeof(float)),
               new Unused(14),
           }),
           new Reflexive("Sphere Shapes", 128, new MetaNode[] { //16
               new StringID("Name"),
               new Value("Material #", typeof(short)),
               new HaloObjects.Enum("Flags", new string[] { "unused" }, 16),
               new Value("Relative Mass Scale", typeof(float)),
               new Value("Friction", typeof(float)),
               new Value("Restitution", typeof(float)),
               new Value("Volume", typeof(float)),
               new Value("Mass", typeof(float)),
               new Value("Phantom", typeof(short)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Radius", typeof(float)),
               new Value("Size", typeof(short)),
               new Value("Count", typeof(short)),
               new Value("Rotation i i", typeof(float)),
               new Value("Rotation i j", typeof(float)),
               new Value("Rotation i k", typeof(float)),
               new Value("Rotation j i", typeof(float)),
               new Value("Rotation j j", typeof(float)),
               new Value("Rotation j k", typeof(float)),
               new Value("Rotation k i", typeof(float)),
               new Value("Rotation k j", typeof(float)),
               new Value("Rotation k k", typeof(float)),
               new Value("Translation i", typeof(float)),
               new Value("Translation j", typeof(float)),
               new Value("Translation  k", typeof(float)),
               new Unused(38),
           }),
           new Value("Max Slope Angle", typeof(float)),
           new Value("Downhill Falloff Angle", typeof(float)),
           new Value("Downhill Cutoff Angle", typeof(float)),
           new Value("Uphill Falloff Angle", typeof(float)),
           new Value("Uphill Cutoff Angle", typeof(float)),
           new Value("Downhill Velocity Angle", typeof(float)),
           new Value("Uphill Velocity Scale", typeof(float)),
           new Value("Flying Bank Angle", typeof(float)),
           new Value("Flying Bank Apply Time", typeof(float)),
           new Value("Flying Pitch Ratio", typeof(float)),
           new Value("Flying Max Velocity", typeof(float)),
           new Value("Flying Max Sidestep Velocity", typeof(float)),
           new Value("Flying Acceleration", typeof(float)),
           new Value("Flying Deceleration", typeof(float)),
           new Value("Flying Angular Velocity Max", typeof(float)),
           new Value("Flying Angular Acceleration Max", typeof(float)),
           new Value("Flying Crouch Velocity Modifier", typeof(float)),
           new Unused(24),
           new Reflexive("Contact Points", 4, new MetaNode[] { 
               new StringID("Marker"),
           }),
           new TagReference("Reanimation_Character"),
           new TagReference("Death_Spawn_Character"),
           new Value("Spawn Count", typeof(short)),
           new Unused(2),
           });
       }
    }
}
