public static void SaveVoiceStimulus(ICLIFlags flags, string path, FindLogic.Combo.ComboInfo info, FindLogic.Combo.VoiceLineInstanceInfo voiceLineInstanceInfo) { foreach (ulong soundFile in voiceLineInstanceInfo.SoundFiles) { SaveSoundFile(flags, path, info, soundFile, true); } }
public static void SaveVoiceStimulus(ICLIFlags flags, string path, SaveContext context, FindLogic.Combo.VoiceLineInstanceInfo voiceLineInstanceInfo) { var saveSubtitles = true; if (flags is ExtractFlags extractFlags) { saveSubtitles = extractFlags.SubtitlesWithSounds; } var realPath = path; var soundSet = new HashSet <ulong>(voiceLineInstanceInfo.SoundFiles.Where(x => x != 0)); string overrideName = null; if (saveSubtitles) { IEnumerable <string> subtitle = new HashSet <string>(); if (context.m_info.m_subtitles.TryGetValue(voiceLineInstanceInfo.Subtitle, out var subtitleInfo)) { subtitle = subtitle.Concat(subtitleInfo.m_text); } if (context.m_info.m_subtitles.TryGetValue(voiceLineInstanceInfo.SubtitleRuntime, out var subtitleRuntimeInfo)) { subtitle = subtitle.Concat(subtitleRuntimeInfo.m_text); } var subtitleSet = new HashSet <string>(subtitle); if (subtitleSet.Any()) { if (soundSet.Count > 1) { realPath = Path.Combine(realPath, GetValidFilename(subtitleSet.First().Trim().TrimEnd('.'))); WriteFile(string.Join("\n", subtitleSet), Path.Combine(realPath, $"{teResourceGUID.LongKey(voiceLineInstanceInfo.Subtitle):X8}-{teResourceGUID.LongKey(voiceLineInstanceInfo.SubtitleRuntime):X8}-subtitles.txt")); } else if (soundSet.Count == 1) { try { overrideName = GetValidFilename($"{teResourceGUID.AsString(soundSet.First())}-{subtitleSet.First().TrimEnd('.')}"); if (overrideName.Length > 128) { overrideName = overrideName.Substring(0, 100); } WriteFile(string.Join("\n", subtitleSet), Path.Combine(realPath, $"{overrideName}.txt")); } catch { overrideName = teResourceGUID.AsString(soundSet.First()); WriteFile(string.Join("\n", subtitleSet), Path.Combine(realPath, $"{overrideName}.txt")); } } } } foreach (ulong soundFile in soundSet) { SaveSoundFile(flags, realPath, context, soundFile, true, overrideName); } }