mirror of https://github.com/ppy/osu
small code improvements
This commit is contained in:
parent
2f708a704d
commit
73532b9172
|
@ -17,6 +17,11 @@ public class Beatmap
|
||||||
public List<ControlPoint> ControlPoints { get; set; }
|
public List<ControlPoint> ControlPoints { get; set; }
|
||||||
public List<Color4> ComboColors { get; set; }
|
public List<Color4> ComboColors { get; set; }
|
||||||
|
|
||||||
|
public double BPMAt(double time)
|
||||||
|
{
|
||||||
|
return 60000 / BeatLengthAt(time);
|
||||||
|
}
|
||||||
|
|
||||||
public double BeatLengthAt(double time, bool applyMultipliers = false)
|
public double BeatLengthAt(double time, bool applyMultipliers = false)
|
||||||
{
|
{
|
||||||
int point = 0;
|
int point = 0;
|
||||||
|
|
|
@ -61,19 +61,7 @@ public void UpdateBeatmap(WorkingBeatmap beatmap)
|
||||||
BeatmapSetInfo beatmapSetInfo = beatmap.BeatmapSetInfo;
|
BeatmapSetInfo beatmapSetInfo = beatmap.BeatmapSetInfo;
|
||||||
BeatmapInfo beatmapInfo = beatmap.BeatmapInfo;
|
BeatmapInfo beatmapInfo = beatmap.BeatmapInfo;
|
||||||
|
|
||||||
double bpmPreview = 60000 / beatmap.Beatmap.BeatLengthAt(beatmap.Beatmap.Metadata.PreviewTime);
|
string bpm = GetBPMRange(beatmap);
|
||||||
double bpmMax = bpmPreview;
|
|
||||||
double bpmMin = bpmPreview;
|
|
||||||
foreach( ControlPoint a in beatmap.Beatmap.ControlPoints)
|
|
||||||
{
|
|
||||||
if (a.BeatLength == 0) continue;
|
|
||||||
double tmp = 60000 / a.BeatLength;
|
|
||||||
if (bpmMax < tmp) bpmMax = tmp;
|
|
||||||
if (bpmMin > tmp) bpmMin = tmp;
|
|
||||||
}
|
|
||||||
string bpm;
|
|
||||||
if (bpmMax == bpmMin) bpm = bpmMin + "bpm";
|
|
||||||
else bpm = bpmMin + "-" + bpmMax + "(" + 60000 / beatmap.Beatmap.BeatLengthAt(beatmap.Beatmap.Metadata.PreviewTime) + ")bpm";
|
|
||||||
string length = "" + TimeSpan.FromMilliseconds((beatmap.Beatmap.HitObjects.Last().EndTime - beatmap.Beatmap.HitObjects.First().StartTime)).ToString(@"m\:s");
|
string length = "" + TimeSpan.FromMilliseconds((beatmap.Beatmap.HitObjects.Last().EndTime - beatmap.Beatmap.HitObjects.First().StartTime)).ToString(@"m\:s");
|
||||||
string hitCircles = "" + beatmap.Beatmap.HitObjects.Count(b => b.GetType().ToString().Equals("osu.Game.Modes.Osu.Objects.HitCircle"));
|
string hitCircles = "" + beatmap.Beatmap.HitObjects.Count(b => b.GetType().ToString().Equals("osu.Game.Modes.Osu.Objects.HitCircle"));
|
||||||
string sliders = "" + beatmap.Beatmap.HitObjects.Count(b => b.GetType().ToString().Equals("osu.Game.Modes.Osu.Objects.Slider"));
|
string sliders = "" + beatmap.Beatmap.HitObjects.Count(b => b.GetType().ToString().Equals("osu.Game.Modes.Osu.Objects.Slider"));
|
||||||
|
@ -184,6 +172,21 @@ public void UpdateBeatmap(WorkingBeatmap beatmap)
|
||||||
Add(d);
|
Add(d);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetBPMRange(WorkingBeatmap beatmap)
|
||||||
|
{
|
||||||
|
double bpmMax = double.MinValue;
|
||||||
|
double bpmMin = double.MaxValue;
|
||||||
|
foreach (ControlPoint a in beatmap.Beatmap.ControlPoints)
|
||||||
|
{
|
||||||
|
if (a.BeatLength == 0) continue;
|
||||||
|
double tmp = 60000 / a.BeatLength;
|
||||||
|
if (bpmMax < tmp) bpmMax = tmp;
|
||||||
|
if (bpmMin > tmp) bpmMin = tmp;
|
||||||
|
}
|
||||||
|
if (bpmMax == bpmMin) return bpmMin + "bpm";
|
||||||
|
return bpmMin + "-" + bpmMax + "(" + beatmap.Beatmap.BPMAt(beatmap.Beatmap.Metadata.PreviewTime) + ")bpm";
|
||||||
|
}
|
||||||
|
|
||||||
private Container InfoLabel(FontAwesome icon, string text)
|
private Container InfoLabel(FontAwesome icon, string text)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue