public StreamTriggerScriptContext StreamTriggerScriptGetContext(FA mode, Engine.BTriggerScriptType type, string name)
 {
     return(new StreamTriggerScriptContext
     {
         FileInfo = GetFileInfo(mode, type, name),
     });
 }
        static PhxEngine.XmlFileInfo GetFileInfo(FA mode, Engine.BTriggerScriptType type, string filename = null)
        {
            string root_name = Engine.BTriggerSystem.kXmlRootName;

            Engine.GameDirectory dir;
            var location = Engine.ContentStorage.Game;

            switch (type)
            {
            case Engine.BTriggerScriptType.TriggerScript:
                dir      = Engine.GameDirectory.TriggerScripts;
                location = Engine.ContentStorage.UpdateOrGame;                         // TUs have only included updated TS files only
                break;

            case Engine.BTriggerScriptType.Scenario:
                dir = Engine.GameDirectory.Scenario;
                break;

            case Engine.BTriggerScriptType.Ability:
                dir = Engine.GameDirectory.AbilityScripts;
                break;

            case Engine.BTriggerScriptType.Power:
                dir = Engine.GameDirectory.PowerScripts;
                break;

            default: throw new Debug.UnreachableException(type.ToString());
            }

            return(new PhxEngine.XmlFileInfo()
            {
                Location = location,
                Directory = dir,

                RootName = root_name,
                FileName = filename,

                Writable = mode == FA.Write,
            });
        }