Пример #1
0
        private IEnumerable <Issue> GetIssue(HitObject hitObject, double time, float volume, bool isActive = false)
        {
            volume = GetActualVolume(volume);
            if (volume > 20)
            {
                // Volumes greater than 20% are usually audible.
                yield break;
            }

            bool   isHead    = time.AlmostEqual(hitObject.time);
            string timestamp = isHead ? Timestamp.Get(hitObject) : Timestamp.Get(time);
            string partName  = hitObject.GetPartName(time).ToLower().Replace("body", "tick");

            if (isActive)
            {
                if (isHead)
                {
                    if (volume <= 10)
                    {
                        yield return(new Issue(GetTemplate("Warning Volume"), hitObject.beatmap,
                                               timestamp, volume, partName));
                    }
                    else
                    {
                        yield return(new Issue(GetTemplate("Minor Volume"), hitObject.beatmap,
                                               timestamp, volume, partName));
                    }
                }
                else
                {
                    // Must be a slider reverse, mappers rarely map these to nothing.
                    if (volume <= 10)
                    {
                        yield return(new Issue(GetTemplate("Passive Reverse"), hitObject.beatmap,
                                               timestamp, volume, partName));
                    }
                }
            }
            else if (volume <= 10)
            {
                // Must be a slider tail or similar, these are often silenced intentionally.
                yield return(new Issue(GetTemplate("Passive"), hitObject.beatmap,
                                       timestamp, volume, partName));
            }
        }