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

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

       public adlg()
       {
           Fields.AddRange(new MetaNode[] {
           new Reflexive("Vocalizations", 96, new MetaNode[] { 
               new StringID("Vocalization"),
               new StringID("Parent Vocalization"),
               new Value("Parent Index", typeof(short)),
               new HaloObjects.Enum("Priority", new string[] { "None", "Recall", "Idle", "Comment", "Idle-Response", "Post_Combat", "Combat", "Status", "Respond", "Warn", "Act", "React", "Involentary", "Scream", "Scripted", "Death" }, 16),
               new Bitmask("FLags", new string[] { "Immediate", "Interupt", "Cancel_Low_Priority" }, 32),
               new HaloObjects.Enum("Glance Behavior", new string[] { "Subject_Short", "Subject_Long", "Cause_Short", "Cause_Long", "Friend_Short", "Friend_Long" }, 16),
               new HaloObjects.Enum("Glance Recipiant Behavior", new string[] { "Subject_Short", "Subject_Long", "Cause_Short", "Cause_Long", "Friend_Short", "Friend_Long" }, 16),
               new HaloObjects.Enum("Perception Type", new string[] { "None", "Speaker", "Listener" }, 16),
               new HaloObjects.Enum("Max Combat Status", new string[] { "Asleep", "Idle", "Alert", "Active", "Uninspected", "Definite", "Certain", "Visible", "Clear_Los", "Dangerous" }, 16),
               new HaloObjects.Enum("Animation Impulse", new string[] { "None", "Shake-Fist", "Cheer", "Surprise-Front", "Surprise-Back", "Taunt", "Brace", "Point", "Hold", "Wave", "Advance", "Fallback" }, 16),
               new HaloObjects.Enum("Overlap Priority", new string[] { "None", "Recall", "Idle", "Comment", "Idle-Response", "Post_Combat", "Combat", "Status", "Respond", "Warn", "Act", "React", "Involentary", "Scream", "Scripted", "Death" }, 16),
               new Value("Sound Repetition Delay [Seconds]", typeof(float)),
               new Value("Allowable Quenue Delay [Seconds]", typeof(float)),
               new Value("Pre Voc. Delay [Seconds]", typeof(float)),
               new Value("Notification Delay [Seconds]", typeof(float)),
               new Value("Post Voc. Delay [Seconds]", typeof(float)),
               new Value("Repeat Delay [Seconds]", typeof(float)),
               new Value("Weight", typeof(float)),
               new Value("Speaker Freeze Time", typeof(float)),
               new Value("Listener Freeze Time", typeof(float)),
               new HaloObjects.Enum("Speaker Emotion", new string[] { "None", "Asleep", "Amorous", "Happy", "Inquisitive", "Repulsed", "Dissapointed", "Shocked", "Scared", "Arrogant", "Annoyed", "Angry", "Pensive", "Pain" }, 16),
               new HaloObjects.Enum("Listener Emotion", new string[] { "None", "Asleep", "Amorous", "Happy", "Inquisitive", "Repulsed", "Dissapointed", "Shocked", "Scared", "Arrogant", "Annoyed", "Angry", "Pensive", "Pain" }, 16),
               new Value("Player Skip Fraction", typeof(float)),
               new Value("Skip Fraction", typeof(float)),
               new StringID("Sample Line"),
               new Reflexive("Responses", 12, new MetaNode[] { 
                   new StringID("Vocalization Name"),
                   new Bitmask("Flags", new string[] { "Non-Exclusive", "Trigger_Response" }, 32),
                   new Value("Vocalization Index (Post Process)", typeof(byte)),
                   new HaloObjects.Enum("Reponse Type", new string[] { "Friend", "Enemy", "Listener", "Point", "Peer" }, 16),
                   new Unused(1),
               }),
               new Unused(8),
           }),
           new Reflexive("Killing/Cautious Dialog", 64, new MetaNode[] { 
               new Value("Unknown", typeof(int)),
               new StringID("Situation"),
               new Value("Unknown", typeof(int)),
               new Value("Unknown", typeof(int)),
               new Unused(4),
               new Value("Unknown", typeof(int)),
               new Value("Unknown", typeof(int)),
               new Unused(4),
               new Value("Unknown", typeof(int)),
               new Value("Unknown", typeof(int)),
               new StringID("Unknown"),
               new Value("Unknown", typeof(int)),
               new StringID("Unknown"),
               new Unused(8),
               new Value("Unknown", typeof(int)),
           }),
           new Unused(12),
           new Reflexive("Dialogue Data", 4, new MetaNode[] { 
               new Value("Start Index", typeof(short)),
               new Value("Length", typeof(short)),
           }),
           new Reflexive("Involuntary Data", 4, new MetaNode[] { 
               new Value("Involuntary Localization Index", typeof(int)),
           }),
           });
       }
    }
}
