Skip to content

Commit

Permalink
Merge pull request #129 from OliBomby/dev
Browse files Browse the repository at this point in the history
Dev update 1.7.1.2
  • Loading branch information
OliBomby authored Oct 31, 2020
2 parents 4c331fb + eae31f6 commit 71145a5
Show file tree
Hide file tree
Showing 10 changed files with 357 additions and 144 deletions.
13 changes: 9 additions & 4 deletions Mapping Tools/Classes/BeatmapHelper/HitObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,9 @@ public double EndTime {
set => SetEndTime(value);
} // Includes all repeats

private double GetEndTime() {
return Math.Floor(Time + TemporalLength * Repeat + Precision.DOUBLE_EPSILON);
public double GetEndTime(bool floor = true) {
var endTime = Time + TemporalLength * Repeat;
return floor ? Math.Floor(endTime + Precision.DOUBLE_EPSILON) : endTime;
}

private void SetEndTime(double value) {
Expand Down Expand Up @@ -507,8 +508,12 @@ public void ChangeTemporalTime(Timing timing, double deltaTemporalTime) {
// Change
TemporalLength += deltaTemporalTime;

// Clean up body objects
if (TimelineObjects.Count > 0) TimelineObjects.Last().Time = EndTime;
// Move body objects
for (int i = 0; i <= Math.Min(Repeat, TimelineObjects.Count - 1); i++) {
double time = Math.Floor(Time + TemporalLength * i);
TimelineObjects[i].Time = time;
}

BodyHitsounds.RemoveAll(s => s.Offset >= EndTime);
}

Expand Down
5 changes: 3 additions & 2 deletions Mapping Tools/Classes/BeatmapHelper/Timing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ public double ResnapDuration(double time, double duration, IEnumerable<IBeatDivi

foreach (var beatDivisor in beatDivisors) {
var nd = GetNearestMultiple(duration, beforeTp.MpB * beatDivisor.GetValue());
var d = Math.Abs(duration - newDuration);
var d = Math.Abs(duration - nd);

if (d < lowestDistance) {
lowestDistance = d;
Expand Down Expand Up @@ -538,7 +538,8 @@ public double CalculateSliderTemporalLength(double time, double length) {
}

public double CalculateSliderTemporalLength(double time, double length, double sv) {
return (length * GetMpBAtTime(time) * (double.IsNaN(sv) ? -100 : sv)) / (-10000 * SliderMultiplier);
return (length * GetMpBAtTime(time) * (double.IsNaN(sv) ? -100 : MathHelper.Clamp(sv, -1000, -10))) /
(-10000 * SliderMultiplier);
}

/// <summary>
Expand Down
7 changes: 7 additions & 0 deletions Mapping Tools/Classes/Tools/PatternGallery/ExportTimeMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Mapping_Tools.Classes.Tools.PatternGallery {
public enum ExportTimeMode {
Pattern,
Custom,
Current
}
}
43 changes: 23 additions & 20 deletions Mapping Tools/Classes/Tools/PatternGallery/OsuPatternMaker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@

namespace Mapping_Tools.Classes.Tools.PatternGallery {
public class OsuPatternMaker {
public double Padding { get; set; } = 5;
/// <summary>
/// Extra time in milliseconds around patterns for including a wider range of objects in the target beatmap.
/// </summary>
public double Padding = 5;

public OsuPattern FromSelectedWithSave(Beatmap beatmap, OsuPatternFileHandler fileHandler, string name) {
var osuPattern = FromSelected(beatmap, out var patternBeatmap, name);
Expand Down Expand Up @@ -81,25 +84,6 @@ public OsuPattern FromFile(string filePath, string name) {
return FromBeatmap(patternBeatmap, name);
}

public OsuPattern FromBeatmap(Beatmap beatmap, string name) {
// Generate a file name and save the pattern
var now = DateTime.Now;
var fileName = GenerateUniquePatternFileName(name, now);

var startTime = beatmap.GetHitObjectStartTime();
var endTime = beatmap.GetHitObjectEndTime();

return new OsuPattern {
Name = name,
CreationTime = now,
LastUsedTime = now,
FileName = fileName,
ObjectCount = beatmap.HitObjects.Count,
Duration = TimeSpan.FromMilliseconds(endTime - startTime),
BeatLength = beatmap.BeatmapTiming.GetBeatLength(startTime, endTime, true)
};
}

public OsuPattern FromObjectsWithSave(List<HitObject> hitObjects, List<TimingPoint> timingPoints, OsuPatternFileHandler fileHandler,
string name, TimingPoint firstUnInheritedTimingPoint = null, double globalSv = 1.4, GameMode gameMode = GameMode.Standard) {
var osuPattern = FromObjects(hitObjects, timingPoints, out var patternBeatmap, name,
Expand All @@ -120,6 +104,25 @@ public OsuPattern FromObjects(List<HitObject> hitObjects, List<TimingPoint> timi
return FromBeatmap(patternBeatmap, name);
}

public OsuPattern FromBeatmap(Beatmap beatmap, string name) {
// Generate a file name and save the pattern
var now = DateTime.Now;
var fileName = GenerateUniquePatternFileName(name, now);

var startTime = beatmap.GetHitObjectStartTime();
var endTime = beatmap.GetHitObjectEndTime();

return new OsuPattern {
Name = name,
CreationTime = now,
LastUsedTime = now,
FileName = fileName,
ObjectCount = beatmap.HitObjects.Count,
Duration = TimeSpan.FromMilliseconds(endTime - startTime),
BeatLength = beatmap.BeatmapTiming.GetBeatLength(startTime, endTime, true)
};
}

#region Helpers

private static string GenerateUniquePatternFileName(string name, DateTime time) {
Expand Down
Loading

0 comments on commit 71145a5

Please sign in to comment.