예제 #1
0
        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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
 /// <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;
 }