-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathC2sChart.cs
More file actions
24 lines (21 loc) · 1.18 KB
/
C2sChart.cs
File metadata and controls
24 lines (21 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using MuConvert.chart;
namespace MuConvert.chu;
/**
* C2S 格式谱面 IR(官方格式,RESOLUTION=384 tick/小节)。
*/
public class C2sChart : BaseChart<ChuNote>, IChuChart
{
public string Version { get; set; } = "1.08.00\t1.08.00";
public int MusicId { get; set; }
public int DifficultId { get; set; }
public string Creator { get; set; } = "";
public int Resolution { get; set; } = 384;
public double DefBpm { get; set; } = 120.0;
public List<(int Measure, int Offset, double Bpm)> BpmEvents = [];
public List<(int Measure, int Offset, int Denom, int Num)> MetEvents = [];
public List<(int Measure, int Offset, int Duration, double Multiplier)> SflEvents = [];
public override decimal StartBpm => (decimal)(BpmEvents.Count > 0 ? BpmEvents[0].Bpm : DefBpm);
public override decimal StartTime => Notes.Count > 0 ? Notes.Min(n => n.Measure * Resolution + n.Offset) / 384m * 240m / StartBpm : 0;
public override decimal EndTime => Notes.Count > 0 ? Notes.Max(n => n.Measure * Resolution + n.Offset + Math.Max(n.HoldDuration, Math.Max(n.SlideDuration, n.AirHoldDuration))) / 384m * 240m / StartBpm : 0;
public override int TotalNotes => Notes.Count;
}