/// <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); }
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); } } }
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(); } }
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(); } }
public MieConversationApp(MieLanguageInfo languageInfo, MieConversationNodeInfo design, MieCharacterAttributeFile characterAttributeFile) { this.LanguageInfo = languageInfo; this.Design = design; this.CharacterAttributeFile = characterAttributeFile; }