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; }
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); } } } } }
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); } }
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; } } }
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; }
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); } } } } } }