Ejemplo n.º 1
0
        public static List <HitsoundEvent> GetHitsounds(List <SamplePackage> samplePackages,
                                                        ref Dictionary <SampleGeneratingArgs, SampleSoundGenerator> loadedSamples,
                                                        ref Dictionary <SampleGeneratingArgs, string> names,
                                                        ref Dictionary <SampleGeneratingArgs, Vector2> positions)
        {
            HashSet <SampleGeneratingArgs> allSampleArgs = new HashSet <SampleGeneratingArgs>();

            foreach (SamplePackage sp in samplePackages)
            {
                allSampleArgs.UnionWith(sp.Samples.Select(o => o.SampleArgs));
            }

            if (loadedSamples == null)
            {
                loadedSamples = SampleImporter.ImportSamples(allSampleArgs);
            }

            if (names == null)
            {
                names = HitsoundExporter.GenerateSampleNames(allSampleArgs, loadedSamples);
            }

            if (positions == null)
            {
                positions = HitsoundExporter.GenerateHitsoundPositions(allSampleArgs);
            }

            var hitsounds = new List <HitsoundEvent>();

            foreach (var p in samplePackages)
            {
                foreach (var s in p.Samples)
                {
                    hitsounds.Add(new HitsoundEvent(p.Time,
                                                    positions[s.SampleArgs], s.OutsideVolume, names[s.SampleArgs], s.SampleSet, s.SampleSet,
                                                    0, s.Whistle, s.Finish, s.Clap));
                }
            }

            return(hitsounds);
        }
Ejemplo n.º 2
0
        public static List <HitsoundEvent> GetHitsounds(List <SamplePackage> samplePackages,
                                                        ref Dictionary <SampleGeneratingArgs, SampleSoundGenerator> loadedSamples,
                                                        ref Dictionary <SampleGeneratingArgs, string> names,
                                                        ref Dictionary <SampleGeneratingArgs, Vector2> positions,
                                                        bool maniaPositions     = false, bool includeRegularHitsounds         = true, bool allowNamingGrowth = false,
                                                        bool validateSampleFile = true, SampleGeneratingArgsComparer comparer = null)
        {
            if (comparer == null)
            {
                comparer = new SampleGeneratingArgsComparer();
            }

            HashSet <SampleGeneratingArgs> allSampleArgs = new HashSet <SampleGeneratingArgs>(comparer);

            foreach (SamplePackage sp in samplePackages)
            {
                allSampleArgs.UnionWith(sp.Samples.Select(o => o.SampleArgs));
            }

            if (loadedSamples == null)
            {
                loadedSamples = SampleImporter.ImportSamples(allSampleArgs, comparer);
            }

            if (names == null)
            {
                names = HitsoundExporter.GenerateSampleNames(allSampleArgs, loadedSamples, validateSampleFile, comparer);
            }

            if (positions == null)
            {
                positions = maniaPositions ? HitsoundExporter.GenerateManiaHitsoundPositions(allSampleArgs, comparer) :
                            HitsoundExporter.GenerateHitsoundPositions(allSampleArgs, comparer);
            }

            var hitsounds = new List <HitsoundEvent>();

            foreach (var p in samplePackages)
            {
                foreach (var s in p.Samples)
                {
                    string filename;

                    if (names.ContainsKey(s.SampleArgs))
                    {
                        filename = names[s.SampleArgs];
                    }
                    else
                    {
                        // Validate the sample because we expect only valid samples to be present in the sample schema
                        if (SampleImporter.ValidateSampleArgs(s.SampleArgs, loadedSamples, validateSampleFile))
                        {
                            if (allowNamingGrowth)
                            {
                                HitsoundExporter.AddNewSampleName(names, s.SampleArgs, loadedSamples);
                                filename = names[s.SampleArgs];
                            }
                            else
                            {
                                throw new Exception($"Given sample schema doesn't support sample ({s.SampleArgs}) and growth is disabled.");
                            }
                        }
                        else
                        {
                            filename = string.Empty;
                        }
                    }

                    if (includeRegularHitsounds)
                    {
                        hitsounds.Add(new HitsoundEvent(p.Time,
                                                        positions[s.SampleArgs], s.OutsideVolume, filename, s.SampleSet, s.SampleSet,
                                                        0, s.Whistle, s.Finish, s.Clap));
                    }
                    else
                    {
                        hitsounds.Add(new HitsoundEvent(p.Time,
                                                        positions[s.SampleArgs], s.OutsideVolume, filename, SampleSet.Auto, SampleSet.Auto,
                                                        0, false, false, false));
                    }
                }
            }

            return(hitsounds);
        }