private DialogueDatabase LoadOrCreateDatabase(string filename) { if (prefs.outputFolder.EndsWith("/")) { prefs.outputFolder = prefs.outputFolder.Substring(0, prefs.outputFolder.Length - 1); } string assetPath = string.Format("{0}/{1}.asset", prefs.outputFolder, filename); DialogueDatabase database = null; if (prefs.overwrite) { database = AssetDatabase.LoadAssetAtPath(assetPath, typeof(DialogueDatabase)) as DialogueDatabase; if (database != null) { database.Clear(); } } if (database == null) { assetPath = AssetDatabase.GenerateUniqueAssetPath(string.Format("{0}/{1}.asset", prefs.outputFolder, filename)); database = DatabaseUtility.CreateDialogueDatabaseInstance(); AssetDatabase.CreateAsset(database, assetPath); } return(database); }
/// <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); }
/// <summary> /// Loads the dialogue database if it already exists and overwrite is ticked; otherwise creates a new one. /// </summary> /// <returns> /// The database. /// </returns> /// <param name='filename'> /// Asset filename. /// </param> protected virtual DialogueDatabase LoadOrCreateDatabase() { string assetPath = string.Format("{0}/{1}.asset", prefs.outputFolder, prefs.databaseFilename); DialogueDatabase database = null; if (prefs.overwrite) { database = AssetDatabase.LoadAssetAtPath(assetPath, typeof(DialogueDatabase)) as DialogueDatabase; if ((database != null) && !prefs.merge) { database.Clear(); } } if (database == null) { assetPath = AssetDatabase.GenerateUniqueAssetPath(string.Format("{0}/{1}.asset", prefs.outputFolder, prefs.databaseFilename)); database = DatabaseUtility.CreateDialogueDatabaseInstance(); database.name = prefs.databaseFilename; AssetDatabase.CreateAsset(database, assetPath); } return(database); }
/// <summary> /// Initializes a new DatabaseManager. Loading of the default database is delayed until the /// first time the database is accessed. If you want to manually load the database, you can /// reset it or add a database to it. /// </summary> /// <param name='defaultDatabase'> /// (Optional) The default database. /// </param> public DatabaseManager(DialogueDatabase defaultDatabase = null) { m_masterDatabase = DatabaseUtility.CreateDialogueDatabaseInstance(); this.defaultDatabase = defaultDatabase; }