Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="groups"></param>
        /// <param name="rawData">Represents the current contents of the file. Reference is not held. A copy is made.</param>
        /// <param name="file"></param>
        /// <param name="serializer"></param>
        /// <param name="errors"></param>
        /// <param name="nodeFactory"></param>
        /// <param name="generateAudio"></param>
        /// <param name="getDocumentSource"></param>
        /// <param name="audioProvider"></param>
        public ConversationFile(Id <FileInProject> id, IEnumerable <GraphAndUI <NodeUIData> > nodes, IEnumerable <NodeGroup> groups, MemoryStream rawData, DocumentPath file, ISerializer <TData> serializer,
                                ReadOnlyCollection <LoadError> errors, INodeFactory nodeFactory, GenerateAudio generateAudio,
                                Func <IDynamicEnumParameter, object, DynamicEnumParameter.Source> getDocumentSource, IAudioLibrary audioProvider, UpToDateFile.BackEnd backEnd)
            : base(nodes, groups, errors, nodeFactory, generateAudio, getDocumentSource, audioProvider)
        {
            Id           = id;
            m_file       = new SaveableFileUndoable(rawData, file.FileInfo, SaveTo, backEnd);
            m_serializer = serializer;

            foreach (var node in m_nodes)
            {
                //TODO: AUDIO: Why are we automatically decorrupting specifically audio parameters?
                var audios = node.Data.Parameters.OfType <IAudioParameter>();
                foreach (var aud in audios)
                {
                    if (aud.Corrupted)
                    {
                        var val = generateAudio(this);
                        aud.SetValueAction(val).Value.Redo();
                        m_file.ChangeNoUndo();
                        audioProvider.UpdateUsage(val);
                    }
                }
                node.UpdateRendererCorruption();
            }
        }
Example #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="nodes"></param>
 /// <param name="groups"></param>
 /// <param name="rawData">Represents the current contents of the file. Reference is not held. A copy is made.</param>
 /// <param name="file"></param>
 /// <param name="errors"></param>
 /// <param name="datasource"></param>
 /// <param name="serializer"></param>
 /// <param name="nodeFactory"></param>
 /// <param name="domainUsage"></param>
 /// <param name="getDocumentSource"></param>
 /// <param name="autoCompletePatterns"></param>
 public DomainFile(IEnumerable <GraphAndUI <NodeUIData> > nodes, IEnumerable <NodeGroup> groups, MemoryStream rawData, Id <FileInProject> file, DocumentPath path, ReadOnlyCollection <LoadError> errors, DomainDomain datasource, ISerializer <TData> serializer, INodeFactory nodeFactory, Func <IDomainUsage <ConversationNode, TransitionNoduleUIInfo> > domainUsage, Func <IDynamicEnumParameter, object, DynamicEnumParameter.Source> getDocumentSource, IEnumerable <IAutoCompletePattern> autoCompletePatterns, UpToDateFile.BackEnd backEnd)
     : base(nodes, groups, errors, nodeFactory, null, getDocumentSource, NoAudio.Instance)
 {
     Id            = file;
     m_file        = new SaveableFileUndoable(rawData, path.FileInfo, SaveTo, backEnd);
     m_domainUsage = domainUsage;
     foreach (var node in m_nodes)
     {
         var n = node;
         node.Modified    += () => NodeModified(n);
         node.Data.Linked += () => NodeLinked(n);
     }
     m_nodes.Inserting += (n) =>
     {
         AddToData(n.Data.Only(), m_datasource);
         ConversationDomainModified.Execute(); //No need to be picky about false positives
         n.Modified    += () => NodeModified(n);
         n.Data.Linked += () => NodeLinked(n);
     };
     m_nodes.Removing += RemoveFromData;
     m_nodes.Clearing += ClearData; //Currently nothing clears the list
     m_datasource      = datasource;
     //m_conversationDatasource = conversationDataSource;
     m_serializer           = serializer;
     m_autoCompletePatterns = new List <IAutoCompletePattern>(autoCompletePatterns);
 }