/// <summary>
        /// 指定したフォルダー内の会話ファイルを読み込み会話情報を返す。
        /// </summary>
        /// <param name="folderPath">フォルダーのパス</param>
        /// <param name="fileList">FileLIst</param>
        /// <returns>会話情報</returns>
        public static MieConversationNodeInfo LoadFromFolder(string folderPath, MieFileList fileList)
        {
            MieConversationNodeInfo mieConversationInfo = new MieConversationNodeInfo();

            if (!Directory.Exists(folderPath))
            {
                var msg = $"Error: Folder not exists. Folder({folderPath})";
                logger.Error(msg);
                throw new Exception(msg);
            }

            string[] files = Directory.GetFiles(folderPath, "*.conversationbundle", SearchOption.AllDirectories);
            files
            .Where(file => Path.GetExtension(file).ToLower() == ".conversationbundle")
            .ToList()
            .ForEach(x =>
            {
                var convFile = LoadFromJson(x, fileList);
                if (convFile != null)
                {
                    mieConversationInfo.AddFile(convFile);
                }
            });

            return(mieConversationInfo);
        }
Ejemplo n.º 2
0
        public static void LoadFromSystemDB(MieSystemDB systemDB, MieConversationNodeInfo convNodeInfo)
        {
            SQLiteCommand command = systemDB.Connection.CreateCommand();

            command.CommandText = @"SELECT FileCode,FromNodeID,ToNodeID FROM ConversationNodeLinks ORDER BY FileCode;";
            using (SQLiteDataReader reader = command.ExecuteReader())
            {
                while (reader.Read() == true)
                {
                    var fileCode   = (long)reader["FileCode"];
                    var fromNodeID = (int)(long)reader["FromNodeID"];
                    var toNodeID   = (int)(long)reader["ToNodeID"];

                    var nodeFile = convNodeInfo.GetNodeFile(fileCode);
                    MieConversationLink nodeLink = new MieConversationLink(fromNodeID, toNodeID);
                    nodeFile.AddLinkEntry(nodeLink);
                }
            }
        }
Ejemplo n.º 3
0
        public static void LoadFromSystemDB(MieSystemDB systemDB, MieConversationNodeInfo convNodeInfo)
        {
            SQLiteCommand command = systemDB.Connection.CreateCommand();

            command.CommandText = @"SELECT * FROM ConversationNodeEntries ORDER BY FileCode;";
            using (SQLiteDataReader reader = command.ExecuteReader())
            {
                while (reader.Read() == true)
                {
                    var fileCode        = (long)reader["FileCode"];
                    var nodeID          = (int)(long)reader["NodeID"];
                    var xNodeType       = (long)reader["NodeType"];
                    var xSpeakerGuid    = (byte[])reader["SpeakerGuid"];
                    var xListenerGuid   = (byte[])reader["ListenerGuid"];
                    var xIsRootNode     = (long)reader["IsRootNode"];
                    var xIsQuestionNode = (long)reader["IsQuestionNode"];

                    MieConversationNodeEntry.NNodeType nodeType = (MieConversationNodeEntry.NNodeType)Enum.ToObject(typeof(MieConversationNodeEntry.NNodeType), xNodeType);
                    Guid speakerGuid    = new Guid(xSpeakerGuid);
                    Guid listenerGuid   = new Guid(xListenerGuid);
                    bool isRootNode     = xIsRootNode == 0 ? false : true;
                    bool isQuestionNode = xIsQuestionNode == 0 ? false : true;

                    MieConversationNodeEntry nodeEntry = new MieConversationNodeEntry(
                        nodeType,
                        nodeID,
                        speakerGuid,
                        listenerGuid,
                        isRootNode,
                        isQuestionNode);

                    var nodeFile = convNodeInfo.GetNodeFile(fileCode);
                    var rc       = nodeFile.AddFlatNodeEntry(nodeEntry);
                }
            }

            foreach (var nodeFile in convNodeInfo.Files.Values)
            {
                nodeFile.BuildLink();
                nodeFile.UpdateDepth();
            }
        }
Ejemplo n.º 4
0
        public static void SaveToDB(MieSystemDB systemDb, MieConversationNodeInfo nodeInfo)
        {
            using (SQLiteTransaction trans = systemDb.Connection.BeginTransaction())
            {
                foreach (var nodeFile in nodeInfo.Files.Values)
                {
                    if (nodeFile.FileCode == 0)
                    {
                        var msg = $"Unknown FileCode({nodeFile.FileCode}). Skipping File...";
                        logger.Warn(msg);
                    }
                    else
                    {
                        SaveToTable(systemDb.Connection, nodeFile, nodeFile.FileCode);
                    }
                }

                trans.Commit();
            }
        }
Ejemplo n.º 5
0
 public MieConversationApp(MieLanguageInfo languageInfo, MieConversationNodeInfo design, MieCharacterAttributeFile characterAttributeFile)
 {
     this.LanguageInfo           = languageInfo;
     this.Design                 = design;
     this.CharacterAttributeFile = characterAttributeFile;
 }