public static void SaveXML(TalkerMakerProject talkerMakerProject, string xml_file, bool isJSON)
        {
            //This currently outputs crap made of shit and doesn't match standard.
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(TalkerMakerProject));
            XmlDocument   xmlDoc        = null;

            using (MemoryStream xmlStream = new MemoryStream())
            {
                xmlSerializer.Serialize(xmlStream, talkerMakerProject);

                xmlStream.Position = 0;

                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreWhitespace = true;

                using (var xtr = XmlReader.Create(xmlStream, settings))
                {
                    xmlDoc = new XmlDocument();
                    xmlDoc.Load(xtr);
                }
            }
            string jsonText = JsonConvert.SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.Indented, true);

            jsonText = Regex.Replace(jsonText, "(?<=\")(@)(?!.*\":\\s )", string.Empty, RegexOptions.IgnoreCase);
            File.WriteAllText(xml_file, jsonText);
        }
        public static void SaveXML(TalkerMakerProject talkerMakerProject, string xml_file)
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(TalkerMakerProject));
            StreamWriter  streamWriter  = new StreamWriter(xml_file, false, System.Text.Encoding.UTF8);

            xmlSerializer.Serialize(streamWriter, talkerMakerProject);
            streamWriter.Close();
        }
        private List<ConversationItem> AddConversations(TalkerMakerProject project)
        {
            List<ConversationItem> conversations = new List<ConversationItem>();
            foreach(Conversation conversation in project.Assets.Conversations)
            {
                ConversationItem conv = new ConversationItem();
                conv.lblConvID.Content = conversation.ID;
                conv.lblNodeCount.Content = conversation.DialogEntries.Count();
                foreach(Field field in conversation.Fields)
                {
                    switch(field.Title)
                    {
                        case "Title":
                            conv.lblConvTitle.Text = field.Value;
                            break;
                        case "Actor":
                            conv.lblConvActorID.Content = field.Value;
                            CharacterItem chara = lstCharacters.Items[Convert.ToInt16(field.Value)-1] as CharacterItem;
                            conv.lblConvActor.Text = chara.lblActorName.Text;
                            break;
                        case "Conversant":
                            conv.lblConvConversantID.Content = field.Value;
                            chara = lstCharacters.Items[Convert.ToInt16(field.Value)-1] as CharacterItem;
                            conv.lblConvConversant.Text = chara.lblActorName.Text;
                            break;
                        case "Description":
                            conv.lblConvDescription.Content = field.Value;
                            break;
                        case "Scene":
                            conv.lblconvScene.Content = field.Value;
                            break;
                    }
                }

                conversations.Add(conv);
            }

            return conversations;
        }
        private List<VariableItem> AddVariables(TalkerMakerProject project)
        {
            List<VariableItem> variables = new List<VariableItem>();
            foreach (UserVariable variable in project.Assets.UserVariables)
            {
                VariableItem var = new VariableItem();
                foreach (Field field in variable.Fields)
                {
                    switch (field.Title)
                    {
                        case "Name":
                            var.lblVarName.Text = field.Value;
                            break;
                        case "Description":
                            var.lblVarDescription.Content = field.Value;
                            break;
                        case "Initial Value":
                            var.lblVarType.Content = field.Type;
                            var.lblVarValue.Content = field.Value;
                            break;
                    }
                }

                variables.Add(var);
            }

            return variables;
        }
        private List<CharacterItem> AddActors(TalkerMakerProject project)
        {
            List<CharacterItem> actors = new List<CharacterItem>();
            foreach (Actor actor in project.Assets.Actors)
            {
                CharacterItem chara = new CharacterItem();
                //chara.pictureRow.Width = new GridLength(pictureWidth);
                chara.lblActorID.Content = actor.ID;
                chara.lblActorDescription.Content = "";
                chara.lblActorAge.Content = "";
                chara.lblActorGender.Content = "";
                chara.lblActorPicture.Content = "";
                chara.Name = "actor_" + actor.ID;
                foreach (Field field in actor.Fields)
                {
                    switch (field.Title)
                    {
                        case "Name":
                            chara.lblActorName.Text = field.Value;
                            break;
                        case "Age":
                            chara.lblActorAge.Content = field.Value;
                            break;
                        case "Gender":
                            chara.lblActorGender.Content = field.Value;
                            break;
                        case "IsPlayer":
                            chara.lblActorIsPlayer.Content = field.Value;
                            break;
                        case "Description":
                            chara.lblActorDescription.Content = field.Value;
                            break;
                        case "Pictures":
                            if(IsBase64(field.Value))
                            {
                                chara.imgActorImage.Source = Base64ToImage(field.Value);
                                chara.lblActorPicture.Content = field.Value;
                            }
                            break;
                    }
                }
                actors.Add(chara);
            }

            return actors;
        }
        void PrepareProject(string project)
        {
            projie = XMLHandler.LoadXML(project);

            currentNode = "";
            editConditions.Text = "";
            editScript.Text = "";
            tabBlank.IsSelected = true;
            lstVariables.ItemsSource = AddVariables(projie);
            txtSettingAuthor.Text = projie.Author;
            txtSettingProjectTitle.Text = projie.Title;
            txtSettingVersion.Text = projie.Version;

            lstCharacters.SelectedItem = null;
            lstConversations.SelectedItem = null;
            lstDialogueActor.SelectedItem = null;
            lstDialogueConversant.SelectedItem = null;
            lstConvoActor.SelectedItem = null;
            lstConvoConversant.SelectedItem = null;
            lstVariables.SelectedItem = null;

            lstCharacters.ItemsSource = AddActors(projie);
            lstDialogueActor.ItemsSource = AddActors(projie);
            lstDialogueConversant.ItemsSource = AddActors(projie);
            lstConvoActor.ItemsSource = AddActors(projie);
            lstConvoConversant.ItemsSource = AddActors(projie);
            lstConversations.ItemsSource = AddConversations(projie);
            loadedConversation = 0;
            editConditions.Text = "";
            editScript.Text = "";
            LoadConversation(0);
        }
        void PrepareProject()
        {
            Assembly _assembly = Assembly.GetExecutingAssembly();
            projie = XMLHandler.LoadXML(_assembly.GetManifestResourceStream("TalkerMakerDeluxe.NewProjectTemplate.xml"));

            currentNode = "";
            editConditions.Text = "";
            editScript.Text = "";
            tabBlank.IsSelected = true;
            txtSettingAuthor.Text = projie.Author;
            txtSettingProjectTitle.Text = projie.Title;
            txtSettingVersion.Text = projie.Version;

            lstCharacters.SelectedItem = null;
            lstConversations.SelectedItem = null;
            lstDialogueActor.SelectedItem = null;
            lstDialogueConversant.SelectedItem = null;
            lstConvoActor.SelectedItem = null;
            lstConvoConversant.SelectedItem = null;
            lstVariables.SelectedItem = null;

            lstCharacters.ItemsSource = AddActors(projie);
            lstDialogueActor.ItemsSource = AddActors(projie);
            lstDialogueConversant.ItemsSource = AddActors(projie);
            lstConvoActor.ItemsSource = AddActors(projie);
            lstConvoConversant.ItemsSource = AddActors(projie);
            lstConversations.ItemsSource = AddConversations(projie);
            lstVariables.ItemsSource = AddVariables(projie);
            loadedConversation = 0;
            editConditions.Text = "";
            editScript.Text = "";
            LoadConversation(0);
        }
        public static void SaveXML(TalkerMakerProject talkerMakerProject, string xml_file, bool isJSON)
        {
            //This currently outputs crap made of shit and doesn't match standard.
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(TalkerMakerProject));
            XmlDocument xmlDoc = null;

            using (MemoryStream xmlStream = new MemoryStream())
            {
                xmlSerializer.Serialize(xmlStream, talkerMakerProject);

                xmlStream.Position = 0;

                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreWhitespace = true;

                using (var xtr = XmlReader.Create(xmlStream, settings))
                {
                    xmlDoc = new XmlDocument();
                    xmlDoc.Load(xtr);
                }
            }
            string jsonText = JsonConvert.SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.Indented, true);
            jsonText = Regex.Replace(jsonText, "(?<=\")(@)(?!.*\":\\s )", string.Empty, RegexOptions.IgnoreCase);
            File.WriteAllText(xml_file, jsonText);
        }
 public static void SaveXML(TalkerMakerProject talkerMakerProject, string xml_file)
 {
     XmlSerializer xmlSerializer = new XmlSerializer(typeof(TalkerMakerProject));
     StreamWriter streamWriter = new StreamWriter(xml_file, false, System.Text.Encoding.UTF8);
     xmlSerializer.Serialize(streamWriter, talkerMakerProject);
     streamWriter.Close();
 }