diff --git a/Scripts/Data/Chart/Chart.cs b/Scripts/Data/Chart/Chart.cs index 8c4a5eb..93c9436 100644 --- a/Scripts/Data/Chart/Chart.cs +++ b/Scripts/Data/Chart/Chart.cs @@ -21,15 +21,31 @@ namespace WacK.Data.Chart public SortedList> tempoChgs { get; private set; } public SortedList> events { get; private set; } - public Chart() + public Chart(string chartPath) { doneLoading = false; + var file = FileAccess.Open(chartPath, FileAccess.ModeFlags.Read); + if (file == null) + { + GD.PrintErr("Couldn't load chart in play!"); + return; + } + var str = file.GetAsText(); + file.Close(); + + var mer = new Mer.Mer(str); + Load(mer); + + doneLoading = true; } // place notes and events relative to the previous - public void Load(Mer.Mer chart) + private void Load(Mer.Mer chart) { - playNotes = new SortedList>(); + playNotes = new(); + timeSigChgs = new(); + tempoChgs = new(); + events = new(); List tempo = new List(); List tempoChangeMeasures = new List(); @@ -56,8 +72,8 @@ namespace WacK.Data.Chart Note prevNote = null; Note curNote = null; - var prevHoldPoint = new System.Collections.Generic.Dictionary(); // - var curHoldNote = new System.Collections.Generic.Dictionary(); // + var prevHoldPoint = new Dictionary(); // + var curHoldNote = new Dictionary(); // // Notes and Events // foreach (var measure in chart.notes) // `measure` = measure: List @@ -112,7 +128,8 @@ namespace WacK.Data.Chart var de = int.Parse(words[1]); if (beatsPerMeasure.Count == 1) { - beatsPerMeasure.Add(int.Parse(chartNote.Item2.value)); + // TODO: handle denominator (note that gets the beat) + beatsPerMeasure.Add(nu); bpmChangeMeasures.Add(measure.Key); } else @@ -327,7 +344,7 @@ namespace WacK.Data.Chart // } // } - doneLoading = true; + GD.Print("Finished forming Chart!"); } } } diff --git a/Scripts/Data/Chart/NoteHold.cs b/Scripts/Data/Chart/NoteHold.cs index 389b006..8335c3c 100755 --- a/Scripts/Data/Chart/NoteHold.cs +++ b/Scripts/Data/Chart/NoteHold.cs @@ -15,6 +15,7 @@ namespace WacK.Data.Chart : base(time, measureBeat, position, size,holdIndex, holdNext, type: NotePlayType.HoldStart, bonus: false) { // points = (SortedList)holdPoints.Skip(1); + points = new(); } } } diff --git a/Scripts/Data/Mer/Mer.cs b/Scripts/Data/Mer/Mer.cs index 7cb711a..99169c5 100644 --- a/Scripts/Data/Mer/Mer.cs +++ b/Scripts/Data/Mer/Mer.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; +using Godot; namespace WacK.Data.Mer { @@ -133,7 +134,8 @@ namespace WacK.Data.Mer notes[currentMeasure].Add((currentBeat, new MerNote(value: tokens[3], type: MerType.Tempo))); break; case "3": // beats per measure - notes[currentMeasure].Add((currentBeat, new MerNote(value: $"{tokens[3]} {tokens[4]}", type: MerType.TimeSignature))); + string de = tokens.Count >= 5 ? tokens[4] : "4"; // TODO: use previously-estbalished denominator? + notes[currentMeasure].Add((currentBeat, new MerNote(value: $"{tokens[3]} {de}", type: MerType.TimeSignature))); break; } } diff --git a/Scripts/Scenes/Play.cs b/Scripts/Scenes/Play.cs index 3d8886f..b563838 100644 --- a/Scripts/Scenes/Play.cs +++ b/Scripts/Scenes/Play.cs @@ -1,4 +1,6 @@ using Godot; +using WacK.Data.Chart; +using WacK.Data.Mer; namespace WacK.Scenes { @@ -22,11 +24,12 @@ namespace WacK.Scenes // initialized by another scene, BEFORE loading this one! public static PlayParameters playParams; - private void Start() - { - - } + private Chart chart; + public override void _Ready() + { + chart = new(playParams.chartPath); + } private void OnDestroy() { playParams = null;