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