Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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);
            }
        }