예제 #1
0
        public void LoadAudioHeaders(string basePath, DuplicateBehavior behavior)
        {
            var parser = new AudioHeadersParser();

            foreach (var path in HeaderPaths)
            {
                foreach (var header in parser.ParseFile(basePath + path.Item2, path.Item1, path.Item3))
                {
                    var  reducedName = header.Name;
                    bool reduced     = reducedName.EndsWith($"_{header.Bank}");
                    if (reduced)
                    {
                        reducedName = reducedName.Substring(0, reducedName.Length - 2);
                    }

                    if (behavior != DuplicateBehavior.LeaveEverythingUntouched)
                    {
                        if (reduced)
                        {
                            if (Headers.ContainsKey(reducedName) && behavior == DuplicateBehavior.NormalizeAndRemoveDuplicates)
                            {
                                Console.WriteLine($"Ignoring duplicate header {header.Name}");
                                continue;
                            }
                            header.Name = reducedName;
                        }
                    }

                    if (NoiseInstruments.Contains(reducedName))
                    {
                        header.ResourceType = ResourceType.NoiseInstrument;
                    }
                    else if (PokemonCries.Contains(reducedName))
                    {
                        header.ResourceType = ResourceType.Cry;
                    }

                    Headers[header.Name] = header;
                }
            }
        }
예제 #2
0
 public AudioLibrary(string basePath, DuplicateBehavior behavior = DuplicateBehavior.NormalizeAndRemoveDuplicates)
 {
     LoadAudioSequences(basePath);
     LoadAudioHeaders(basePath, behavior);
     CheckReferences();
 }