Example #1
0
 private void CreateDialogueDatabase(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
 {
     try {
         string           databaseAssetName = prefs.useProjectName ? chatMapperProject.Title : prefs.databaseName;
         DialogueDatabase database          = LoadOrCreateDatabase(databaseAssetName);
         if (database == null)
         {
             Debug.LogError(string.Format("{0}: Couldn't create asset '{1}'.", DialogueDebug.Prefix, databaseAssetName));
         }
         else
         {
             ConvertProjectAttributes(chatMapperProject, database);
             ConvertActors(chatMapperProject, database);
             ConvertItems(chatMapperProject, database);
             ConvertLocations(chatMapperProject, database);
             ConvertVariables(chatMapperProject, database);
             ConvertConversations(chatMapperProject, database);
             SaveDatabase(database, databaseAssetName);
             Debug.Log(string.Format("{0}: Created database '{1}' containing {2} actors, {3} conversations, {4} items (quests), {5} variables, and {6} locations.",
                                     DialogueDebug.Prefix, databaseAssetName, database.actors.Count, database.conversations.Count, database.items.Count, database.variables.Count, database.locations.Count));
         }
     } finally {
         EditorUtility.ClearProgressBar();
     }
 }
        /// <summary>
        /// Converts a Chat Mapper project to a dialogue database.
        /// </summary>
        /// <returns>The dialogue database, or <c>null</c> if a conversation error occurred.</returns>
        /// <param name="chatMapperProject">Chat Mapper project.</param>
        public static DialogueDatabase ConvertToDialogueDatabase(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
        {
            var database = DatabaseUtility.CreateDialogueDatabaseInstance();

            if (database == null)
            {
                if (DialogueDebug.logErrors)
                {
                    Debug.LogError(string.Format("{0}: Couldn't convert Chat Mapper project '{1}'.", new System.Object[] { DialogueDebug.Prefix, chatMapperProject.Title }));
                }
            }
            else
            {
                ConvertProjectAttributes(chatMapperProject, database);
                ConvertActors(chatMapperProject, database);
                ConvertItems(chatMapperProject, database);
                ConvertLocations(chatMapperProject, database);
                ConvertVariables(chatMapperProject, database);
                ConvertConversations(chatMapperProject, database);
                if (DialogueDebug.logInfo)
                {
                    Debug.Log(string.Format("{0}: Converted Chat Mapper project '{1}' containing {2} actors, {3} conversations, {4} items (quests), {5} variables, and {6} locations.",
                                            new System.Object[] { DialogueDebug.Prefix, chatMapperProject.Title, database.actors.Count, database.conversations.Count, database.items.Count, database.variables.Count, database.locations.Count }));
                }
            }
            return(database);
        }
Example #3
0
 private bool IsChatMapperProjectMissingValues(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
 {
     return((chatMapperProject == null) ||
            ((chatMapperProject.Assets.Actors.Count > 0) &&
             (chatMapperProject.Assets.Actors[0].Fields.Count > 0) &&
             (chatMapperProject.Assets.Actors[0].Fields[0].Value == null)));
 }
 private static void ConvertConversations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.conversations = new List <Conversation>();
     foreach (var chatMapperConversation in chatMapperProject.Assets.Conversations)
     {
         Conversation conversation = new Conversation(chatMapperConversation);
         SetConversationStartCutsceneToNone(conversation);
         ConvertAudioFilesToSequences(conversation);
         foreach (DialogueEntry entry in conversation.dialogueEntries)
         {
             foreach (Link link in entry.outgoingLinks)
             {
                 if (link.destinationConversationID == 0)
                 {
                     link.destinationConversationID = conversation.id;
                 }
                 if (link.originConversationID == 0)
                 {
                     link.originConversationID = conversation.id;
                 }
             }
         }
         database.conversations.Add(conversation);
     }
     FixConversationsLinkedToFirstEntry(database);
 }
 private static void ConvertLocations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.locations = new List <Location>();
     foreach (var chatMapperLocation in chatMapperProject.Assets.Locations)
     {
         database.locations.Add(new Location(chatMapperLocation));
     }
 }
 private static void ConvertItems(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.items = new List <Item>();
     foreach (var chatMapperItem in chatMapperProject.Assets.Items)
     {
         database.items.Add(new Item(chatMapperItem));
     }
 }
 private static void ConvertActors(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.actors = new List <Actor>();
     foreach (var chatMapperActor in chatMapperProject.Assets.Actors)
     {
         database.actors.Add(new Actor(chatMapperActor));
     }
 }
Example #8
0
 private void ConvertConversations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.conversations = new List <Conversation>();
     foreach (var chatMapperConversation in chatMapperProject.Assets.Conversations)
     {
         Conversation conversation = new Conversation(chatMapperConversation);
         SetConversationStartCutsceneToNone(conversation);
         ConvertAudioFilesToSequences(conversation);
         database.conversations.Add(conversation);
     }
 }
Example #9
0
 private void ConvertProjectAttributes(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.version             = chatMapperProject.Version;
     database.author              = chatMapperProject.Author;
     database.description         = chatMapperProject.Description;
     database.globalUserScript    = chatMapperProject.UserScript;
     database.emphasisSettings[0] = new EmphasisSetting(chatMapperProject.EmphasisColor1, chatMapperProject.EmphasisStyle1);
     database.emphasisSettings[1] = new EmphasisSetting(chatMapperProject.EmphasisColor2, chatMapperProject.EmphasisStyle2);
     database.emphasisSettings[2] = new EmphasisSetting(chatMapperProject.EmphasisColor3, chatMapperProject.EmphasisStyle3);
     database.emphasisSettings[3] = new EmphasisSetting(chatMapperProject.EmphasisColor4, chatMapperProject.EmphasisStyle4);
 }
Example #10
0
 private void ConvertConversations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.conversations = new List <Conversation>();
     foreach (var chatMapperConversation in chatMapperProject.Assets.Conversations)
     {
         Conversation conversation = new Conversation(chatMapperConversation, prefs.putEndSequenceOnLastSplit);
         SetConversationStartCutsceneToNone(conversation);
         ChatMapperToDialogueDatabase.ConvertAudioFilesToSequences(conversation);
         database.conversations.Add(conversation);
     }
     ChatMapperToDialogueDatabase.FixConversationsLinkedToFirstEntry(database);
 }
Example #11
0
        private void ConvertVariables(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
        {
            database.variables = new List <Variable>();
            int id = 0;

            foreach (var chatMapperVariable in chatMapperProject.Assets.UserVariables)
            {
                Variable variable = new Variable(chatMapperVariable);
                variable.id = id;
                id++;
                database.variables.Add(variable);
            }
        }
Example #12
0
 private bool IsValidChatMapperProject(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, string projectFilename)
 {
     if (chatMapperProject == null)
     {
         return(false);
     }
     else if (IsChatMapperProjectMissingValues(chatMapperProject))
     {
         Debug.LogError(string.Format("{0}: Chat Mapper may not have exported {1} correctly. Please use Chat Mapper 1.3.x or 1.6.1.1+.", DialogueDebug.Prefix, projectFilename));
         return(false);
     }
     else
     {
         return(true);
     }
 }
Example #13
0
        public void ConvertChatMapperProject(string projectFilename)
        {
            if (string.IsNullOrEmpty(projectFilename))
            {
                return;
            }
            if (!System.IO.Directory.Exists(prefs.outputFolder))
            {
                Debug.LogError(string.Format("{0}: Folder '{1}' doesn't exist. Please create this folder before converting.", DialogueDebug.Prefix, prefs.outputFolder));
                return;
            }
            string xmlFilename = projectFilename;

            if (prefs.projectFormat == ChatMapperProjectFormat.Cmp)
            {
                xmlFilename = projectFilename.Substring(0, projectFilename.Length - 3) + "xml";
            }
            PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject = null;
            try
            {
                chatMapperProject = LoadChatMapperProject(xmlFilename);
            }
            catch (System.Exception e)
            {
                Debug.LogError(string.Format("{0}: Chat Mapper encountered an error converting {1}. Please check the Chat Mapper console window. Error: {2}", DialogueDebug.Prefix, projectFilename, e.Message));
            }
            if (IsValidChatMapperProject(chatMapperProject, projectFilename))
            {
                Debug.Log(string.Format("{0}: Loaded {1}.", DialogueDebug.Prefix, xmlFilename));
                try
                {
                    CreateDialogueDatabase(chatMapperProject);
                }
                catch (System.Exception e)
                {
                    Debug.LogError(string.Format("{0}: An internal conversion error occurred while converting {1}. Please check the Console view and contact Pixel Crushers support. Error: {2}", DialogueDebug.Prefix, projectFilename, e.Message));
                    EditorUtility.DisplayDialog("Internal Conversion Error", "Please check the Console view and contact Pixel Crushers support.", "OK");
                }
            }
            else
            {
                Debug.LogError(string.Format("{0}: Failed to load {1}.", DialogueDebug.Prefix, xmlFilename));
            }
        }
Example #14
0
 private void ConvertLocations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.locations = new List <Location>();
     chatMapperProject.Assets.Locations.ForEach(l => database.locations.Add(new Location(l)));
 }
Example #15
0
 private void ConvertItems(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.items = new List <Item>();
     chatMapperProject.Assets.Items.ForEach(i => database.items.Add(new Item(i)));
 }
Example #16
0
 private void ConvertActors(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.actors = new List <Actor>();
     chatMapperProject.Assets.Actors.ForEach(a => database.actors.Add(new Actor(a)));
     database.actors.ForEach(a => FindPortraitTexture(a));
 }