Пример #1
0
        public DialogueNodeSentence(DialogueNodeSentence other)
            : base(other)
        {
            Sentence   = other.Sentence;
            SpeakerID  = other.SpeakerID;
            ListenerID = other.ListenerID;

            VoicingID      = "";
            LastEditDate   = Utility.GetCurrentTime();
            HideSubtitle   = other.HideSubtitle;
            Context        = other.Context;
            Comment        = other.Comment;
            VoiceIntensity = other.VoiceIntensity;

            SpeakerAnimset  = other.SpeakerAnimset;
            ListenerAnimset = other.ListenerAnimset;
            SpeakerAnim     = other.SpeakerAnim;
            ListenerAnim    = other.ListenerAnim;

            PreDelay  = other.PreDelay;
            PostDelay = other.PostDelay;

            Camera          = other.Camera;
            CameraBlendTime = other.CameraBlendTime;
        }
Пример #2
0
        static public void ExportDialoguesToWwiseTextFile(string directory, Project project, List <Dialogue> dialogues, Language language, DateTime dateFrom)
        {
            string path = Path.Combine(directory, "Wwise_" + project.GetName() + "_" + language.VoicingCode + ".txt");

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, false, Encoding.Unicode))
            {
                file.WriteLine("Filename\tContainer\tSVComment\tComment");

                foreach (Dialogue dialogue in dialogues)
                {
                    var orderedListNodes = new List <DialogueNode>();
                    dialogue.GetOrderedNodes(ref orderedListNodes);
                    foreach (DialogueNode dialogueNode in orderedListNodes)
                    {
                        if (dialogueNode is DialogueNodeSentence)
                        {
                            DialogueNodeSentence dialogueNodeSentence = dialogueNode as DialogueNodeSentence;
                            //if (dialogueNodeSentence.LastEditDate < dateFrom)   //No need for that, reexport everything
                            //    continue;

                            string nodeID     = EditorHelper.GetPrettyNodeVoicingID(dialogue, dialogueNodeSentence);
                            string container  = dialogue.SceneType;
                            string speaker    = project.GetActorName(dialogueNodeSentence.SpeakerID);
                            string voicedText = EditorHelper.FormatTextEntry(dialogueNodeSentence.Sentence, language);  //language = workstring if workstringOnly

                            if (speaker == "")
                            {
                                speaker = "Undefined";
                            }

                            //Filename, Container, SVComment, Comment
                            file.WriteLine(nodeID + "\t" + container + "\t" + speaker + "\t" + voicedText);
                        }
                    }
                }
            }
        }
Пример #3
0
        static public void ExportToUnrealManifest(string directory, Project project, List <Dialogue> dialogues)
        {
            string path = Path.Combine(directory, "Dialogues.manifest");

            UEManifestRoot root = new UEManifestRoot();

            root.FormatVersion = 1;
            root.Namespace     = "";
            root.Children      = new List <UEManifestEntry>();

            foreach (Dialogue dialogue in dialogues)
            {
                var orderedListNodes = new List <DialogueNode>();
                dialogue.GetOrderedNodes(ref orderedListNodes);
                foreach (DialogueNode dialogueNode in orderedListNodes)
                {
                    if (dialogueNode is DialogueNodeSentence)
                    {
                        DialogueNodeSentence sentence = (dialogueNode as DialogueNodeSentence);
                        AddUEManifestEntry(root, sentence.Sentence);
                    }
                    else if (dialogueNode is DialogueNodeReply)
                    {
                        DialogueNodeReply reply = (dialogueNode as DialogueNodeReply);
                        AddUEManifestEntry(root, reply.Reply);
                    }
                }
            }

            using (StreamWriter file = File.CreateText(path))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Formatting = Formatting.Indented;
                serializer.Serialize(file, root);
            }
        }
Пример #4
0
        public void PreSave(Project project)
        {
            //Prepare File
            VersionProject = EditorCore.VersionProject;
            VersionEditor  = EditorVersion.GetVersion();

            if (Package == null)
            {
                EditorCore.LogError("Saving a Dialogue without Package (forcing default) : " + GetName(), this);
                Package = project.GetDefaultPackage();
            }

            if (Package != null)
            {
                PackageName = Package.Name;
            }

            //Sanitize texts
            //dialogue.Comment = EditorCore.SanitizeText(dialogue.Comment);

            //Prepare nodes links
            RootNodeID = (RootNode != null) ? RootNode.ID : DialogueNode.ID_NULL;

            foreach (DialogueNode node in ListNodes)
            {
                node.NextID = (node.Next != null) ? node.Next.ID : DialogueNode.ID_NULL;

                if (node is DialogueNodeSentence)
                {
                    //Generate ID
                    DialogueNodeSentence nodeSentence = node as DialogueNodeSentence;
                    nodeSentence.VoicingID = EditorHelper.GetPrettyNodeVoicingID(this, nodeSentence);

                    //Sanitize texts
                    nodeSentence.Sentence = EditorHelper.SanitizeText(nodeSentence.Sentence);
                    //nodeSentence.Comment = EditorHelper.SanitizeText(nodeSentence.Comment);
                }
                else if (node is DialogueNodeChoice)
                {
                    DialogueNodeChoice nodeChoice = node as DialogueNodeChoice;

                    //Sanitize texts
                    nodeChoice.Choice = EditorHelper.SanitizeText(nodeChoice.Choice);

                    nodeChoice.RepliesIDs.Clear();
                    foreach (DialogueNodeReply nodeReply in nodeChoice.Replies)
                    {
                        //Sanitize texts
                        nodeReply.Reply = EditorHelper.SanitizeText(nodeReply.Reply);

                        nodeChoice.RepliesIDs.Add(nodeReply.ID);
                    }
                }
                else if (node is DialogueNodeGoto)
                {
                    DialogueNodeGoto nodeGoto = node as DialogueNodeGoto;
                    nodeGoto.GotoID = (nodeGoto.Goto != null) ? nodeGoto.Goto.ID : DialogueNode.ID_NULL;
                }
                else if (node is DialogueNodeBranch)
                {
                    DialogueNodeBranch nodeBranch = node as DialogueNodeBranch;
                    nodeBranch.BranchID = (nodeBranch.Branch != null) ? nodeBranch.Branch.ID : DialogueNode.ID_NULL;
                }
            }
        }
Пример #5
0
        public void ShowDialogueNodeProperties(DocumentDialogue document, TreeNode treeNode, DialogueNode dialogueNode)
        {
            //SetDoubleBuffered(LayoutPanel);

            WIN32.StopRedraw(this);
            //SuspendLayout();

            Clear();

            if (dialogueNode is DialogueNodeRoot)
            {
                DialogueNodeRoot castNode = dialogueNode as DialogueNodeRoot;

                FormPropertiesRoot properties = new FormPropertiesRoot();
                properties.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }
            else if (dialogueNode is DialogueNodeSentence)
            {
                DialogueNodeSentence castNode = dialogueNode as DialogueNodeSentence;

                FormPropertiesSentence properties = new FormPropertiesSentence();
                properties.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }
            else if (dialogueNode is DialogueNodeChoice)
            {
                DialogueNodeChoice castNode = dialogueNode as DialogueNodeChoice;

                FormPropertiesChoice properties = new FormPropertiesChoice();
                properties.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }
            else if (dialogueNode is DialogueNodeReply)
            {
                DialogueNodeReply castNode = dialogueNode as DialogueNodeReply;

                FormPropertiesReply properties = new FormPropertiesReply();
                properties.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }
            else if (dialogueNode is DialogueNodeGoto)
            {
                DialogueNodeGoto castNode = dialogueNode as DialogueNodeGoto;

                //FormPropertiesGoto properties = new FormPropertiesGoto();
                //properties.Init(document, treeNode, castNode);
                //layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }
            else if (dialogueNode is DialogueNodeBranch)
            {
                DialogueNodeBranch castNode = dialogueNode as DialogueNodeBranch;

                FormPropertiesBranch properties = new FormPropertiesBranch();
                properties.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(properties);

                FormPropertiesCommon propertiesCommon = new FormPropertiesCommon();
                propertiesCommon.Init(document, treeNode, castNode);
                layoutPanel.Controls.Add(propertiesCommon);
            }

            layoutPanel.VerticalScroll.Value = 0;

            //ResumeLayout();

            WIN32.ResumeRedraw(this);
            this.Refresh();
        }
        public void Init(DocumentDialogue inDocument, TreeNode inTreeNode, DialogueNodeSentence inDialogueNode)
        {
            document     = inDocument;
            treeNode     = inTreeNode;
            dialogueNode = inDialogueNode;

            Project project = ResourcesHandler.Project;

            //Text
            textBoxWorkstring.Text = dialogueNode.Sentence;
            RefreshWordCount();

            //Actors
            if (ResourcesHandler.Project.ListActors.Count > 0)
            {
                var actors = new Dictionary <string, string>();
                actors.Add("", "");
                foreach (Actor actor in project.ListActors)
                {
                    actors.Add(actor.ID, actor.Name);
                }

                comboBoxSpeaker.DataSource    = new BindingSource(actors, null);
                comboBoxSpeaker.ValueMember   = "Key";
                comboBoxSpeaker.DisplayMember = "Value";

                comboBoxListener.DataSource    = new BindingSource(actors, null);
                comboBoxListener.ValueMember   = "Key";
                comboBoxListener.DisplayMember = "Value";

                comboBoxSpeaker.SelectedValue  = dialogueNode.SpeakerID;
                comboBoxListener.SelectedValue = dialogueNode.ListenerID;
            }

            //Anims
            RefreshAnimSetList(comboBoxAnimsetSpeaker, dialogueNode.SpeakerID);
            RefreshAnimSetList(comboBoxAnimsetListener, dialogueNode.ListenerID);

            comboBoxAnimsetSpeaker.SelectedItem  = dialogueNode.SpeakerAnimset;
            comboBoxAnimsetListener.SelectedItem = dialogueNode.ListenerAnimset;

            RefreshAnimList(comboBoxAnimsetSpeaker, comboBoxAnimSpeaker);
            RefreshAnimList(comboBoxAnimsetListener, comboBoxAnimListener);

            comboBoxAnimSpeaker.SelectedValue  = dialogueNode.SpeakerAnim;
            comboBoxAnimListener.SelectedValue = dialogueNode.ListenerAnim;

            //Voicing
            checkBoxHideSubtitle.Checked = dialogueNode.HideSubtitle;
            textBoxComment.Text          = dialogueNode.Comment;
            textBoxContext.Text          = dialogueNode.Context;

            //Delays
            textBoxPreDelay.Text  = dialogueNode.PreDelay.ToString();
            textBoxPostDelay.Text = dialogueNode.PostDelay.ToString();

            comboBoxIntensity.DataSource    = new BindingSource(EditorCore.CustomLists["Intensities"], null);
            comboBoxIntensity.ValueMember   = "Key";
            comboBoxIntensity.DisplayMember = "Value";
            comboBoxIntensity.SelectedValue = dialogueNode.VoiceIntensity;

            //Portraits
            RefreshPortraits();

            //AutoComplete
            autoComplete            = new AutoComplete(this, new BindingSource(project.ListConstants, null));
            autoComplete.OnValidate = ValidateAutoComplete;
            autoComplete.OnClose    = CloseAutoComplete;
            autoComplete.OnDrawItem = DrawItemAutoComplete;

            comboBoxCamera.DataSource    = new BindingSource(EditorCore.CustomLists["Cameras"], null);
            comboBoxCamera.ValueMember   = "Key";
            comboBoxCamera.DisplayMember = "Value";
            comboBoxCamera.SelectedValue = dialogueNode.Camera;
            textBoxCameraBlendTime.Text  = dialogueNode.CameraBlendTime.ToString();

            //Ready !
            ready = true;
        }
Пример #7
0
        static public void ExportLocasToCSVFile(string directory, Project project, List <Dialogue> dialogues, Language language, bool workstringOnly, bool workstringFallback, DateTime dateFrom, ExporterStats.ProjectStats projectStats)
        {
            string path = Path.Combine(directory, "Loca_" + project.GetName() + "_" + language.VoicingCode + ".csv");

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, false, Encoding.UTF8))
            {
                //status, scene, voicing id, index, speaker, context, voicing comments, intensity, sentence, comments
                {
                    ExporterCsv.CsvLineWriter header = new ExporterCsv.CsvLineWriter();
                    header.AddField("Status");
                    header.AddField("Dialogue");
                    header.AddField("Voicing ID");
                    header.AddField("Index");
                    header.AddField("Speaker");
                    header.AddField("Context");
                    header.AddField("Voicing Comments");
                    header.AddField("Voicing Intensity");
                    header.AddField("Sentence");
                    header.AddField("Comments");
                    header.WriteLine(file);
                }

                foreach (Dialogue dialogue in dialogues)
                {
                    int index = 1;

                    var orderedListNodes = new List <DialogueNode>();
                    dialogue.GetOrderedNodes(ref orderedListNodes);
                    foreach (DialogueNode dialogueNode in orderedListNodes)
                    {
                        if (dialogueNode is DialogueNodeSentence)
                        {
                            DialogueNodeSentence dialogueNodeSentence = dialogueNode as DialogueNodeSentence;

                            bool done = false;
                            if (dialogueNodeSentence.LastEditDate < dateFrom)
                            {
                                done = true;
                            }

                            string nodeID    = EditorHelper.GetPrettyNodeVoicingID(dialogue, dialogueNodeSentence);
                            string speaker   = project.GetActorName(dialogueNodeSentence.SpeakerID);
                            string scene     = dialogue.GetName();
                            string context   = dialogueNodeSentence.Context;
                            string comment   = dialogueNodeSentence.Comment;
                            string intensity = dialogueNodeSentence.VoiceIntensity;
                            string status    = (done) ? "OK" : "TODO";

                            string voicedText = dialogueNodeSentence.Sentence;
                            if (!workstringOnly)
                            {
                                TranslationEntry entry = dialogue.Translations.GetNodeEntry(dialogueNode, language);
                                if (entry == null)
                                {
                                    if (!workstringFallback)
                                    {
                                        voicedText = "<Missing Translation>";
                                    }
                                }
                                else
                                {
                                    voicedText = entry.Text;
                                }
                            }

                            // use null as langage to force constant replacement in csv file
                            voicedText = EditorHelper.FormatTextEntry(voicedText, null);  //language = workstring if workstringOnly

                            //voicedText = voicedText.Replace("’", "'");
                            //voicedText = voicedText.Replace("…", "...");

                            if (speaker == "")
                            {
                                speaker = "<Undefined>";
                            }

                            //status, scene, node id, index, speaker, context, voicing comments, intensity, sentence, comments
                            ExporterCsv.CsvLineWriter line = new ExporterCsv.CsvLineWriter();
                            line.AddField(status);
                            line.AddField(scene);
                            line.AddField(nodeID);
                            line.AddField(index);
                            line.AddField(speaker);
                            line.AddField(context);
                            line.AddField(comment);
                            line.AddField(intensity);
                            line.AddField(voicedText);
                            line.AddEmptyField();
                            line.WriteLine(file);

                            ++index;

                            if (!done)
                            {
                                projectStats.AddSentence(dialogue, dialogueNodeSentence.SpeakerID, voicedText);
                            }
                        }
                    }
                }
            }
        }