diff --git a/BAKKA-Sharp/BAKKA-Sharp.csproj b/BAKKA-Sharp/BAKKA-Sharp.csproj new file mode 100644 index 0000000..c701fb8 --- /dev/null +++ b/BAKKA-Sharp/BAKKA-Sharp.csproj @@ -0,0 +1,45 @@ + + + + WinExe + net6.0-windows + BAKKA_Sharp + enable + true + enable + $(VersionPrefix)1.0.0-rc8 + 1.0.0.0 + 1.0.0-rc8 + VeroxZik + 2022 + BAKKA_Sharp.Program + + true + + + + + + + + + ..\lib\irrKlang.NET4.dll + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/BAKKA-Sharp.csproj.user b/BAKKA-Sharp/BAKKA-Sharp.csproj.user new file mode 100644 index 0000000..0082a09 --- /dev/null +++ b/BAKKA-Sharp/BAKKA-Sharp.csproj.user @@ -0,0 +1,15 @@ + + + + + + Form + + + Form + + + Form + + + \ No newline at end of file diff --git a/BAKKA-Sharp/Chart.cs b/BAKKA-Sharp/Chart.cs new file mode 100644 index 0000000..af6ded3 --- /dev/null +++ b/BAKKA-Sharp/Chart.cs @@ -0,0 +1,293 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal class Chart + { + public List Notes { get; set; } + public List Gimmicks { get; set; } + /// + /// Offset in seconds. + /// + public double Offset { get; set; } + /// + /// Movie offset in seconds + /// + public double MovieOffset { get; set; } + String SongFileName { get; set; } + List TimeEvents { get; set; } + public bool HasInitEvents + { + get + { + return TimeEvents != null && + TimeEvents.Count > 0 && + Gimmicks.Count(x => x.Measure == 0 && x.GimmickType == GimmickType.BpmChange) >= 1 && + Gimmicks.Count(x => x.Measure == 0 && x.GimmickType == GimmickType.TimeSignatureChange) >= 1; + } + } + public bool IsSaved { get; set; } + + public Chart() + { + Notes = new(); + Gimmicks = new(); + Offset = 0; + MovieOffset = 0; + SongFileName = ""; + IsSaved = true; + } + + public bool ParseFile(string filename) + { + var file = File.ReadAllLines(filename); + + int index = 0; + + do + { + var line = file[index]; + + var path = Utils.GetTag(line, "#MUSIC_FILE_PATH "); + if (path != null) + SongFileName = path; + + var offset = Utils.GetTag(line, "#OFFSET"); + if (offset != null) + Offset = Convert.ToDouble(offset); + + offset = Utils.GetTag(line, "#MOVIEOFFSET"); + if (offset != null) + MovieOffset = Convert.ToDouble(offset); + + + if (line.Contains("#BODY")) + { + index++; + break; + } + + } while(++index < file.Length); + + int lineNum; + Gimmick gimmickTemp; + Note noteTemp; + Dictionary notesByLine = new(); + Dictionary refByLine = new(); + for (int i = index; i < file.Length; i++) + { + var parsed = file[i].Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); + NoteBase temp = new(); + temp.BeatInfo = new BeatInfo(Convert.ToInt32(parsed[0]), Convert.ToInt32(parsed[1])); + temp.GimmickType = (GimmickType)Convert.ToInt32(parsed[2]); + + switch (temp.GimmickType) + { + case GimmickType.NoGimmick: + noteTemp = new Note(temp.BeatInfo); + noteTemp.NoteType = (NoteType)Convert.ToInt32(parsed[3]); + lineNum = Convert.ToInt32(parsed[4]); + noteTemp.Position = Convert.ToInt32(parsed[5]); + noteTemp.Size = Convert.ToInt32(parsed[6]); + noteTemp.HoldChange = Convert.ToBoolean(Convert.ToInt32(parsed[7])); + if (noteTemp.NoteType == NoteType.MaskAdd || noteTemp.NoteType == NoteType.MaskRemove) + { + noteTemp.MaskFill = (MaskType)Convert.ToInt32(parsed[8]); + } + else if (noteTemp.NoteType == NoteType.HoldStartNoBonus || + noteTemp.NoteType == NoteType.HoldJoint || + noteTemp.NoteType == NoteType.HoldStartBonusFlair) + { + refByLine[lineNum] = Convert.ToInt32(parsed[8]); + } + Notes.Add(noteTemp); + notesByLine[lineNum] = Notes.Last(); + break; + case GimmickType.BpmChange: + gimmickTemp = new Gimmick(temp.BeatInfo, temp.GimmickType); + gimmickTemp.BPM = Convert.ToDouble(parsed[3]); + Gimmicks.Add(gimmickTemp); + break; + case GimmickType.TimeSignatureChange: + gimmickTemp = new Gimmick(temp.BeatInfo, temp.GimmickType); + gimmickTemp.TimeSig = new TimeSignature() { Upper = Convert.ToInt32(parsed[3]), Lower = Convert.ToInt32(parsed[4]) }; + Gimmicks.Add(gimmickTemp); + break; + case GimmickType.HiSpeedChange: + gimmickTemp = new Gimmick(temp.BeatInfo, temp.GimmickType); + gimmickTemp.HiSpeed = Convert.ToDouble(parsed[3]); + Gimmicks.Add(gimmickTemp); + break; + case GimmickType.ReverseStart: + case GimmickType.ReverseMiddle: + case GimmickType.ReverseEnd: + case GimmickType.StopStart: + case GimmickType.StopEnd: + default: + Gimmicks.Add(new Gimmick(temp.BeatInfo, temp.GimmickType)); + break; + } + + } + + // Generate hold references + for (int i = 0; i < Notes.Count; i++) + { + if (refByLine.ContainsKey(i)) + { + Notes[i].NextNote = notesByLine[refByLine[i]]; + Notes[i].NextNote.PrevNote = Notes[i]; + } + } + + RecalcTime(); + + IsSaved = true; + return true; + } + + public bool WriteFile(string filename, bool setSave = true) + { + using (StreamWriter sw = new StreamWriter(new FileStream(filename, FileMode.Create), new UTF8Encoding(false))) + { + // LF line ending + sw.NewLine = "\n"; + + sw.WriteLine("#MUSIC_SCORE_ID 0"); + sw.WriteLine("#MUSIC_SCORE_VERSION 0"); + sw.WriteLine("#GAME_VERSION "); + sw.WriteLine($"#MUSIC_FILE_PATH {SongFileName}"); + sw.WriteLine($"#OFFSET {Offset:F6}"); + sw.WriteLine($"#MOVIEOFFSET {MovieOffset:F6}"); + sw.WriteLine("#BODY"); + + foreach (var gimmick in Gimmicks) + { + sw.Write($"{gimmick.BeatInfo.Measure,4:F0}{gimmick.BeatInfo.Beat,5:F0}{((int)gimmick.GimmickType),5:F0}"); + switch (gimmick.GimmickType) + { + case GimmickType.BpmChange: + sw.WriteLine($" {gimmick.BPM:F6}"); + break; + case GimmickType.TimeSignatureChange: + sw.WriteLine($"{gimmick.TimeSig.Upper,5:F0}{gimmick.TimeSig.Lower,5:F0}"); + break; + case GimmickType.HiSpeedChange: + sw.WriteLine($" {gimmick.HiSpeed:F6}"); + break; + default: + sw.WriteLine(""); + break; + } + } + + foreach (var note in Notes) + { + sw.Write($"{note.BeatInfo.Measure,4:F0}{note.BeatInfo.Beat,5:F0}{((int)note.GimmickType),5:F0}{(int)note.NoteType,5:F0}"); + sw.Write($"{Notes.IndexOf(note),5:F0}{note.Position,5:F0}{note.Size,5:F0}{Convert.ToInt32(note.HoldChange),5:F0}"); + if (note.IsMask) + sw.Write($"{(int)note.MaskFill,5:F0}"); + if (note.NextNote != null) + sw.Write($"{Notes.IndexOf(note.NextNote),5:F0}"); + sw.WriteLine(""); + } + } + + IsSaved = setSave; + return true; + } + + public void RecalcTime() + { + Gimmicks = Gimmicks.OrderBy(x => x.Measure).ToList(); + var timeSig = Gimmicks.FirstOrDefault(x => x.GimmickType == GimmickType.TimeSignatureChange && x.Measure == 0.0f); + var bpm = Gimmicks.FirstOrDefault(x => x.GimmickType == GimmickType.BpmChange && x.Measure == 0.0f); + if (timeSig == null || bpm == null) + return; // Cannot calculate times without either starting value + + TimeEvents = new(); + for (int i = 0; i < Gimmicks.Count; i++) + { + var evt = TimeEvents.FirstOrDefault(x => x.BeatInfo.MeasureDecimal == Gimmicks[i].BeatInfo.MeasureDecimal); + + if (Gimmicks[i].GimmickType == GimmickType.BpmChange) + { + if (evt == null) + { + TimeEvents.Add(new Gimmick() + { + BeatInfo = new BeatInfo(Gimmicks[i].BeatInfo), + BPM = Gimmicks[i].BPM, + TimeSig = new TimeSignature(timeSig.TimeSig) + }); + } + else + { + evt.BPM = Gimmicks[i].BPM; + } + bpm = Gimmicks[i]; + } + if (Gimmicks[i].GimmickType == GimmickType.TimeSignatureChange) + { + if (evt == null) + { + TimeEvents.Add(new Gimmick() + { + BeatInfo = new BeatInfo(Gimmicks[i].BeatInfo), + BPM = bpm.BPM, + TimeSig = new TimeSignature(Gimmicks[i].TimeSig) + }); + } + else + { + evt.TimeSig = new TimeSignature(Gimmicks[i].TimeSig); + } + timeSig = Gimmicks[i]; + } + } + + // Run through all time events and generate valid start times + TimeEvents[0].StartTime = Offset * 1000.0; + for (int i = 1; i < TimeEvents.Count; i++) + { + TimeEvents[i].StartTime = ((TimeEvents[i].Measure - TimeEvents[i - 1].Measure) * 4 * TimeEvents[i - 1].TimeSig.Ratio * 60000.0 / TimeEvents[i].BPM) + TimeEvents[i - 1].StartTime; + } + } + + /// + /// Translate clock time to beats + /// + /// Current timestamp in ms + /// + public BeatInfo GetBeat(float time) + { + if (TimeEvents == null || TimeEvents.Count == 0) + return new BeatInfo(-1, 0); + + var evt = TimeEvents.Where(x => time >= x.StartTime).LastOrDefault(); + if (evt == null) + evt = TimeEvents[0]; + return new BeatInfo((float)(evt.BPM * (time - evt.StartTime) / (60000.0f * evt.TimeSig.Ratio * 4)) + evt.Measure); + } + + /// + /// Translate measures into clock time + /// + /// + /// + public int GetTime(BeatInfo beat) + { + if (TimeEvents == null || TimeEvents.Count == 0) + return 0; + + var evt = TimeEvents.Where(x => beat.MeasureDecimal >= x.Measure).LastOrDefault(); + if (evt == null) + evt = TimeEvents[0]; + return (int)((60000.0 * 4.0 * evt.TimeSig.Ratio / evt.BPM) * (beat.MeasureDecimal - evt.Measure) + evt.StartTime); + } + } +} diff --git a/BAKKA-Sharp/CircleView.cs b/BAKKA-Sharp/CircleView.cs new file mode 100644 index 0000000..60eca08 --- /dev/null +++ b/BAKKA-Sharp/CircleView.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal class CircleView + { + public SizeF PanelSize { get; private set; } + public RectangleF DrawRect { get; private set; } + public PointF TopCorner { get; private set; } + public PointF CenterPoint { get; private set; } + public float Radius { get; private set; } + public float CurrentMeasure { get; set; } + /// + /// Number of measures in the future that are visible + /// + public float TotalMeasureShowNotes { get; set; } = 0.5f; + + // Pens and Brushes + public Pen BasePen { get; set; } + public Pen BeatPen { get; set; } + public Pen TickMinorPen { get; set; } + public Pen TickMediumPen { get; set; } + public Pen TickMajorPen { get; set; } + public SolidBrush HoldBrush { get; set; } = new SolidBrush(Color.FromArgb(170, Color.Yellow)); + public SolidBrush MaskBrush { get; set; } = new SolidBrush(Color.DimGray); + public Pen HighlightPen { get; set; } + public Pen FlairPen { get; set; } + private int CursorTransparency = 110; + private int SelectTransparency = 110; + private int FlairTransparency = 75; + + public CircleView(SizeF size) + { + Update(size); + } + + public void Update(SizeF size) + { + PanelSize = size; + float basePenWidth = PanelSize.Width * 4.0f / 600.0f; + TopCorner = new PointF(basePenWidth * 4, basePenWidth * 4); + DrawRect = new RectangleF( + TopCorner.X, + TopCorner.Y, + PanelSize.Width - basePenWidth * 8, + PanelSize.Height - basePenWidth * 8); + Radius = DrawRect.Width / 2.0f; + CenterPoint = new PointF(TopCorner.X + Radius, TopCorner.Y + Radius); + + // Pens + BasePen = new Pen(Color.Black, basePenWidth); + BeatPen = new Pen(Color.White, PanelSize.Width * 1.0f / 600.0f); + TickMinorPen = new Pen(Color.Black, PanelSize.Width * 2.0f / 600.0f); + TickMediumPen = new Pen(Color.Black, PanelSize.Width * 4.0f / 600.0f); + TickMajorPen = new Pen(Color.Black, PanelSize.Width * 7.0f / 600.0f); + HighlightPen = new Pen(Color.FromArgb(SelectTransparency, Color.LightPink), PanelSize.Width * 8.0f / 600.0f); + FlairPen = new Pen(Color.FromArgb(FlairTransparency, Color.Yellow), PanelSize.Width * 8.0f / 600.0f); + } + + public ArcInfo GetScaledRect(float objectTime) + { + ArcInfo info = new(); + float notescaleInit = 1 - ((objectTime - CurrentMeasure) * (1 / TotalMeasureShowNotes)); // Scale from 0-1 + info.NoteScale = (float)Math.Pow(10.0f, notescaleInit) / 10.0f; + float scaledRectSize = DrawRect.Width * info.NoteScale; + float scaledRadius = scaledRectSize / 2.0f; + info.Rect = new RectangleF( + new PointF( + CenterPoint.X - scaledRadius, + CenterPoint.Y - scaledRadius), + new SizeF(scaledRectSize, scaledRectSize)); + return info; + } + + public ArcInfo GetArcInfo(Note note) + { + ArcInfo info = GetScaledRect(note.Measure); + info.StartAngle = -note.Position * 6; + info.ArcLength = -note.Size * 6; + if(info.ArcLength != -360) + { + info.StartAngle -= 2; + info.ArcLength += 4; + } + return info; + } + + public Pen GetPen(Note note, float noteScale = 1.0f) + { + return new Pen(note.Color, PanelSize.Width * 8.0f * noteScale / 600.0f); + } + + public Pen GetPen(NoteType noteType) + { + return new Pen(Color.FromArgb(CursorTransparency, Utils.NoteTypeToColor(noteType)), PanelSize.Width * 24.0f / 600.0f); + } + } + + internal struct ArcInfo + { + public float StartAngle; + public float ArcLength; + public RectangleF Rect; + public float NoteScale; + } +} diff --git a/BAKKA-Sharp/Enums.cs b/BAKKA-Sharp/Enums.cs new file mode 100644 index 0000000..65ee7ec --- /dev/null +++ b/BAKKA-Sharp/Enums.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal enum NoteType + { + TouchNoBonus = 1, + TouchBonus = 2, + SnapRedNoBonus = 3, + SnapBlueNoBonus = 4, + SlideOrangeNoBonus = 5, + SlideOrangeBonus = 6, + SlideGreenNoBonus = 7, + SlideGreenBonus = 8, + HoldStartNoBonus = 9, + HoldJoint = 10, + HoldEnd = 11, + MaskAdd = 12, + MaskRemove = 13, + EndOfChart = 14, + // MaskSameTime = 15, + Chain = 16, + // MaskLane = 17, + // TutorialTag = 18, + // BarLine = 19, + TouchBonusFlair = 20, + SnapRedBonusFlair = 21, + SnapBlueBonusFlair = 22, + SlideOrangeBonusFlair = 23, + SlideGreenBonusFlair = 24, + HoldStartBonusFlair = 25, + ChainBonusFlair = 26, + } + + internal enum GimmickType + { + NoGimmick = 1, + BpmChange = 2, + TimeSignatureChange = 3, + // Stop = 4, + HiSpeedChange = 5, + ReverseStart = 6, + ReverseMiddle = 7, + ReverseEnd = 8, + StopStart = 9, + StopEnd = 10, + }; + + internal enum MaskType + { + Clockwise = 0, + CounterClockwise = 1, + Center = 2 + } + + internal enum BonusType + { + NoBonus = 0, + Bonus = 1, + Flair = 2 + } +} diff --git a/BAKKA-Sharp/GimmickForm.Designer.cs b/BAKKA-Sharp/GimmickForm.Designer.cs new file mode 100644 index 0000000..d7ca10d --- /dev/null +++ b/BAKKA-Sharp/GimmickForm.Designer.cs @@ -0,0 +1,585 @@ +namespace BAKKA_Sharp +{ + partial class GimmickForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.revEnd2Beat2Numeric = new System.Windows.Forms.NumericUpDown(); + this.label18 = new System.Windows.Forms.Label(); + this.revEnd2Beat1Numeric = new System.Windows.Forms.NumericUpDown(); + this.revEnd2MeasureNumeric = new System.Windows.Forms.NumericUpDown(); + this.label19 = new System.Windows.Forms.Label(); + this.revEnd1Beat2Numeric = new System.Windows.Forms.NumericUpDown(); + this.label16 = new System.Windows.Forms.Label(); + this.revEnd1Beat1Numeric = new System.Windows.Forms.NumericUpDown(); + this.revEnd1MeasureNumeric = new System.Windows.Forms.NumericUpDown(); + this.label17 = new System.Windows.Forms.Label(); + this.stopEndBeat2Numeric = new System.Windows.Forms.NumericUpDown(); + this.label10 = new System.Windows.Forms.Label(); + this.stopEndBeat1Numeric = new System.Windows.Forms.NumericUpDown(); + this.stopEndMeasureNumeric = new System.Windows.Forms.NumericUpDown(); + this.label11 = new System.Windows.Forms.Label(); + this.hiSpeedNumeric = new System.Windows.Forms.NumericUpDown(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.timeSig2Numeric = new System.Windows.Forms.NumericUpDown(); + this.timeSig1Numeric = new System.Windows.Forms.NumericUpDown(); + this.gimmickBpmNumeric = new System.Windows.Forms.NumericUpDown(); + this.label15 = new System.Windows.Forms.Label(); + this.insertGimmickButton = new System.Windows.Forms.Button(); + this.startBeat2Numeric = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.startBeat1Numeric = new System.Windows.Forms.NumericUpDown(); + this.startMeasureNumeric = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2Beat2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2Beat1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2MeasureNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1Beat2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1Beat1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1MeasureNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndBeat2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndBeat1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndMeasureNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hiSpeedNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.timeSig2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.timeSig1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.gimmickBpmNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.startBeat2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.startBeat1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.startMeasureNumeric)).BeginInit(); + this.SuspendLayout(); + // + // revEnd2Beat2Numeric + // + this.revEnd2Beat2Numeric.Location = new System.Drawing.Point(219, 206); + this.revEnd2Beat2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.revEnd2Beat2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.revEnd2Beat2Numeric.Name = "revEnd2Beat2Numeric"; + this.revEnd2Beat2Numeric.Size = new System.Drawing.Size(42, 23); + this.revEnd2Beat2Numeric.TabIndex = 38; + this.revEnd2Beat2Numeric.Value = new decimal(new int[] { + 16, + 0, + 0, + 0}); + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(8, 208); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(61, 15); + this.label18.TabIndex = 40; + this.label18.Text = "Rev End 2:"; + // + // revEnd2Beat1Numeric + // + this.revEnd2Beat1Numeric.Location = new System.Drawing.Point(168, 206); + this.revEnd2Beat1Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.revEnd2Beat1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.revEnd2Beat1Numeric.Name = "revEnd2Beat1Numeric"; + this.revEnd2Beat1Numeric.Size = new System.Drawing.Size(38, 23); + this.revEnd2Beat1Numeric.TabIndex = 37; + this.revEnd2Beat1Numeric.ValueChanged += new System.EventHandler(this.revEnd2Beat1Numeric_ValueChanged); + // + // revEnd2MeasureNumeric + // + this.revEnd2MeasureNumeric.Location = new System.Drawing.Point(75, 206); + this.revEnd2MeasureNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.revEnd2MeasureNumeric.Name = "revEnd2MeasureNumeric"; + this.revEnd2MeasureNumeric.Size = new System.Drawing.Size(87, 23); + this.revEnd2MeasureNumeric.TabIndex = 36; + this.revEnd2MeasureNumeric.ValueChanged += new System.EventHandler(this.revEnd2MeasureNumeric_ValueChanged); + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(207, 208); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(12, 15); + this.label19.TabIndex = 39; + this.label19.Text = "/"; + // + // revEnd1Beat2Numeric + // + this.revEnd1Beat2Numeric.Location = new System.Drawing.Point(219, 177); + this.revEnd1Beat2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.revEnd1Beat2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.revEnd1Beat2Numeric.Name = "revEnd1Beat2Numeric"; + this.revEnd1Beat2Numeric.Size = new System.Drawing.Size(42, 23); + this.revEnd1Beat2Numeric.TabIndex = 33; + this.revEnd1Beat2Numeric.Value = new decimal(new int[] { + 16, + 0, + 0, + 0}); + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(8, 179); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(61, 15); + this.label16.TabIndex = 35; + this.label16.Text = "Rev End 1:"; + // + // revEnd1Beat1Numeric + // + this.revEnd1Beat1Numeric.Location = new System.Drawing.Point(168, 177); + this.revEnd1Beat1Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.revEnd1Beat1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.revEnd1Beat1Numeric.Name = "revEnd1Beat1Numeric"; + this.revEnd1Beat1Numeric.Size = new System.Drawing.Size(38, 23); + this.revEnd1Beat1Numeric.TabIndex = 32; + this.revEnd1Beat1Numeric.ValueChanged += new System.EventHandler(this.revEnd1Beat1Numeric_ValueChanged); + // + // revEnd1MeasureNumeric + // + this.revEnd1MeasureNumeric.Location = new System.Drawing.Point(75, 177); + this.revEnd1MeasureNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.revEnd1MeasureNumeric.Name = "revEnd1MeasureNumeric"; + this.revEnd1MeasureNumeric.Size = new System.Drawing.Size(87, 23); + this.revEnd1MeasureNumeric.TabIndex = 31; + this.revEnd1MeasureNumeric.ValueChanged += new System.EventHandler(this.revEnd1MeasureNumeric_ValueChanged); + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(207, 179); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(12, 15); + this.label17.TabIndex = 34; + this.label17.Text = "/"; + // + // stopEndBeat2Numeric + // + this.stopEndBeat2Numeric.Location = new System.Drawing.Point(219, 148); + this.stopEndBeat2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.stopEndBeat2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.stopEndBeat2Numeric.Name = "stopEndBeat2Numeric"; + this.stopEndBeat2Numeric.Size = new System.Drawing.Size(42, 23); + this.stopEndBeat2Numeric.TabIndex = 13; + this.stopEndBeat2Numeric.Value = new decimal(new int[] { + 16, + 0, + 0, + 0}); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(12, 150); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(57, 15); + this.label10.TabIndex = 29; + this.label10.Text = "Stop End:"; + // + // stopEndBeat1Numeric + // + this.stopEndBeat1Numeric.Location = new System.Drawing.Point(168, 148); + this.stopEndBeat1Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.stopEndBeat1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.stopEndBeat1Numeric.Name = "stopEndBeat1Numeric"; + this.stopEndBeat1Numeric.Size = new System.Drawing.Size(38, 23); + this.stopEndBeat1Numeric.TabIndex = 12; + this.stopEndBeat1Numeric.ValueChanged += new System.EventHandler(this.stopEndBeat1Numeric_ValueChanged); + // + // stopEndMeasureNumeric + // + this.stopEndMeasureNumeric.Location = new System.Drawing.Point(75, 148); + this.stopEndMeasureNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.stopEndMeasureNumeric.Name = "stopEndMeasureNumeric"; + this.stopEndMeasureNumeric.Size = new System.Drawing.Size(87, 23); + this.stopEndMeasureNumeric.TabIndex = 11; + this.stopEndMeasureNumeric.ValueChanged += new System.EventHandler(this.stopEndMeasureNumeric_ValueChanged); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(10, 121); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(59, 15); + this.label11.TabIndex = 27; + this.label11.Text = "Hi-Speed:"; + // + // hiSpeedNumeric + // + this.hiSpeedNumeric.DecimalPlaces = 6; + this.hiSpeedNumeric.Location = new System.Drawing.Point(75, 119); + this.hiSpeedNumeric.Minimum = new decimal(new int[] { + 100, + 0, + 0, + -2147483648}); + this.hiSpeedNumeric.Name = "hiSpeedNumeric"; + this.hiSpeedNumeric.Size = new System.Drawing.Size(186, 23); + this.hiSpeedNumeric.TabIndex = 26; + this.hiSpeedNumeric.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(14, 92); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(55, 15); + this.label12.TabIndex = 25; + this.label12.Text = "Time Sig:"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(140, 92); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(12, 15); + this.label13.TabIndex = 13; + this.label13.Text = "/"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(34, 63); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(35, 15); + this.label14.TabIndex = 24; + this.label14.Text = "BPM:"; + // + // timeSig2Numeric + // + this.timeSig2Numeric.Location = new System.Drawing.Point(158, 90); + this.timeSig2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.timeSig2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.timeSig2Numeric.Name = "timeSig2Numeric"; + this.timeSig2Numeric.Size = new System.Drawing.Size(103, 23); + this.timeSig2Numeric.TabIndex = 12; + this.timeSig2Numeric.Value = new decimal(new int[] { + 4, + 0, + 0, + 0}); + // + // timeSig1Numeric + // + this.timeSig1Numeric.Location = new System.Drawing.Point(75, 90); + this.timeSig1Numeric.Maximum = new decimal(new int[] { + 191, + 0, + 0, + 0}); + this.timeSig1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.timeSig1Numeric.Name = "timeSig1Numeric"; + this.timeSig1Numeric.Size = new System.Drawing.Size(59, 23); + this.timeSig1Numeric.TabIndex = 11; + this.timeSig1Numeric.Value = new decimal(new int[] { + 4, + 0, + 0, + 0}); + // + // gimmickBpmNumeric + // + this.gimmickBpmNumeric.DecimalPlaces = 6; + this.gimmickBpmNumeric.Location = new System.Drawing.Point(75, 61); + this.gimmickBpmNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.gimmickBpmNumeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.gimmickBpmNumeric.Name = "gimmickBpmNumeric"; + this.gimmickBpmNumeric.Size = new System.Drawing.Size(186, 23); + this.gimmickBpmNumeric.TabIndex = 23; + this.gimmickBpmNumeric.Value = new decimal(new int[] { + 120, + 0, + 0, + 0}); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(207, 150); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(12, 15); + this.label15.TabIndex = 14; + this.label15.Text = "/"; + // + // insertGimmickButton + // + this.insertGimmickButton.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.insertGimmickButton.Location = new System.Drawing.Point(12, 248); + this.insertGimmickButton.Name = "insertGimmickButton"; + this.insertGimmickButton.Size = new System.Drawing.Size(253, 40); + this.insertGimmickButton.TabIndex = 33; + this.insertGimmickButton.Text = "Insert Gimmick"; + this.insertGimmickButton.UseVisualStyleBackColor = true; + this.insertGimmickButton.Click += new System.EventHandler(this.insertGimmickButton_Click); + // + // startBeat2Numeric + // + this.startBeat2Numeric.Location = new System.Drawing.Point(219, 12); + this.startBeat2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.startBeat2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.startBeat2Numeric.Name = "startBeat2Numeric"; + this.startBeat2Numeric.Size = new System.Drawing.Size(42, 23); + this.startBeat2Numeric.TabIndex = 43; + this.startBeat2Numeric.Value = new decimal(new int[] { + 16, + 0, + 0, + 0}); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(34, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(34, 15); + this.label1.TabIndex = 45; + this.label1.Text = "Start:"; + // + // startBeat1Numeric + // + this.startBeat1Numeric.Location = new System.Drawing.Point(168, 12); + this.startBeat1Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.startBeat1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.startBeat1Numeric.Name = "startBeat1Numeric"; + this.startBeat1Numeric.Size = new System.Drawing.Size(38, 23); + this.startBeat1Numeric.TabIndex = 42; + this.startBeat1Numeric.ValueChanged += new System.EventHandler(this.startBeat1Numeric_ValueChanged); + // + // startMeasureNumeric + // + this.startMeasureNumeric.Location = new System.Drawing.Point(75, 12); + this.startMeasureNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.startMeasureNumeric.Name = "startMeasureNumeric"; + this.startMeasureNumeric.Size = new System.Drawing.Size(87, 23); + this.startMeasureNumeric.TabIndex = 41; + this.startMeasureNumeric.ValueChanged += new System.EventHandler(this.startMeasureNumeric_ValueChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(207, 14); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(12, 15); + this.label2.TabIndex = 44; + this.label2.Text = "/"; + // + // GimmickForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(281, 303); + this.Controls.Add(this.startBeat2Numeric); + this.Controls.Add(this.label1); + this.Controls.Add(this.startBeat1Numeric); + this.Controls.Add(this.startMeasureNumeric); + this.Controls.Add(this.label2); + this.Controls.Add(this.revEnd2Beat2Numeric); + this.Controls.Add(this.insertGimmickButton); + this.Controls.Add(this.label18); + this.Controls.Add(this.revEnd2Beat1Numeric); + this.Controls.Add(this.gimmickBpmNumeric); + this.Controls.Add(this.revEnd2MeasureNumeric); + this.Controls.Add(this.label15); + this.Controls.Add(this.label19); + this.Controls.Add(this.timeSig1Numeric); + this.Controls.Add(this.revEnd1Beat2Numeric); + this.Controls.Add(this.timeSig2Numeric); + this.Controls.Add(this.label16); + this.Controls.Add(this.label14); + this.Controls.Add(this.revEnd1Beat1Numeric); + this.Controls.Add(this.label13); + this.Controls.Add(this.revEnd1MeasureNumeric); + this.Controls.Add(this.label12); + this.Controls.Add(this.label17); + this.Controls.Add(this.hiSpeedNumeric); + this.Controls.Add(this.stopEndBeat2Numeric); + this.Controls.Add(this.label11); + this.Controls.Add(this.label10); + this.Controls.Add(this.stopEndMeasureNumeric); + this.Controls.Add(this.stopEndBeat1Numeric); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "GimmickForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Gimmick Settings"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.GimmickForm_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2Beat2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2Beat1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd2MeasureNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1Beat2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1Beat1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.revEnd1MeasureNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndBeat2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndBeat1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.stopEndMeasureNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hiSpeedNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.timeSig2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.timeSig1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.gimmickBpmNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.startBeat2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.startBeat1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.startMeasureNumeric)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private NumericUpDown revEnd2Beat2Numeric; + private Label label18; + private NumericUpDown revEnd2Beat1Numeric; + private NumericUpDown revEnd2MeasureNumeric; + private Label label19; + private NumericUpDown revEnd1Beat2Numeric; + private Label label16; + private NumericUpDown revEnd1Beat1Numeric; + private NumericUpDown revEnd1MeasureNumeric; + private Label label17; + private NumericUpDown stopEndBeat2Numeric; + private Label label10; + private NumericUpDown stopEndBeat1Numeric; + private NumericUpDown stopEndMeasureNumeric; + private Label label11; + private NumericUpDown hiSpeedNumeric; + private Label label12; + private Label label13; + private Label label14; + private NumericUpDown timeSig2Numeric; + private NumericUpDown timeSig1Numeric; + private NumericUpDown gimmickBpmNumeric; + private Label label15; + private Button insertGimmickButton; + private NumericUpDown startBeat2Numeric; + private Label label1; + private NumericUpDown startBeat1Numeric; + private NumericUpDown startMeasureNumeric; + private Label label2; + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/GimmickForm.cs b/BAKKA-Sharp/GimmickForm.cs new file mode 100644 index 0000000..67a59a5 --- /dev/null +++ b/BAKKA-Sharp/GimmickForm.cs @@ -0,0 +1,394 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace BAKKA_Sharp +{ + public partial class GimmickForm : Form + { + private Gimmick gimmick; + public bool InsertGimmick { get; private set; } + internal List Gimmicks { get; private set; } + + float StartMeasure { get { return (float)startMeasureNumeric.Value + (float)startBeat1Numeric.Value / (float)startBeat2Numeric.Value; } } + float StopEndMeasure { get { return (float)stopEndMeasureNumeric.Value + (float)stopEndBeat1Numeric.Value / (float)stopEndBeat2Numeric.Value; } } + float RevEnd1Measure { get { return (float)revEnd1MeasureNumeric.Value + (float)revEnd1Beat1Numeric.Value / (float)revEnd1Beat2Numeric.Value; } } + float RevEnd2Measure { get { return (float)revEnd2MeasureNumeric.Value + (float)revEnd2Beat1Numeric.Value / (float)revEnd2Beat2Numeric.Value; } } + + + public enum FormReason + { + New, + Edit + }; + + public GimmickForm() + { + InitializeComponent(); + } + + internal DialogResult Show( + Gimmick baseGimmick, FormReason reason, Gimmick? gim1 = null, Gimmick? gim2 = null) + { + var quant = Utils.GetQuantization(baseGimmick.BeatInfo.Beat, 16); + + gimmick = new Gimmick(); + gimmick.BeatInfo = new BeatInfo(baseGimmick.BeatInfo); + gimmick.GimmickType = baseGimmick.GimmickType; + + switch (gimmick.GimmickType) + { + case GimmickType.BpmChange: + startMeasureNumeric.Value = gimmick.BeatInfo.Measure; + startBeat1Numeric.Value = quant.Item1; + startBeat2Numeric.Value = quant.Item2; + if (reason == FormReason.Edit) + gimmickBpmNumeric.Value = (decimal)baseGimmick.BPM; + break; + case GimmickType.TimeSignatureChange: + startMeasureNumeric.Value = gimmick.BeatInfo.Measure; + startBeat1Numeric.Value = quant.Item1; + startBeat2Numeric.Value = quant.Item2; + if (reason == FormReason.Edit) + { + timeSig1Numeric.Value = baseGimmick.TimeSig.Upper; + timeSig2Numeric.Value = baseGimmick.TimeSig.Lower; + } + break; + case GimmickType.HiSpeedChange: + startMeasureNumeric.Value = gimmick.BeatInfo.Measure; + startBeat1Numeric.Value = quant.Item1; + startBeat2Numeric.Value = quant.Item2; + if (reason == FormReason.Edit) + hiSpeedNumeric.Value = (decimal)baseGimmick.HiSpeed; + break; + case GimmickType.ReverseStart: + startMeasureNumeric.Value = gimmick.BeatInfo.Measure; + startBeat1Numeric.Value = quant.Item1; + startBeat2Numeric.Value = quant.Item2; + if (reason == FormReason.Edit && gim1 != null && gim2 != null) + { + var quantMid1 = Utils.GetQuantization(gim1.BeatInfo.Beat, 16); + var quantEnd1 = Utils.GetQuantization(gim2.BeatInfo.Beat, 16); + revEnd1MeasureNumeric.Value = gim1.BeatInfo.Measure; + revEnd1Beat1Numeric.Value = quantMid1.Item1; + revEnd1Beat2Numeric.Value = quantMid1.Item2; + revEnd2MeasureNumeric.Value = gim2.BeatInfo.Measure; + revEnd2Beat1Numeric.Value = quantEnd1.Item1; + revEnd2Beat2Numeric.Value = quantEnd1.Item2; + } + break; + case GimmickType.ReverseMiddle: + var quantStart2 = Utils.GetQuantization(gim1.BeatInfo.Beat, 16); + var quantEnd2 = Utils.GetQuantization(gim2.BeatInfo.Beat, 16); + startMeasureNumeric.Value = gim1.BeatInfo.Measure; + startBeat1Numeric.Value = quantStart2.Item1; + startBeat2Numeric.Value = quantStart2.Item2; + revEnd1MeasureNumeric.Value = gimmick.BeatInfo.Measure; + revEnd1Beat1Numeric.Value = quant.Item1; + revEnd1Beat2Numeric.Value = quant.Item2; + revEnd2MeasureNumeric.Value = gim2.BeatInfo.Measure; + revEnd2Beat1Numeric.Value = quantEnd2.Item1; + revEnd2Beat2Numeric.Value = quantEnd2.Item2; + break; + case GimmickType.ReverseEnd: + var quantStart3 = Utils.GetQuantization(gim1.BeatInfo.Beat, 16); + var quantMid3 = Utils.GetQuantization(gim2.BeatInfo.Beat, 16); + startMeasureNumeric.Value = gim1.BeatInfo.Measure; + startBeat1Numeric.Value = quantStart3.Item1; + startBeat2Numeric.Value = quantStart3.Item2; + revEnd1MeasureNumeric.Value = gim2.BeatInfo.Measure; + revEnd1Beat1Numeric.Value = quantMid3.Item1; + revEnd1Beat2Numeric.Value = quantMid3.Item2; + revEnd2MeasureNumeric.Value = gimmick.BeatInfo.Measure; + revEnd2Beat1Numeric.Value = quant.Item1; + revEnd2Beat2Numeric.Value = quant.Item2; + break; + case GimmickType.StopStart: + startMeasureNumeric.Value = gimmick.BeatInfo.Measure; + startBeat1Numeric.Value = quant.Item1; + startBeat2Numeric.Value = quant.Item2; + if (reason == FormReason.Edit) + { + var stopEnd = Utils.GetQuantization(gim1.BeatInfo.Beat, 16); + stopEndMeasureNumeric.Value = gim1.BeatInfo.Measure; + stopEndBeat1Numeric.Value = stopEnd.Item1; + stopEndBeat2Numeric.Value = stopEnd.Item2; + } + break; + case GimmickType.StopEnd: + var stopStart = Utils.GetQuantization(gim1.BeatInfo.Beat, 16); + startMeasureNumeric.Value = gim1.BeatInfo.Measure; + startBeat1Numeric.Value = stopStart.Item1; + startBeat2Numeric.Value = stopStart.Item2; + stopEndMeasureNumeric.Value = gimmick.BeatInfo.Measure; + stopEndBeat1Numeric.Value = quant.Item1; + stopEndBeat2Numeric.Value = quant.Item2; + break; + default: + break; + } + + gimmickBpmNumeric.Enabled = gimmick.GimmickType == GimmickType.BpmChange; + + timeSig1Numeric.Enabled = gimmick.GimmickType == GimmickType.TimeSignatureChange; + timeSig2Numeric.Enabled = gimmick.GimmickType == GimmickType.TimeSignatureChange; + + hiSpeedNumeric.Enabled = gimmick.GimmickType == GimmickType.HiSpeedChange; + + stopEndMeasureNumeric.Enabled = gimmick.IsStop; + stopEndBeat1Numeric.Enabled = gimmick.IsStop; + stopEndBeat2Numeric.Enabled = gimmick.IsStop; + + revEnd1MeasureNumeric.Enabled = gimmick.IsReverse; + revEnd1Beat1Numeric.Enabled = gimmick.IsReverse; + revEnd1Beat2Numeric.Enabled = gimmick.IsReverse; + revEnd2MeasureNumeric.Enabled = gimmick.IsReverse; + revEnd2Beat1Numeric.Enabled = gimmick.IsReverse; + revEnd2Beat2Numeric.Enabled = gimmick.IsReverse; + + Gimmicks = new List(); + + InsertGimmick = false; + + switch (reason) + { + case FormReason.New: + insertGimmickButton.Text = "Insert Gimmick"; + break; + case FormReason.Edit: + insertGimmickButton.Text = "Edit Gimmick"; + break; + default: + break; + } + return ShowDialog(); + } + + private void GimmickForm_FormClosing(object sender, FormClosingEventArgs e) + { + } + + private void insertGimmickButton_Click(object sender, EventArgs e) + { + switch (gimmick.GimmickType) + { + case GimmickType.BpmChange: + gimmick.BeatInfo = new BeatInfo((int)startMeasureNumeric.Value, (int)startBeat1Numeric.Value * 1920 / (int)startBeat2Numeric.Value); + gimmick.BPM = (double)gimmickBpmNumeric.Value; + Gimmicks.Add(gimmick); + break; + case GimmickType.TimeSignatureChange: + gimmick.BeatInfo = new BeatInfo((int)startMeasureNumeric.Value, (int)startBeat1Numeric.Value * 1920 / (int)startBeat2Numeric.Value); + gimmick.TimeSig.Upper = (int)timeSig1Numeric.Value; + gimmick.TimeSig.Lower = (int)timeSig2Numeric.Value; + Gimmicks.Add(gimmick); + break; + case GimmickType.HiSpeedChange: + gimmick.BeatInfo = new BeatInfo((int)startMeasureNumeric.Value, (int)startBeat1Numeric.Value * 1920 / (int)startBeat2Numeric.Value); + gimmick.HiSpeed = (double)hiSpeedNumeric.Value; + Gimmicks.Add(gimmick); + break; + case GimmickType.ReverseStart: + case GimmickType.ReverseMiddle: + case GimmickType.ReverseEnd: + Gimmicks.Add(new Gimmick() + { + BeatInfo = new BeatInfo((int)startMeasureNumeric.Value, (int)startBeat1Numeric.Value * 1920 / (int)startBeat2Numeric.Value), + GimmickType = GimmickType.ReverseStart + }); + Gimmicks.Add(new Gimmick() + { + BeatInfo = new BeatInfo((int)revEnd1MeasureNumeric.Value, (int)revEnd1Beat1Numeric.Value * 1920 / (int)revEnd1Beat2Numeric.Value), + GimmickType = GimmickType.ReverseMiddle + }); + Gimmicks.Add(new Gimmick() + { + BeatInfo = new BeatInfo((int)revEnd2MeasureNumeric.Value, (int)revEnd2Beat1Numeric.Value * 1920 / (int)revEnd2Beat2Numeric.Value), + GimmickType = GimmickType.ReverseEnd + }); + break; + case GimmickType.StopStart: + case GimmickType.StopEnd: + Gimmicks.Add(new Gimmick() + { + BeatInfo = new BeatInfo((int)startMeasureNumeric.Value, (int)startBeat1Numeric.Value * 1920 / (int)startBeat2Numeric.Value), + GimmickType = GimmickType.StopStart + }); + Gimmicks.Add(new Gimmick() + { + BeatInfo = new BeatInfo((int)stopEndMeasureNumeric.Value, (int)stopEndBeat1Numeric.Value * 1920 / (int)stopEndBeat2Numeric.Value), + GimmickType = GimmickType.StopEnd + }); + break; + default: + break; + } + DialogResult = DialogResult.OK; + } + + private void startMeasureNumeric_ValueChanged(object sender, EventArgs e) + { + if (stopEndMeasureNumeric.Enabled && StopEndMeasure < StartMeasure) + { + stopEndMeasureNumeric.Value = startMeasureNumeric.Value + 1; + } + if (revEnd1MeasureNumeric.Enabled && RevEnd1Measure < StartMeasure) + { + revEnd1MeasureNumeric.Value = startMeasureNumeric.Value + 1; + } + } + + private void startBeat1Numeric_ValueChanged(object sender, EventArgs e) + { + if (startBeat1Numeric.Value >= startBeat2Numeric.Value) + { + startMeasureNumeric.Value++; + startBeat1Numeric.Value = 0; + } + else if (startBeat1Numeric.Value < 0) + { + if (startMeasureNumeric.Value > 0) + { + startMeasureNumeric.Value--; + startBeat1Numeric.Value = startBeat2Numeric.Value - 1; + } + else if (startMeasureNumeric.Value == 0) + { + startBeat1Numeric.Value = 0; + } + } + } + + private void stopEndMeasureNumeric_ValueChanged(object sender, EventArgs e) + { + if (StopEndMeasure < StartMeasure) + { + stopEndMeasureNumeric.Value = startMeasureNumeric.Value; + stopEndBeat1Numeric.Value = startBeat1Numeric.Value; + stopEndBeat2Numeric.Value = startBeat2Numeric.Value; + return; + } + } + + private void stopEndBeat1Numeric_ValueChanged(object sender, EventArgs e) + { + if (StopEndMeasure < StartMeasure) + { + stopEndMeasureNumeric.Value = startMeasureNumeric.Value; + stopEndBeat1Numeric.Value = startBeat1Numeric.Value; + stopEndBeat2Numeric.Value = startBeat2Numeric.Value; + return; + } + + if (stopEndBeat1Numeric.Value >= stopEndBeat2Numeric.Value) + { + stopEndMeasureNumeric.Value++; + stopEndBeat1Numeric.Value = 0; + } + else if (stopEndBeat1Numeric.Value < 0) + { + if (stopEndMeasureNumeric.Value > 0) + { + stopEndMeasureNumeric.Value--; + stopEndBeat1Numeric.Value = stopEndBeat2Numeric.Value - 1; + } + else if (stopEndMeasureNumeric.Value == 0) + { + stopEndBeat1Numeric.Value = 0; + } + } + } + + private void revEnd1MeasureNumeric_ValueChanged(object sender, EventArgs e) + { + if (RevEnd1Measure < StartMeasure) + { + revEnd1MeasureNumeric.Value = startMeasureNumeric.Value; + revEnd1Beat1Numeric.Value = startBeat1Numeric.Value; + revEnd1Beat2Numeric.Value = startBeat2Numeric.Value; + } + if (RevEnd2Measure < RevEnd1Measure) + { + revEnd2MeasureNumeric.Value = revEnd1MeasureNumeric.Value; + revEnd2Beat1Numeric.Value = revEnd1Beat1Numeric.Value; + revEnd2Beat2Numeric.Value = revEnd1Beat2Numeric.Value; + } + } + + private void revEnd1Beat1Numeric_ValueChanged(object sender, EventArgs e) + { + if (RevEnd1Measure < StartMeasure) + { + revEnd1MeasureNumeric.Value = startMeasureNumeric.Value; + revEnd1Beat1Numeric.Value = startBeat1Numeric.Value; + revEnd1Beat2Numeric.Value = startBeat2Numeric.Value; + return; + } + + if (revEnd1Beat1Numeric.Value >= revEnd1Beat2Numeric.Value) + { + revEnd1MeasureNumeric.Value++; + revEnd1Beat1Numeric.Value = 0; + } + else if (revEnd1Beat1Numeric.Value < 0) + { + if (revEnd1MeasureNumeric.Value > 0) + { + revEnd1MeasureNumeric.Value--; + revEnd1Beat1Numeric.Value = revEnd1Beat2Numeric.Value - 1; + } + else if (revEnd1MeasureNumeric.Value == 0) + { + revEnd1Beat1Numeric.Value = 0; + } + } + } + + private void revEnd2MeasureNumeric_ValueChanged(object sender, EventArgs e) + { + if (RevEnd2Measure < RevEnd1Measure) + { + revEnd2MeasureNumeric.Value = revEnd1MeasureNumeric.Value; + revEnd2Beat1Numeric.Value = revEnd1Beat1Numeric.Value; + revEnd2Beat2Numeric.Value = revEnd1Beat2Numeric.Value; + return; + } + } + + private void revEnd2Beat1Numeric_ValueChanged(object sender, EventArgs e) + { + if (RevEnd2Measure < RevEnd1Measure) + { + revEnd2MeasureNumeric.Value = revEnd1MeasureNumeric.Value; + revEnd2Beat1Numeric.Value = revEnd1Beat1Numeric.Value; + revEnd2Beat2Numeric.Value = revEnd1Beat2Numeric.Value; + return; + } + + if (revEnd2Beat1Numeric.Value >= revEnd2Beat2Numeric.Value) + { + revEnd2MeasureNumeric.Value++; + revEnd2Beat1Numeric.Value = 0; + } + else if (revEnd2Beat1Numeric.Value < 0) + { + if (revEnd2MeasureNumeric.Value > 0) + { + revEnd2MeasureNumeric.Value--; + revEnd2Beat1Numeric.Value = revEnd2Beat2Numeric.Value - 1; + } + else if (revEnd2MeasureNumeric.Value == 0) + { + revEnd2Beat1Numeric.Value = 0; + } + } + } + } +} diff --git a/BAKKA-Sharp/GimmickForm.resx b/BAKKA-Sharp/GimmickForm.resx new file mode 100644 index 0000000..b5ae26c --- /dev/null +++ b/BAKKA-Sharp/GimmickForm.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BAKKA-Sharp/InitChartSettingsForm.Designer.cs b/BAKKA-Sharp/InitChartSettingsForm.Designer.cs new file mode 100644 index 0000000..93f4f43 --- /dev/null +++ b/BAKKA-Sharp/InitChartSettingsForm.Designer.cs @@ -0,0 +1,241 @@ +namespace BAKKA_Sharp +{ + partial class InitChartSettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.initSaveSettingsButton = new System.Windows.Forms.Button(); + this.label9 = new System.Windows.Forms.Label(); + this.initMovieOffsetNumeric = new System.Windows.Forms.NumericUpDown(); + this.label8 = new System.Windows.Forms.Label(); + this.initOffsetNumeric = new System.Windows.Forms.NumericUpDown(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.initTimeSig2Numeric = new System.Windows.Forms.NumericUpDown(); + this.initTimeSig1Numeric = new System.Windows.Forms.NumericUpDown(); + this.initBpmNumeric = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.initMovieOffsetNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.initOffsetNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.initTimeSig2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.initTimeSig1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.initBpmNumeric)).BeginInit(); + this.SuspendLayout(); + // + // initSaveSettingsButton + // + this.initSaveSettingsButton.Location = new System.Drawing.Point(12, 128); + this.initSaveSettingsButton.Name = "initSaveSettingsButton"; + this.initSaveSettingsButton.Size = new System.Drawing.Size(218, 23); + this.initSaveSettingsButton.TabIndex = 30; + this.initSaveSettingsButton.Text = "Save Settings"; + this.initSaveSettingsButton.UseVisualStyleBackColor = true; + this.initSaveSettingsButton.Click += new System.EventHandler(this.initSaveSettingsButton_Click); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(46, 101); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(78, 15); + this.label9.TabIndex = 29; + this.label9.Text = "Movie Offset:"; + // + // initMovieOffsetNumeric + // + this.initMovieOffsetNumeric.DecimalPlaces = 6; + this.initMovieOffsetNumeric.Location = new System.Drawing.Point(130, 99); + this.initMovieOffsetNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.initMovieOffsetNumeric.Name = "initMovieOffsetNumeric"; + this.initMovieOffsetNumeric.Size = new System.Drawing.Size(100, 23); + this.initMovieOffsetNumeric.TabIndex = 28; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(82, 74); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(42, 15); + this.label8.TabIndex = 27; + this.label8.Text = "Offset:"; + // + // initOffsetNumeric + // + this.initOffsetNumeric.DecimalPlaces = 6; + this.initOffsetNumeric.Location = new System.Drawing.Point(130, 70); + this.initOffsetNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.initOffsetNumeric.Name = "initOffsetNumeric"; + this.initOffsetNumeric.Size = new System.Drawing.Size(100, 23); + this.initOffsetNumeric.TabIndex = 26; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(35, 43); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(89, 15); + this.label7.TabIndex = 25; + this.label7.Text = "Time Signature:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(174, 43); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(12, 15); + this.label6.TabIndex = 13; + this.label6.Text = "/"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(89, 14); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(35, 15); + this.label5.TabIndex = 24; + this.label5.Text = "BPM:"; + // + // initTimeSig2Numeric + // + this.initTimeSig2Numeric.Location = new System.Drawing.Point(192, 41); + this.initTimeSig2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.initTimeSig2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.initTimeSig2Numeric.Name = "initTimeSig2Numeric"; + this.initTimeSig2Numeric.Size = new System.Drawing.Size(38, 23); + this.initTimeSig2Numeric.TabIndex = 12; + this.initTimeSig2Numeric.Value = new decimal(new int[] { + 4, + 0, + 0, + 0}); + // + // initTimeSig1Numeric + // + this.initTimeSig1Numeric.Location = new System.Drawing.Point(130, 41); + this.initTimeSig1Numeric.Maximum = new decimal(new int[] { + 191, + 0, + 0, + 0}); + this.initTimeSig1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.initTimeSig1Numeric.Name = "initTimeSig1Numeric"; + this.initTimeSig1Numeric.Size = new System.Drawing.Size(38, 23); + this.initTimeSig1Numeric.TabIndex = 11; + this.initTimeSig1Numeric.Value = new decimal(new int[] { + 4, + 0, + 0, + 0}); + // + // initBpmNumeric + // + this.initBpmNumeric.DecimalPlaces = 6; + this.initBpmNumeric.Location = new System.Drawing.Point(130, 12); + this.initBpmNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.initBpmNumeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.initBpmNumeric.Name = "initBpmNumeric"; + this.initBpmNumeric.Size = new System.Drawing.Size(100, 23); + this.initBpmNumeric.TabIndex = 23; + this.initBpmNumeric.Value = new decimal(new int[] { + 120, + 0, + 0, + 0}); + // + // InitChartSettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(242, 164); + this.Controls.Add(this.initSaveSettingsButton); + this.Controls.Add(this.label9); + this.Controls.Add(this.initBpmNumeric); + this.Controls.Add(this.initMovieOffsetNumeric); + this.Controls.Add(this.initTimeSig1Numeric); + this.Controls.Add(this.label8); + this.Controls.Add(this.initTimeSig2Numeric); + this.Controls.Add(this.initOffsetNumeric); + this.Controls.Add(this.label5); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "InitChartSettingsForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Initial Chart Settings"; + ((System.ComponentModel.ISupportInitialize)(this.initMovieOffsetNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.initOffsetNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.initTimeSig2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.initTimeSig1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.initBpmNumeric)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Button initSaveSettingsButton; + private Label label9; + private NumericUpDown initMovieOffsetNumeric; + private Label label8; + private NumericUpDown initOffsetNumeric; + private Label label7; + private Label label6; + private Label label5; + private NumericUpDown initTimeSig2Numeric; + private NumericUpDown initTimeSig1Numeric; + private NumericUpDown initBpmNumeric; + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/InitChartSettingsForm.cs b/BAKKA-Sharp/InitChartSettingsForm.cs new file mode 100644 index 0000000..6633af0 --- /dev/null +++ b/BAKKA-Sharp/InitChartSettingsForm.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace BAKKA_Sharp +{ + public partial class InitChartSettingsForm : Form + { + public double Bpm { get { return (double)initBpmNumeric.Value; } } + public int TimeSigUpper { get { return (int)initTimeSig1Numeric.Value; } } + public int TimeSigLower { get { return (int)initTimeSig2Numeric.Value; } } + public double Offset { get { return (double)initOffsetNumeric.Value; } } + public double MovieOffset { get { return (double)initMovieOffsetNumeric.Value; } } + + public InitChartSettingsForm() + { + InitializeComponent(); + } + + public void SetValues(double bpm, int timeSigUpper, int timeSigLower, double offset, double movieOffset) + { + initBpmNumeric.Value = (decimal)bpm; + initTimeSig1Numeric.Value = timeSigUpper; + initTimeSig2Numeric.Value = timeSigLower; + initOffsetNumeric.Value = (decimal)offset; + initMovieOffsetNumeric.Value = (decimal)movieOffset; + } + + private void initSaveSettingsButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } + } +} diff --git a/BAKKA-Sharp/InitChartSettingsForm.resx b/BAKKA-Sharp/InitChartSettingsForm.resx new file mode 100644 index 0000000..b5ae26c --- /dev/null +++ b/BAKKA-Sharp/InitChartSettingsForm.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BAKKA-Sharp/MainForm.Designer.cs b/BAKKA-Sharp/MainForm.Designer.cs new file mode 100644 index 0000000..7a6bcc6 --- /dev/null +++ b/BAKKA-Sharp/MainForm.Designer.cs @@ -0,0 +1,1479 @@ +namespace BAKKA_Sharp +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); + this.circlePanel = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label4 = new System.Windows.Forms.Label(); + this.beat2Numeric = new System.Windows.Forms.NumericUpDown(); + this.beat1Numeric = new System.Windows.Forms.NumericUpDown(); + this.measureNumeric = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.sizeTrackBar = new System.Windows.Forms.TrackBar(); + this.sizeNumeric = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + this.positionTrackBar = new System.Windows.Forms.TrackBar(); + this.positionNumeric = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.flairRadio = new System.Windows.Forms.RadioButton(); + this.bonusRadio = new System.Windows.Forms.RadioButton(); + this.noBonusRadio = new System.Windows.Forms.RadioButton(); + this.endHoldCheck = new System.Windows.Forms.CheckBox(); + this.endChartButton = new System.Windows.Forms.Button(); + this.holdButton = new System.Windows.Forms.Button(); + this.chainButton = new System.Windows.Forms.Button(); + this.blueButton = new System.Windows.Forms.Button(); + this.redButton = new System.Windows.Forms.Button(); + this.greenButton = new System.Windows.Forms.Button(); + this.orangeButton = new System.Windows.Forms.Button(); + this.tapButton = new System.Windows.Forms.Button(); + this.gimmickTypeGroupBox = new System.Windows.Forms.GroupBox(); + this.removeMaskRadio = new System.Windows.Forms.RadioButton(); + this.reverseButton = new System.Windows.Forms.Button(); + this.addMaskRadio = new System.Windows.Forms.RadioButton(); + this.stopButton = new System.Windows.Forms.Button(); + this.hiSpeedButton = new System.Windows.Forms.Button(); + this.timeSigButton = new System.Windows.Forms.Button(); + this.bpmChangeButton = new System.Windows.Forms.Button(); + this.maskButton = new System.Windows.Forms.Button(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.centerMaskRadio = new System.Windows.Forms.RadioButton(); + this.clockwiseMaskRadio = new System.Windows.Forms.RadioButton(); + this.cClockwiseMaskRadio = new System.Windows.Forms.RadioButton(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.currentSelectionLabel = new System.Windows.Forms.Label(); + this.playbackGroupBox = new System.Windows.Forms.GroupBox(); + this.songFileLabel = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.songTrackBar = new System.Windows.Forms.TrackBar(); + this.selectSongButton = new System.Windows.Forms.Button(); + this.playButton = new System.Windows.Forms.Button(); + this.openSongDialog = new System.Windows.Forms.OpenFileDialog(); + this.updateTimer = new System.Windows.Forms.Timer(this.components); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.label21 = new System.Windows.Forms.Label(); + this.visualHispeedNumeric = new System.Windows.Forms.NumericUpDown(); + this.insertButton = new System.Windows.Forms.Button(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.showCursorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.showCursorDuringPlaybackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.highlightViewedNoteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.chartToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.initialChartSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.gimmickDeleteButton = new System.Windows.Forms.Button(); + this.gimmickEditButton = new System.Windows.Forms.Button(); + this.gimmickBeatLabel = new System.Windows.Forms.Label(); + this.gimmickValueLabel = new System.Windows.Forms.Label(); + this.gimmickTypeLabel = new System.Windows.Forms.Label(); + this.gimmickMeasureLabel = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.gimmickNextButton = new System.Windows.Forms.Button(); + this.gimmickPrevButton = new System.Windows.Forms.Button(); + this.noteViewGroupBox = new System.Windows.Forms.GroupBox(); + this.noteMaskLabel = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.noteSizeLabel = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.noteNextMeasureButton = new System.Windows.Forms.Button(); + this.notePrevMeasureButton = new System.Windows.Forms.Button(); + this.noteDeleteSelectedButton = new System.Windows.Forms.Button(); + this.noteEditSelectedButton = new System.Windows.Forms.Button(); + this.noteBeatLabel = new System.Windows.Forms.Label(); + this.notePositionLabel = new System.Windows.Forms.Label(); + this.noteTypeLabel = new System.Windows.Forms.Label(); + this.noteMeasureLabel = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.noteNextButton = new System.Windows.Forms.Button(); + this.notePrevButton = new System.Windows.Forms.Button(); + this.autoSaveTimer = new System.Windows.Forms.Timer(this.components); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.beat2Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.beat1Numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.measureNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.sizeTrackBar)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.sizeNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.positionTrackBar)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.positionNumeric)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.gimmickTypeGroupBox.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.playbackGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.songTrackBar)).BeginInit(); + this.groupBox9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.visualHispeedNumeric)).BeginInit(); + this.menuStrip.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.noteViewGroupBox.SuspendLayout(); + this.SuspendLayout(); + // + // openFileDialog + // + this.openFileDialog.FileName = "openFileDialog"; + this.openFileDialog.Filter = "MER files|*.mer"; + this.openFileDialog.Title = "Select Chart File to Open"; + // + // saveFileDialog + // + this.saveFileDialog.DefaultExt = "*.mer"; + this.saveFileDialog.Filter = "MER files|*.mer"; + // + // circlePanel + // + this.circlePanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.circlePanel.Location = new System.Drawing.Point(257, 40); + this.circlePanel.Name = "circlePanel"; + this.circlePanel.Size = new System.Drawing.Size(611, 611); + this.circlePanel.TabIndex = 2; + this.circlePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.circlePanel_Paint); + this.circlePanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.circlePanel_MouseDown); + this.circlePanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.circlePanel_MouseMove); + this.circlePanel.MouseUp += new System.Windows.Forms.MouseEventHandler(this.circlePanel_MouseUp); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.beat2Numeric); + this.groupBox1.Controls.Add(this.beat1Numeric); + this.groupBox1.Controls.Add(this.measureNumeric); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.sizeTrackBar); + this.groupBox1.Controls.Add(this.sizeNumeric); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.positionTrackBar); + this.groupBox1.Controls.Add(this.positionNumeric); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(12, 446); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(239, 160); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Current Note Settings"; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(175, 131); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(12, 15); + this.label4.TabIndex = 10; + this.label4.Text = "/"; + // + // beat2Numeric + // + this.beat2Numeric.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.beat2Numeric.Location = new System.Drawing.Point(193, 129); + this.beat2Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.beat2Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.beat2Numeric.Name = "beat2Numeric"; + this.beat2Numeric.Size = new System.Drawing.Size(38, 23); + this.beat2Numeric.TabIndex = 9; + this.beat2Numeric.Value = new decimal(new int[] { + 16, + 0, + 0, + 0}); + this.beat2Numeric.ValueChanged += new System.EventHandler(this.beat2Numeric_ValueChanged); + // + // beat1Numeric + // + this.beat1Numeric.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.beat1Numeric.Location = new System.Drawing.Point(131, 129); + this.beat1Numeric.Maximum = new decimal(new int[] { + 1920, + 0, + 0, + 0}); + this.beat1Numeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.beat1Numeric.Name = "beat1Numeric"; + this.beat1Numeric.Size = new System.Drawing.Size(38, 23); + this.beat1Numeric.TabIndex = 8; + this.beat1Numeric.ValueChanged += new System.EventHandler(this.beat1Numeric_ValueChanged); + // + // measureNumeric + // + this.measureNumeric.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.measureNumeric.Location = new System.Drawing.Point(6, 129); + this.measureNumeric.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.measureNumeric.Name = "measureNumeric"; + this.measureNumeric.Size = new System.Drawing.Size(119, 23); + this.measureNumeric.TabIndex = 7; + this.measureNumeric.ValueChanged += new System.EventHandler(this.measureNumeric_ValueChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 111); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(55, 15); + this.label3.TabIndex = 6; + this.label3.Text = "Measure:"; + // + // sizeTrackBar + // + this.sizeTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.sizeTrackBar.Location = new System.Drawing.Point(50, 81); + this.sizeTrackBar.Maximum = 60; + this.sizeTrackBar.Minimum = 1; + this.sizeTrackBar.Name = "sizeTrackBar"; + this.sizeTrackBar.Size = new System.Drawing.Size(183, 45); + this.sizeTrackBar.TabIndex = 5; + this.sizeTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; + this.sizeTrackBar.Value = 1; + this.sizeTrackBar.ValueChanged += new System.EventHandler(this.sizeTrackBar_ValueChanged); + // + // sizeNumeric + // + this.sizeNumeric.Location = new System.Drawing.Point(6, 81); + this.sizeNumeric.Maximum = new decimal(new int[] { + 60, + 0, + 0, + 0}); + this.sizeNumeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.sizeNumeric.Name = "sizeNumeric"; + this.sizeNumeric.Size = new System.Drawing.Size(38, 23); + this.sizeNumeric.TabIndex = 4; + this.sizeNumeric.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 63); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(30, 15); + this.label2.TabIndex = 3; + this.label2.Text = "Size:"; + // + // positionTrackBar + // + this.positionTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.positionTrackBar.Location = new System.Drawing.Point(50, 37); + this.positionTrackBar.Maximum = 59; + this.positionTrackBar.Name = "positionTrackBar"; + this.positionTrackBar.Size = new System.Drawing.Size(183, 45); + this.positionTrackBar.TabIndex = 2; + this.positionTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; + this.positionTrackBar.ValueChanged += new System.EventHandler(this.positionTrackBar_ValueChanged); + // + // positionNumeric + // + this.positionNumeric.Location = new System.Drawing.Point(6, 37); + this.positionNumeric.Maximum = new decimal(new int[] { + 59, + 0, + 0, + 0}); + this.positionNumeric.Name = "positionNumeric"; + this.positionNumeric.Size = new System.Drawing.Size(38, 23); + this.positionNumeric.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 15); + this.label1.TabIndex = 0; + this.label1.Text = "Position:"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.flairRadio); + this.groupBox2.Controls.Add(this.bonusRadio); + this.groupBox2.Controls.Add(this.noBonusRadio); + this.groupBox2.Controls.Add(this.endHoldCheck); + this.groupBox2.Controls.Add(this.endChartButton); + this.groupBox2.Controls.Add(this.holdButton); + this.groupBox2.Controls.Add(this.chainButton); + this.groupBox2.Controls.Add(this.blueButton); + this.groupBox2.Controls.Add(this.redButton); + this.groupBox2.Controls.Add(this.greenButton); + this.groupBox2.Controls.Add(this.orangeButton); + this.groupBox2.Controls.Add(this.tapButton); + this.groupBox2.Location = new System.Drawing.Point(12, 27); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(109, 358); + this.groupBox2.TabIndex = 4; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Note Types"; + // + // flairRadio + // + this.flairRadio.AutoSize = true; + this.flairRadio.Location = new System.Drawing.Point(6, 329); + this.flairRadio.Name = "flairRadio"; + this.flairRadio.Size = new System.Drawing.Size(94, 19); + this.flairRadio.TabIndex = 16; + this.flairRadio.Text = "R Note (Flair)"; + this.flairRadio.UseVisualStyleBackColor = true; + this.flairRadio.CheckedChanged += new System.EventHandler(this.BonusRadioCheck); + // + // bonusRadio + // + this.bonusRadio.AutoSize = true; + this.bonusRadio.Location = new System.Drawing.Point(6, 304); + this.bonusRadio.Name = "bonusRadio"; + this.bonusRadio.Size = new System.Drawing.Size(79, 19); + this.bonusRadio.TabIndex = 15; + this.bonusRadio.Text = "Bonus Get"; + this.bonusRadio.UseVisualStyleBackColor = true; + this.bonusRadio.CheckedChanged += new System.EventHandler(this.BonusRadioCheck); + // + // noBonusRadio + // + this.noBonusRadio.AutoSize = true; + this.noBonusRadio.Checked = true; + this.noBonusRadio.Location = new System.Drawing.Point(6, 279); + this.noBonusRadio.Name = "noBonusRadio"; + this.noBonusRadio.Size = new System.Drawing.Size(77, 19); + this.noBonusRadio.TabIndex = 14; + this.noBonusRadio.TabStop = true; + this.noBonusRadio.Text = "No Bonus"; + this.noBonusRadio.UseVisualStyleBackColor = true; + this.noBonusRadio.CheckedChanged += new System.EventHandler(this.BonusRadioCheck); + // + // endHoldCheck + // + this.endHoldCheck.AutoSize = true; + this.endHoldCheck.Location = new System.Drawing.Point(6, 254); + this.endHoldCheck.Name = "endHoldCheck"; + this.endHoldCheck.Size = new System.Drawing.Size(75, 19); + this.endHoldCheck.TabIndex = 13; + this.endHoldCheck.Text = "End Hold"; + this.endHoldCheck.UseVisualStyleBackColor = true; + this.endHoldCheck.CheckedChanged += new System.EventHandler(this.endHoldCheck_CheckedChanged); + // + // endChartButton + // + this.endChartButton.Location = new System.Drawing.Point(6, 225); + this.endChartButton.Name = "endChartButton"; + this.endChartButton.Size = new System.Drawing.Size(86, 23); + this.endChartButton.TabIndex = 12; + this.endChartButton.Text = "End of Chart"; + this.endChartButton.UseVisualStyleBackColor = true; + this.endChartButton.Click += new System.EventHandler(this.endChartButton_Click); + // + // holdButton + // + this.holdButton.BackColor = System.Drawing.Color.Yellow; + this.holdButton.Location = new System.Drawing.Point(6, 196); + this.holdButton.Name = "holdButton"; + this.holdButton.Size = new System.Drawing.Size(86, 23); + this.holdButton.TabIndex = 11; + this.holdButton.Text = "Hold (H)"; + this.holdButton.UseVisualStyleBackColor = false; + this.holdButton.Click += new System.EventHandler(this.holdButton_Click); + // + // chainButton + // + this.chainButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(190)))), ((int)(((byte)(45))))); + this.chainButton.Location = new System.Drawing.Point(6, 167); + this.chainButton.Name = "chainButton"; + this.chainButton.Size = new System.Drawing.Size(86, 23); + this.chainButton.TabIndex = 10; + this.chainButton.Text = "Chain (Y)"; + this.chainButton.UseVisualStyleBackColor = false; + this.chainButton.Click += new System.EventHandler(this.chainButton_Click); + // + // blueButton + // + this.blueButton.BackColor = System.Drawing.Color.Cyan; + this.blueButton.ForeColor = System.Drawing.SystemColors.ControlText; + this.blueButton.Location = new System.Drawing.Point(6, 138); + this.blueButton.Name = "blueButton"; + this.blueButton.Size = new System.Drawing.Size(86, 23); + this.blueButton.TabIndex = 9; + this.blueButton.Text = "↓ Snap (B)"; + this.blueButton.UseVisualStyleBackColor = false; + this.blueButton.Click += new System.EventHandler(this.blueButton_Click); + // + // redButton + // + this.redButton.BackColor = System.Drawing.Color.Red; + this.redButton.ForeColor = System.Drawing.Color.White; + this.redButton.Location = new System.Drawing.Point(6, 109); + this.redButton.Name = "redButton"; + this.redButton.Size = new System.Drawing.Size(86, 23); + this.redButton.TabIndex = 8; + this.redButton.Text = "↑ Snap (R)"; + this.redButton.UseVisualStyleBackColor = false; + this.redButton.Click += new System.EventHandler(this.redButton_Click); + // + // greenButton + // + this.greenButton.BackColor = System.Drawing.Color.Lime; + this.greenButton.Location = new System.Drawing.Point(6, 80); + this.greenButton.Name = "greenButton"; + this.greenButton.Size = new System.Drawing.Size(86, 23); + this.greenButton.TabIndex = 7; + this.greenButton.Text = "→ Slide (G)"; + this.greenButton.UseVisualStyleBackColor = false; + this.greenButton.Click += new System.EventHandler(this.greenButton_Click); + // + // orangeButton + // + this.orangeButton.BackColor = System.Drawing.Color.Orange; + this.orangeButton.Location = new System.Drawing.Point(6, 51); + this.orangeButton.Name = "orangeButton"; + this.orangeButton.Size = new System.Drawing.Size(86, 23); + this.orangeButton.TabIndex = 6; + this.orangeButton.Text = "← Slide (O)"; + this.orangeButton.UseVisualStyleBackColor = false; + this.orangeButton.Click += new System.EventHandler(this.orangeButton_Click); + // + // tapButton + // + this.tapButton.BackColor = System.Drawing.Color.Fuchsia; + this.tapButton.Location = new System.Drawing.Point(6, 22); + this.tapButton.Name = "tapButton"; + this.tapButton.Size = new System.Drawing.Size(86, 23); + this.tapButton.TabIndex = 5; + this.tapButton.Text = "Touch (T)"; + this.tapButton.UseVisualStyleBackColor = false; + this.tapButton.Click += new System.EventHandler(this.tapButton_Click); + // + // gimmickTypeGroupBox + // + this.gimmickTypeGroupBox.Controls.Add(this.removeMaskRadio); + this.gimmickTypeGroupBox.Controls.Add(this.reverseButton); + this.gimmickTypeGroupBox.Controls.Add(this.addMaskRadio); + this.gimmickTypeGroupBox.Controls.Add(this.stopButton); + this.gimmickTypeGroupBox.Controls.Add(this.hiSpeedButton); + this.gimmickTypeGroupBox.Controls.Add(this.timeSigButton); + this.gimmickTypeGroupBox.Controls.Add(this.bpmChangeButton); + this.gimmickTypeGroupBox.Controls.Add(this.maskButton); + this.gimmickTypeGroupBox.Location = new System.Drawing.Point(127, 30); + this.gimmickTypeGroupBox.Name = "gimmickTypeGroupBox"; + this.gimmickTypeGroupBox.Size = new System.Drawing.Size(124, 249); + this.gimmickTypeGroupBox.TabIndex = 5; + this.gimmickTypeGroupBox.TabStop = false; + this.gimmickTypeGroupBox.Text = "Gimmick Types"; + // + // removeMaskRadio + // + this.removeMaskRadio.AutoSize = true; + this.removeMaskRadio.Location = new System.Drawing.Point(6, 222); + this.removeMaskRadio.Name = "removeMaskRadio"; + this.removeMaskRadio.Size = new System.Drawing.Size(99, 19); + this.removeMaskRadio.TabIndex = 18; + this.removeMaskRadio.Text = "Remove Mask"; + this.removeMaskRadio.UseVisualStyleBackColor = true; + this.removeMaskRadio.CheckedChanged += new System.EventHandler(this.maskRatio_CheckChanged); + // + // reverseButton + // + this.reverseButton.Location = new System.Drawing.Point(6, 167); + this.reverseButton.Name = "reverseButton"; + this.reverseButton.Size = new System.Drawing.Size(112, 23); + this.reverseButton.TabIndex = 5; + this.reverseButton.Text = "Reverse"; + this.reverseButton.UseVisualStyleBackColor = true; + this.reverseButton.Click += new System.EventHandler(this.reverseButton_Click); + // + // addMaskRadio + // + this.addMaskRadio.AutoSize = true; + this.addMaskRadio.Checked = true; + this.addMaskRadio.Location = new System.Drawing.Point(6, 197); + this.addMaskRadio.Name = "addMaskRadio"; + this.addMaskRadio.Size = new System.Drawing.Size(78, 19); + this.addMaskRadio.TabIndex = 17; + this.addMaskRadio.TabStop = true; + this.addMaskRadio.Text = "Add Mask"; + this.addMaskRadio.UseVisualStyleBackColor = true; + this.addMaskRadio.CheckedChanged += new System.EventHandler(this.maskRatio_CheckChanged); + // + // stopButton + // + this.stopButton.Location = new System.Drawing.Point(6, 138); + this.stopButton.Name = "stopButton"; + this.stopButton.Size = new System.Drawing.Size(112, 23); + this.stopButton.TabIndex = 4; + this.stopButton.Text = "Stop"; + this.stopButton.UseVisualStyleBackColor = true; + this.stopButton.Click += new System.EventHandler(this.stopButton_Click); + // + // hiSpeedButton + // + this.hiSpeedButton.Location = new System.Drawing.Point(6, 109); + this.hiSpeedButton.Name = "hiSpeedButton"; + this.hiSpeedButton.Size = new System.Drawing.Size(112, 23); + this.hiSpeedButton.TabIndex = 3; + this.hiSpeedButton.Text = "Hi-Speed"; + this.hiSpeedButton.UseVisualStyleBackColor = true; + this.hiSpeedButton.Click += new System.EventHandler(this.hiSpeedButton_Click); + // + // timeSigButton + // + this.timeSigButton.Location = new System.Drawing.Point(6, 80); + this.timeSigButton.Name = "timeSigButton"; + this.timeSigButton.Size = new System.Drawing.Size(112, 23); + this.timeSigButton.TabIndex = 2; + this.timeSigButton.Text = "Time Signature"; + this.timeSigButton.UseVisualStyleBackColor = true; + this.timeSigButton.Click += new System.EventHandler(this.timeSigButton_Click); + // + // bpmChangeButton + // + this.bpmChangeButton.Location = new System.Drawing.Point(6, 51); + this.bpmChangeButton.Name = "bpmChangeButton"; + this.bpmChangeButton.Size = new System.Drawing.Size(112, 23); + this.bpmChangeButton.TabIndex = 1; + this.bpmChangeButton.Text = "BPM Change"; + this.bpmChangeButton.UseVisualStyleBackColor = true; + this.bpmChangeButton.Click += new System.EventHandler(this.bpmChangeButton_Click); + // + // maskButton + // + this.maskButton.Location = new System.Drawing.Point(6, 22); + this.maskButton.Name = "maskButton"; + this.maskButton.Size = new System.Drawing.Size(112, 23); + this.maskButton.TabIndex = 0; + this.maskButton.Text = "Mask"; + this.maskButton.UseVisualStyleBackColor = true; + this.maskButton.Click += new System.EventHandler(this.maskButton_Click); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.centerMaskRadio); + this.groupBox4.Controls.Add(this.clockwiseMaskRadio); + this.groupBox4.Controls.Add(this.cClockwiseMaskRadio); + this.groupBox4.Location = new System.Drawing.Point(127, 285); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(124, 100); + this.groupBox4.TabIndex = 19; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Mask Setting"; + // + // centerMaskRadio + // + this.centerMaskRadio.AutoSize = true; + this.centerMaskRadio.Location = new System.Drawing.Point(6, 72); + this.centerMaskRadio.Name = "centerMaskRadio"; + this.centerMaskRadio.Size = new System.Drawing.Size(91, 19); + this.centerMaskRadio.TabIndex = 19; + this.centerMaskRadio.Text = "From Center"; + this.centerMaskRadio.UseVisualStyleBackColor = true; + this.centerMaskRadio.CheckedChanged += new System.EventHandler(this.maskRatio_CheckChanged); + // + // clockwiseMaskRadio + // + this.clockwiseMaskRadio.AutoSize = true; + this.clockwiseMaskRadio.Checked = true; + this.clockwiseMaskRadio.Location = new System.Drawing.Point(6, 22); + this.clockwiseMaskRadio.Name = "clockwiseMaskRadio"; + this.clockwiseMaskRadio.Size = new System.Drawing.Size(78, 19); + this.clockwiseMaskRadio.TabIndex = 17; + this.clockwiseMaskRadio.TabStop = true; + this.clockwiseMaskRadio.Text = "Clockwise"; + this.clockwiseMaskRadio.UseVisualStyleBackColor = true; + this.clockwiseMaskRadio.CheckedChanged += new System.EventHandler(this.maskRatio_CheckChanged); + // + // cClockwiseMaskRadio + // + this.cClockwiseMaskRadio.AutoSize = true; + this.cClockwiseMaskRadio.Location = new System.Drawing.Point(6, 47); + this.cClockwiseMaskRadio.Name = "cClockwiseMaskRadio"; + this.cClockwiseMaskRadio.Size = new System.Drawing.Size(91, 19); + this.cClockwiseMaskRadio.TabIndex = 18; + this.cClockwiseMaskRadio.Text = "C-Clockwise"; + this.cClockwiseMaskRadio.UseVisualStyleBackColor = true; + this.cClockwiseMaskRadio.CheckedChanged += new System.EventHandler(this.maskRatio_CheckChanged); + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.currentSelectionLabel); + this.groupBox5.Location = new System.Drawing.Point(12, 392); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(239, 48); + this.groupBox5.TabIndex = 20; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Current Selection"; + // + // currentSelectionLabel + // + this.currentSelectionLabel.AutoSize = true; + this.currentSelectionLabel.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.currentSelectionLabel.Location = new System.Drawing.Point(6, 19); + this.currentSelectionLabel.Name = "currentSelectionLabel"; + this.currentSelectionLabel.Size = new System.Drawing.Size(48, 20); + this.currentSelectionLabel.TabIndex = 21; + this.currentSelectionLabel.Text = "Touch"; + // + // playbackGroupBox + // + this.playbackGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.playbackGroupBox.Controls.Add(this.songFileLabel); + this.playbackGroupBox.Controls.Add(this.label20); + this.playbackGroupBox.Controls.Add(this.songTrackBar); + this.playbackGroupBox.Controls.Add(this.selectSongButton); + this.playbackGroupBox.Controls.Add(this.playButton); + this.playbackGroupBox.Location = new System.Drawing.Point(12, 657); + this.playbackGroupBox.Name = "playbackGroupBox"; + this.playbackGroupBox.Size = new System.Drawing.Size(736, 118); + this.playbackGroupBox.TabIndex = 32; + this.playbackGroupBox.TabStop = false; + this.playbackGroupBox.Text = "Playback"; + // + // songFileLabel + // + this.songFileLabel.AutoSize = true; + this.songFileLabel.Location = new System.Drawing.Point(98, 81); + this.songFileLabel.Name = "songFileLabel"; + this.songFileLabel.Size = new System.Drawing.Size(99, 15); + this.songFileLabel.TabIndex = 33; + this.songFileLabel.Text = "Select File (*.ogg)"; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.label20.Location = new System.Drawing.Point(6, 77); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(73, 20); + this.label20.TabIndex = 33; + this.label20.Text = "Song File:"; + // + // songTrackBar + // + this.songTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.songTrackBar.Location = new System.Drawing.Point(98, 22); + this.songTrackBar.Name = "songTrackBar"; + this.songTrackBar.Size = new System.Drawing.Size(632, 45); + this.songTrackBar.TabIndex = 2; + this.songTrackBar.ValueChanged += new System.EventHandler(this.songTrackBar_ValueChanged); + // + // selectSongButton + // + this.selectSongButton.Location = new System.Drawing.Point(6, 51); + this.selectSongButton.Name = "selectSongButton"; + this.selectSongButton.Size = new System.Drawing.Size(86, 23); + this.selectSongButton.TabIndex = 1; + this.selectSongButton.Text = "Select Song"; + this.selectSongButton.UseVisualStyleBackColor = true; + this.selectSongButton.Click += new System.EventHandler(this.selectSongButton_Click); + // + // playButton + // + this.playButton.Location = new System.Drawing.Point(6, 22); + this.playButton.Name = "playButton"; + this.playButton.Size = new System.Drawing.Size(86, 23); + this.playButton.TabIndex = 0; + this.playButton.Text = "Play (P)"; + this.playButton.UseVisualStyleBackColor = true; + this.playButton.Click += new System.EventHandler(this.playButton_Click); + // + // openSongDialog + // + this.openSongDialog.Filter = "Audio Files (*.ogg;*.mod;*.it;*.xm;*.it;*.s3d)|*.ogg;*.mod;*.it;*.xm;*.it;*.s3d"; + // + // updateTimer + // + this.updateTimer.Interval = 20; + this.updateTimer.Tick += new System.EventHandler(this.updateTimer_Tick); + // + // groupBox9 + // + this.groupBox9.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox9.Controls.Add(this.label21); + this.groupBox9.Controls.Add(this.visualHispeedNumeric); + this.groupBox9.Location = new System.Drawing.Point(754, 657); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Size = new System.Drawing.Size(114, 118); + this.groupBox9.TabIndex = 0; + this.groupBox9.TabStop = false; + this.groupBox9.Text = "Visual Settings"; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(6, 19); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(59, 15); + this.label21.TabIndex = 11; + this.label21.Text = "Hi-Speed:"; + // + // visualHispeedNumeric + // + this.visualHispeedNumeric.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.visualHispeedNumeric.DecimalPlaces = 2; + this.visualHispeedNumeric.Increment = new decimal(new int[] { + 5, + 0, + 0, + 65536}); + this.visualHispeedNumeric.Location = new System.Drawing.Point(6, 37); + this.visualHispeedNumeric.Maximum = new decimal(new int[] { + 500, + 0, + 0, + 0}); + this.visualHispeedNumeric.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 196608}); + this.visualHispeedNumeric.Name = "visualHispeedNumeric"; + this.visualHispeedNumeric.Size = new System.Drawing.Size(102, 23); + this.visualHispeedNumeric.TabIndex = 11; + this.visualHispeedNumeric.Value = new decimal(new int[] { + 5, + 0, + 0, + 65536}); + this.visualHispeedNumeric.ValueChanged += new System.EventHandler(this.visualHispeedNumeric_ValueChanged); + // + // insertButton + // + this.insertButton.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.insertButton.Location = new System.Drawing.Point(12, 612); + this.insertButton.Name = "insertButton"; + this.insertButton.Size = new System.Drawing.Size(239, 39); + this.insertButton.TabIndex = 12; + this.insertButton.Text = "Insert Object (I)"; + this.insertButton.UseVisualStyleBackColor = true; + this.insertButton.Click += new System.EventHandler(this.insertButton_Click); + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newToolStripMenuItem, + this.openToolStripMenuItem, + this.saveToolStripMenuItem, + this.saveAsToolStripMenuItem, + this.exitToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // newToolStripMenuItem + // + this.newToolStripMenuItem.Name = "newToolStripMenuItem"; + this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.newToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.newToolStripMenuItem.Text = "New"; + this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); + // + // openToolStripMenuItem + // + this.openToolStripMenuItem.Name = "openToolStripMenuItem"; + this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.openToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.openToolStripMenuItem.Text = "Open"; + this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); + this.saveToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // saveAsToolStripMenuItem + // + this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; + this.saveAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.S))); + this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveAsToolStripMenuItem.Text = "Save As"; + this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.exitToolStripMenuItem.Text = "Exit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // viewToolStripMenuItem + // + this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.showCursorToolStripMenuItem, + this.showCursorDuringPlaybackToolStripMenuItem, + this.highlightViewedNoteToolStripMenuItem}); + this.viewToolStripMenuItem.Name = "viewToolStripMenuItem"; + this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.viewToolStripMenuItem.Text = "View"; + // + // showCursorToolStripMenuItem + // + this.showCursorToolStripMenuItem.Checked = true; + this.showCursorToolStripMenuItem.CheckOnClick = true; + this.showCursorToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.showCursorToolStripMenuItem.Name = "showCursorToolStripMenuItem"; + this.showCursorToolStripMenuItem.Size = new System.Drawing.Size(230, 22); + this.showCursorToolStripMenuItem.Text = "Show Cursor"; + this.showCursorToolStripMenuItem.Click += new System.EventHandler(this.showCursorToolStripMenuItem_Click); + // + // showCursorDuringPlaybackToolStripMenuItem + // + this.showCursorDuringPlaybackToolStripMenuItem.Name = "showCursorDuringPlaybackToolStripMenuItem"; + this.showCursorDuringPlaybackToolStripMenuItem.Size = new System.Drawing.Size(230, 22); + this.showCursorDuringPlaybackToolStripMenuItem.Text = "Show Cursor During Playback"; + // + // highlightViewedNoteToolStripMenuItem + // + this.highlightViewedNoteToolStripMenuItem.Checked = true; + this.highlightViewedNoteToolStripMenuItem.CheckOnClick = true; + this.highlightViewedNoteToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.highlightViewedNoteToolStripMenuItem.Name = "highlightViewedNoteToolStripMenuItem"; + this.highlightViewedNoteToolStripMenuItem.Size = new System.Drawing.Size(230, 22); + this.highlightViewedNoteToolStripMenuItem.Text = "Highlight Viewed Note"; + // + // chartToolStripMenuItem + // + this.chartToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.initialChartSettingsToolStripMenuItem}); + this.chartToolStripMenuItem.Name = "chartToolStripMenuItem"; + this.chartToolStripMenuItem.Size = new System.Drawing.Size(48, 20); + this.chartToolStripMenuItem.Text = "Chart"; + // + // initialChartSettingsToolStripMenuItem + // + this.initialChartSettingsToolStripMenuItem.Name = "initialChartSettingsToolStripMenuItem"; + this.initialChartSettingsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.initialChartSettingsToolStripMenuItem.Text = "Initial Chart Settings"; + this.initialChartSettingsToolStripMenuItem.Click += new System.EventHandler(this.initialChartSettingsToolStripMenuItem_Click); + // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); + this.aboutToolStripMenuItem.Text = "About"; + this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); + // + // menuStrip + // + this.menuStrip.BackColor = System.Drawing.SystemColors.ControlDark; + this.menuStrip.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem, + this.editToolStripMenuItem, + this.viewToolStripMenuItem, + this.chartToolStripMenuItem, + this.aboutToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(1142, 24); + this.menuStrip.TabIndex = 0; + this.menuStrip.Text = "menuStrip1"; + // + // editToolStripMenuItem + // + this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.undoToolStripMenuItem, + this.redoToolStripMenuItem}); + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + this.editToolStripMenuItem.Text = "Edit"; + // + // undoToolStripMenuItem + // + this.undoToolStripMenuItem.Name = "undoToolStripMenuItem"; + this.undoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); + this.undoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.undoToolStripMenuItem.Text = "Undo"; + this.undoToolStripMenuItem.Click += new System.EventHandler(this.undoToolStripMenuItem_Click); + // + // redoToolStripMenuItem + // + this.redoToolStripMenuItem.Name = "redoToolStripMenuItem"; + this.redoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); + this.redoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.redoToolStripMenuItem.Text = "Redo"; + this.redoToolStripMenuItem.Click += new System.EventHandler(this.redoToolStripMenuItem_Click); + // + // groupBox6 + // + this.groupBox6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox6.Controls.Add(this.gimmickDeleteButton); + this.groupBox6.Controls.Add(this.gimmickEditButton); + this.groupBox6.Controls.Add(this.gimmickBeatLabel); + this.groupBox6.Controls.Add(this.gimmickValueLabel); + this.groupBox6.Controls.Add(this.gimmickTypeLabel); + this.groupBox6.Controls.Add(this.gimmickMeasureLabel); + this.groupBox6.Controls.Add(this.label8); + this.groupBox6.Controls.Add(this.label7); + this.groupBox6.Controls.Add(this.label6); + this.groupBox6.Controls.Add(this.label5); + this.groupBox6.Controls.Add(this.gimmickNextButton); + this.groupBox6.Controls.Add(this.gimmickPrevButton); + this.groupBox6.Location = new System.Drawing.Point(874, 633); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(256, 142); + this.groupBox6.TabIndex = 33; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "Gimmick View"; + // + // gimmickDeleteButton + // + this.gimmickDeleteButton.ForeColor = System.Drawing.Color.Red; + this.gimmickDeleteButton.Location = new System.Drawing.Point(134, 109); + this.gimmickDeleteButton.Name = "gimmickDeleteButton"; + this.gimmickDeleteButton.Size = new System.Drawing.Size(113, 23); + this.gimmickDeleteButton.TabIndex = 11; + this.gimmickDeleteButton.Text = "Delete Gimmick"; + this.gimmickDeleteButton.UseVisualStyleBackColor = true; + this.gimmickDeleteButton.Click += new System.EventHandler(this.gimmickDeleteButton_Click); + // + // gimmickEditButton + // + this.gimmickEditButton.Location = new System.Drawing.Point(6, 109); + this.gimmickEditButton.Name = "gimmickEditButton"; + this.gimmickEditButton.Size = new System.Drawing.Size(113, 23); + this.gimmickEditButton.TabIndex = 10; + this.gimmickEditButton.Text = "Edit Gimmick"; + this.gimmickEditButton.UseVisualStyleBackColor = true; + this.gimmickEditButton.Click += new System.EventHandler(this.gimmickEditButton_Click); + // + // gimmickBeatLabel + // + this.gimmickBeatLabel.AutoSize = true; + this.gimmickBeatLabel.Location = new System.Drawing.Point(173, 47); + this.gimmickBeatLabel.Name = "gimmickBeatLabel"; + this.gimmickBeatLabel.Size = new System.Drawing.Size(36, 15); + this.gimmickBeatLabel.TabIndex = 9; + this.gimmickBeatLabel.Text = "None"; + // + // gimmickValueLabel + // + this.gimmickValueLabel.AutoSize = true; + this.gimmickValueLabel.Location = new System.Drawing.Point(76, 89); + this.gimmickValueLabel.Name = "gimmickValueLabel"; + this.gimmickValueLabel.Size = new System.Drawing.Size(36, 15); + this.gimmickValueLabel.TabIndex = 8; + this.gimmickValueLabel.Text = "None"; + // + // gimmickTypeLabel + // + this.gimmickTypeLabel.AutoSize = true; + this.gimmickTypeLabel.Location = new System.Drawing.Point(76, 68); + this.gimmickTypeLabel.Name = "gimmickTypeLabel"; + this.gimmickTypeLabel.Size = new System.Drawing.Size(36, 15); + this.gimmickTypeLabel.TabIndex = 7; + this.gimmickTypeLabel.Text = "None"; + // + // gimmickMeasureLabel + // + this.gimmickMeasureLabel.AutoSize = true; + this.gimmickMeasureLabel.Location = new System.Drawing.Point(76, 47); + this.gimmickMeasureLabel.Name = "gimmickMeasureLabel"; + this.gimmickMeasureLabel.Size = new System.Drawing.Size(36, 15); + this.gimmickMeasureLabel.TabIndex = 6; + this.gimmickMeasureLabel.Text = "None"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label8.Location = new System.Drawing.Point(128, 45); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(39, 17); + this.label8.TabIndex = 5; + this.label8.Text = "Beat:"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label7.Location = new System.Drawing.Point(24, 87); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(46, 17); + this.label7.TabIndex = 4; + this.label7.Text = "Value:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label6.Location = new System.Drawing.Point(29, 66); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(41, 17); + this.label6.TabIndex = 3; + this.label6.Text = "Type:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label5.Location = new System.Drawing.Point(6, 45); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(64, 17); + this.label5.TabIndex = 2; + this.label5.Text = "Measure:"; + // + // gimmickNextButton + // + this.gimmickNextButton.Location = new System.Drawing.Point(134, 19); + this.gimmickNextButton.Name = "gimmickNextButton"; + this.gimmickNextButton.Size = new System.Drawing.Size(116, 23); + this.gimmickNextButton.TabIndex = 1; + this.gimmickNextButton.Text = "Next Gimmick"; + this.gimmickNextButton.UseVisualStyleBackColor = true; + this.gimmickNextButton.Click += new System.EventHandler(this.gimmickNextButton_Click); + // + // gimmickPrevButton + // + this.gimmickPrevButton.Location = new System.Drawing.Point(6, 19); + this.gimmickPrevButton.Name = "gimmickPrevButton"; + this.gimmickPrevButton.Size = new System.Drawing.Size(116, 23); + this.gimmickPrevButton.TabIndex = 0; + this.gimmickPrevButton.Text = "Previous Gimmick"; + this.gimmickPrevButton.UseVisualStyleBackColor = true; + this.gimmickPrevButton.Click += new System.EventHandler(this.gimmickPrevButton_Click); + // + // noteViewGroupBox + // + this.noteViewGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.noteViewGroupBox.Controls.Add(this.noteMaskLabel); + this.noteViewGroupBox.Controls.Add(this.label9); + this.noteViewGroupBox.Controls.Add(this.noteSizeLabel); + this.noteViewGroupBox.Controls.Add(this.label17); + this.noteViewGroupBox.Controls.Add(this.noteNextMeasureButton); + this.noteViewGroupBox.Controls.Add(this.notePrevMeasureButton); + this.noteViewGroupBox.Controls.Add(this.noteDeleteSelectedButton); + this.noteViewGroupBox.Controls.Add(this.noteEditSelectedButton); + this.noteViewGroupBox.Controls.Add(this.noteBeatLabel); + this.noteViewGroupBox.Controls.Add(this.notePositionLabel); + this.noteViewGroupBox.Controls.Add(this.noteTypeLabel); + this.noteViewGroupBox.Controls.Add(this.noteMeasureLabel); + this.noteViewGroupBox.Controls.Add(this.label13); + this.noteViewGroupBox.Controls.Add(this.label14); + this.noteViewGroupBox.Controls.Add(this.label15); + this.noteViewGroupBox.Controls.Add(this.label16); + this.noteViewGroupBox.Controls.Add(this.noteNextButton); + this.noteViewGroupBox.Controls.Add(this.notePrevButton); + this.noteViewGroupBox.Location = new System.Drawing.Point(874, 420); + this.noteViewGroupBox.Name = "noteViewGroupBox"; + this.noteViewGroupBox.Size = new System.Drawing.Size(256, 207); + this.noteViewGroupBox.TabIndex = 34; + this.noteViewGroupBox.TabStop = false; + this.noteViewGroupBox.Text = "Note View"; + // + // noteMaskLabel + // + this.noteMaskLabel.AutoSize = true; + this.noteMaskLabel.Location = new System.Drawing.Point(173, 139); + this.noteMaskLabel.Name = "noteMaskLabel"; + this.noteMaskLabel.Size = new System.Drawing.Size(29, 15); + this.noteMaskLabel.TabIndex = 17; + this.noteMaskLabel.Text = "N/A"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label9.Location = new System.Drawing.Point(85, 137); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(82, 17); + this.label9.TabIndex = 16; + this.label9.Text = "Mask Value:"; + // + // noteSizeLabel + // + this.noteSizeLabel.AutoSize = true; + this.noteSizeLabel.Location = new System.Drawing.Point(173, 118); + this.noteSizeLabel.Name = "noteSizeLabel"; + this.noteSizeLabel.Size = new System.Drawing.Size(36, 15); + this.noteSizeLabel.TabIndex = 15; + this.noteSizeLabel.Text = "None"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label17.Location = new System.Drawing.Point(131, 116); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(36, 17); + this.label17.TabIndex = 14; + this.label17.Text = "Size:"; + // + // noteNextMeasureButton + // + this.noteNextMeasureButton.Location = new System.Drawing.Point(134, 48); + this.noteNextMeasureButton.Name = "noteNextMeasureButton"; + this.noteNextMeasureButton.Size = new System.Drawing.Size(116, 23); + this.noteNextMeasureButton.TabIndex = 13; + this.noteNextMeasureButton.Text = "Next Measure >>"; + this.noteNextMeasureButton.UseVisualStyleBackColor = true; + this.noteNextMeasureButton.Click += new System.EventHandler(this.noteNextMeasureButton_Click); + // + // notePrevMeasureButton + // + this.notePrevMeasureButton.Location = new System.Drawing.Point(6, 48); + this.notePrevMeasureButton.Name = "notePrevMeasureButton"; + this.notePrevMeasureButton.Size = new System.Drawing.Size(116, 23); + this.notePrevMeasureButton.TabIndex = 12; + this.notePrevMeasureButton.Text = "<< Prev Measure"; + this.notePrevMeasureButton.UseVisualStyleBackColor = true; + this.notePrevMeasureButton.Click += new System.EventHandler(this.notePrevMeasureButton_Click); + // + // noteDeleteSelectedButton + // + this.noteDeleteSelectedButton.ForeColor = System.Drawing.Color.Red; + this.noteDeleteSelectedButton.Location = new System.Drawing.Point(134, 157); + this.noteDeleteSelectedButton.Name = "noteDeleteSelectedButton"; + this.noteDeleteSelectedButton.Size = new System.Drawing.Size(113, 43); + this.noteDeleteSelectedButton.TabIndex = 11; + this.noteDeleteSelectedButton.Text = "Delete Selected Note"; + this.noteDeleteSelectedButton.UseVisualStyleBackColor = true; + this.noteDeleteSelectedButton.Click += new System.EventHandler(this.noteDeleteSelectedButton_Click); + // + // noteEditSelectedButton + // + this.noteEditSelectedButton.Location = new System.Drawing.Point(6, 157); + this.noteEditSelectedButton.Name = "noteEditSelectedButton"; + this.noteEditSelectedButton.Size = new System.Drawing.Size(113, 43); + this.noteEditSelectedButton.TabIndex = 10; + this.noteEditSelectedButton.Text = "Edit Selected Note"; + this.noteEditSelectedButton.UseVisualStyleBackColor = true; + this.noteEditSelectedButton.Click += new System.EventHandler(this.noteEditSelectedButton_Click); + // + // noteBeatLabel + // + this.noteBeatLabel.AutoSize = true; + this.noteBeatLabel.Location = new System.Drawing.Point(173, 76); + this.noteBeatLabel.Name = "noteBeatLabel"; + this.noteBeatLabel.Size = new System.Drawing.Size(36, 15); + this.noteBeatLabel.TabIndex = 9; + this.noteBeatLabel.Text = "None"; + // + // notePositionLabel + // + this.notePositionLabel.AutoSize = true; + this.notePositionLabel.Location = new System.Drawing.Point(76, 118); + this.notePositionLabel.Name = "notePositionLabel"; + this.notePositionLabel.Size = new System.Drawing.Size(36, 15); + this.notePositionLabel.TabIndex = 8; + this.notePositionLabel.Text = "None"; + // + // noteTypeLabel + // + this.noteTypeLabel.AutoSize = true; + this.noteTypeLabel.Location = new System.Drawing.Point(76, 97); + this.noteTypeLabel.Name = "noteTypeLabel"; + this.noteTypeLabel.Size = new System.Drawing.Size(36, 15); + this.noteTypeLabel.TabIndex = 7; + this.noteTypeLabel.Text = "None"; + // + // noteMeasureLabel + // + this.noteMeasureLabel.AutoSize = true; + this.noteMeasureLabel.Location = new System.Drawing.Point(76, 76); + this.noteMeasureLabel.Name = "noteMeasureLabel"; + this.noteMeasureLabel.Size = new System.Drawing.Size(36, 15); + this.noteMeasureLabel.TabIndex = 6; + this.noteMeasureLabel.Text = "None"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label13.Location = new System.Drawing.Point(128, 74); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(39, 17); + this.label13.TabIndex = 5; + this.label13.Text = "Beat:"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label14.Location = new System.Drawing.Point(7, 116); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(63, 17); + this.label14.TabIndex = 4; + this.label14.Text = "Position:"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label15.Location = new System.Drawing.Point(29, 95); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(41, 17); + this.label15.TabIndex = 3; + this.label15.Text = "Type:"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + this.label16.Location = new System.Drawing.Point(6, 74); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(64, 17); + this.label16.TabIndex = 2; + this.label16.Text = "Measure:"; + // + // noteNextButton + // + this.noteNextButton.Location = new System.Drawing.Point(134, 19); + this.noteNextButton.Name = "noteNextButton"; + this.noteNextButton.Size = new System.Drawing.Size(116, 23); + this.noteNextButton.TabIndex = 1; + this.noteNextButton.Text = "Next Note >"; + this.noteNextButton.UseVisualStyleBackColor = true; + this.noteNextButton.Click += new System.EventHandler(this.noteNextButton_Click); + // + // notePrevButton + // + this.notePrevButton.Location = new System.Drawing.Point(6, 19); + this.notePrevButton.Name = "notePrevButton"; + this.notePrevButton.Size = new System.Drawing.Size(116, 23); + this.notePrevButton.TabIndex = 0; + this.notePrevButton.Text = "< Previous Note"; + this.notePrevButton.UseVisualStyleBackColor = true; + this.notePrevButton.Click += new System.EventHandler(this.notePrevButton_Click); + // + // autoSaveTimer + // + this.autoSaveTimer.Tick += new System.EventHandler(this.autoSaveTimer_Tick); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.ControlDark; + this.ClientSize = new System.Drawing.Size(1142, 787); + this.Controls.Add(this.noteViewGroupBox); + this.Controls.Add(this.groupBox6); + this.Controls.Add(this.insertButton); + this.Controls.Add(this.groupBox9); + this.Controls.Add(this.playbackGroupBox); + this.Controls.Add(this.groupBox5); + this.Controls.Add(this.groupBox4); + this.Controls.Add(this.gimmickTypeGroupBox); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.circlePanel); + this.Controls.Add(this.menuStrip); + this.MainMenuStrip = this.menuStrip; + this.MinimumSize = new System.Drawing.Size(1158, 826); + this.Name = "MainForm"; + this.Text = "BAKKA Sharp - [New File]"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Resize += new System.EventHandler(this.MainForm_Resize); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.beat2Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.beat1Numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.measureNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.sizeTrackBar)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.sizeNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.positionTrackBar)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.positionNumeric)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.gimmickTypeGroupBox.ResumeLayout(false); + this.gimmickTypeGroupBox.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.playbackGroupBox.ResumeLayout(false); + this.playbackGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.songTrackBar)).EndInit(); + this.groupBox9.ResumeLayout(false); + this.groupBox9.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.visualHispeedNumeric)).EndInit(); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.noteViewGroupBox.ResumeLayout(false); + this.noteViewGroupBox.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private OpenFileDialog openFileDialog; + private SaveFileDialog saveFileDialog; + private Panel circlePanel; + private GroupBox groupBox1; + private Label label4; + private NumericUpDown beat2Numeric; + private NumericUpDown beat1Numeric; + private NumericUpDown measureNumeric; + private Label label3; + private TrackBar sizeTrackBar; + private NumericUpDown sizeNumeric; + private Label label2; + private TrackBar positionTrackBar; + private NumericUpDown positionNumeric; + private Label label1; + private GroupBox groupBox2; + private RadioButton flairRadio; + private RadioButton bonusRadio; + private RadioButton noBonusRadio; + private CheckBox endHoldCheck; + private Button endChartButton; + private Button holdButton; + private Button chainButton; + private Button blueButton; + private Button redButton; + private Button greenButton; + private Button orangeButton; + private Button tapButton; + private GroupBox gimmickTypeGroupBox; + private RadioButton removeMaskRadio; + private Button reverseButton; + private RadioButton addMaskRadio; + private Button stopButton; + private Button hiSpeedButton; + private Button timeSigButton; + private Button bpmChangeButton; + private Button maskButton; + private GroupBox groupBox4; + private RadioButton centerMaskRadio; + private RadioButton clockwiseMaskRadio; + private RadioButton cClockwiseMaskRadio; + private GroupBox groupBox5; + private Label currentSelectionLabel; + private GroupBox playbackGroupBox; + private Label songFileLabel; + private Label label20; + private TrackBar songTrackBar; + private Button selectSongButton; + private Button playButton; + private OpenFileDialog openSongDialog; + private System.Windows.Forms.Timer updateTimer; + private GroupBox groupBox9; + private Label label21; + private NumericUpDown visualHispeedNumeric; + private Button insertButton; + private ToolStripMenuItem fileToolStripMenuItem; + private ToolStripMenuItem newToolStripMenuItem; + private ToolStripMenuItem openToolStripMenuItem; + private ToolStripMenuItem saveToolStripMenuItem; + private ToolStripMenuItem saveAsToolStripMenuItem; + private ToolStripMenuItem exitToolStripMenuItem; + private ToolStripMenuItem viewToolStripMenuItem; + private ToolStripMenuItem showCursorToolStripMenuItem; + private ToolStripMenuItem showCursorDuringPlaybackToolStripMenuItem; + private ToolStripMenuItem highlightViewedNoteToolStripMenuItem; + private ToolStripMenuItem chartToolStripMenuItem; + private ToolStripMenuItem initialChartSettingsToolStripMenuItem; + private ToolStripMenuItem aboutToolStripMenuItem; + private MenuStrip menuStrip; + private GroupBox groupBox6; + private Button gimmickDeleteButton; + private Button gimmickEditButton; + private Label gimmickBeatLabel; + private Label gimmickValueLabel; + private Label gimmickTypeLabel; + private Label gimmickMeasureLabel; + private Label label8; + private Label label7; + private Label label6; + private Label label5; + private Button gimmickNextButton; + private Button gimmickPrevButton; + private GroupBox noteViewGroupBox; + private Label noteMaskLabel; + private Label label9; + private Label noteSizeLabel; + private Label label17; + private Button noteNextMeasureButton; + private Button notePrevMeasureButton; + private Button noteDeleteSelectedButton; + private Button noteEditSelectedButton; + private Label noteBeatLabel; + private Label notePositionLabel; + private Label noteTypeLabel; + private Label noteMeasureLabel; + private Label label13; + private Label label14; + private Label label15; + private Label label16; + private Button noteNextButton; + private Button notePrevButton; + private ToolStripMenuItem editToolStripMenuItem; + private ToolStripMenuItem undoToolStripMenuItem; + private ToolStripMenuItem redoToolStripMenuItem; + private System.Windows.Forms.Timer autoSaveTimer; + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/MainForm.cs b/BAKKA-Sharp/MainForm.cs new file mode 100644 index 0000000..97ebe9f --- /dev/null +++ b/BAKKA-Sharp/MainForm.cs @@ -0,0 +1,1930 @@ +using System.Drawing.Drawing2D; +using System.Reflection; +using IrrKlang; +using BAKKA_Sharp.Operations; +using Tomlyn; + +namespace BAKKA_Sharp +{ + public partial class MainForm : Form + { + // Chart + Chart chart = new(); + string songFilePath = ""; + bool isNewFile = true; + bool isRecoveredFile = false; + + // Operations + OperationManager opManager = new OperationManager(); + + // Graphics + BufferedGraphicsContext gfxContext; + BufferedGraphics bufGraphics; + CircleView circleView; + + // Note Selection + NoteType currentNoteType = NoteType.TouchNoBonus; + GimmickType currentGimmickType = GimmickType.NoGimmick; + BonusType currentBonusType = BonusType.NoBonus; + int selectedGimmickIndex = -1; + int selectedNoteIndex = -1; + Note lastNote; + + // Mouse + int mouseDownPos = -1; + Point mouseDownPt; + int lastMousePos = -1; + bool rolloverPos = false; + bool rolloverNeg = false; + + // Music + ISoundEngine soundEngine = new ISoundEngine(); + ISound currentSong; + + // Control updates + enum EventSource + { + None, + MouseWheel, + SongPlaying, + TrackBar + }; + EventSource valueTriggerEvent = EventSource.None; + + // Tool Forms + GimmickForm gimmickForm; + InitChartSettingsForm initSettingsForm; + + // Program info + string fileVersion = ""; + UserSettings userSettings; + string tempFilePath = ""; + string tempStatusPath = ""; + string autosaveFile = ""; + + public MainForm() + { + InitializeComponent(); + + // Extra Forms stuff + circlePanel.MouseWheel += circlePanel_MouseWheel; + + // Setup graphics + gfxContext = BufferedGraphicsManager.Current; + SetBufferedGraphicsContext(); + circleView = new CircleView(circlePanel.Size); + + // Force double buffering on circlePanel + Type controlType = circlePanel.GetType(); + PropertyInfo pi = controlType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); + pi.SetValue(circlePanel, true); + + // Tool Forms + gimmickForm = new GimmickForm(); + initSettingsForm = new InitChartSettingsForm(); + + // Operation Manager + opManager.OperationHistoryChanged += (s, e) => + { + chart.Notes = chart.Notes.OrderBy(x => x.Measure).ToList(); + chart.Gimmicks = chart.Gimmicks.OrderBy(x => x.Measure).ToList(); + if (selectedNoteIndex >= chart.Notes.Count) + selectedNoteIndex = chart.Notes.Count - 1; + else if (selectedNoteIndex == -1 && chart.Notes.Count > 0) + selectedNoteIndex = 0; + UpdateNoteLabels(); + if (selectedGimmickIndex >= chart.Gimmicks.Count) + selectedGimmickIndex = chart.Gimmicks.Count - 1; + else if (selectedGimmickIndex == -1 && chart.Gimmicks.Count > 0) + selectedGimmickIndex = 0; + UpdateGimmickLabels(); + SetText(); + circlePanel.Invalidate(); + }; + + // Program info + var asm = Assembly.GetExecutingAssembly(); + var fvi = System.Diagnostics.FileVersionInfo.GetVersionInfo(asm.Location); + if (fvi.FileVersion != null) + { + fileVersion = fvi.FileVersion; + SetText(); + } + + // Look for user settings + if (File.Exists("settings.toml")) + userSettings = Toml.ToModel(File.ReadAllText("settings.toml")); + else + { + userSettings = new UserSettings(); + File.WriteAllText("settings.toml", Toml.FromModel(userSettings)); + } + // Apply settings + showCursorToolStripMenuItem.Checked = userSettings.ViewSettings.ShowCursor; + showCursorDuringPlaybackToolStripMenuItem.Checked = userSettings.ViewSettings.ShowCursorDuringPlayback; + highlightViewedNoteToolStripMenuItem.Checked = userSettings.ViewSettings.HighlightViewedNote; + autoSaveTimer.Interval = userSettings.SaveSettings.AutoSaveInterval * 60000; + autoSaveTimer.Enabled = true; + + // Look for temp files from previous runs + var tempFile = Directory.GetFiles(Path.GetTempPath(), "*.bakka"); + var oldAutosave = Directory.GetFiles(Path.GetTempPath(), "*.mer"); + if (tempFile.Length > 0) + { + tempStatusPath = tempFile[0]; + var statusLines = File.ReadAllLines(tempStatusPath); + if (statusLines.Length > 0) + { + bool checkAutosave = false; + bool.TryParse(statusLines[0], out checkAutosave); + if (checkAutosave) + { + string autosaveTime = "."; + if (statusLines.Length > 1) + autosaveTime = " from " + statusLines[1] + "."; + if (oldAutosave.Length > 0) + { + autosaveFile = oldAutosave[0]; + var result = MessageBox.Show($"Auto-save data found{autosaveTime}\n\nLoad?", "Load Auto-Save Data?", MessageBoxButtons.YesNo); + if (result == DialogResult.Yes) + { + openFileDialog.FileName = autosaveFile; + isRecoveredFile = true; + OpenFile(); + } + } + } + if (!isRecoveredFile) + { + DeleteAutosaves(); + } + } + } + else + { + tempStatusPath = Path.GetTempFileName().Replace(".tmp", ".bakka"); + File.WriteAllText(tempStatusPath, "false"); + } + } + + private void SetText() + { + string save = chart.IsSaved ? "" : "*"; + string name = isRecoveredFile ? "Auto-Save Recover" : (isNewFile ? "New File" : saveFileDialog.FileName); + Text = $"{save}BAKKA Sharp {fileVersion} - [{name}]"; + } + + private void SetBufferedGraphicsContext() + { + gfxContext.MaximumBuffer = new Size(circlePanel.Width + 1, circlePanel.Height + 1); + bufGraphics = gfxContext.Allocate(circlePanel.CreateGraphics(), + new Rectangle(0, 0, circlePanel.Width, circlePanel.Height)); + } + + /// + /// Prompts for a save if the chart is not currently saved. + /// + /// TRUE if the calling method should continue, or FALSE if the calling method should return + private bool PromptSave() + { + var result = chart.IsSaved + ? DialogResult.No + : MessageBox.Show("Current chart is unsaved. Do you wish to save your changes?", "Save Changes", MessageBoxButtons.YesNoCancel); + + switch (result) + { + case DialogResult.Cancel: + return false; + case DialogResult.Yes: + if (SaveFile() == DialogResult.Cancel) + return false; + break; + } + return true; + } + + private void newToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!PromptSave()) + return; + + chart = new(); + isNewFile = true; + isRecoveredFile = false; + DeleteAutosaves(); + UpdateNoteLabels(-1); + UpdateGimmickLabels(-1); + SetText(); + opManager.Clear(); + circlePanel.Invalidate(); + } + + private void openToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!PromptSave()) + return; + + if (openFileDialog.ShowDialog() == DialogResult.Cancel) + return; + + if (openFileDialog.FileName == "") + { + MessageBox.Show("No file selected."); + return; + } + + OpenFile(); + } + + private void OpenFile() + { + chart = new(); + if (!chart.ParseFile(openFileDialog.FileName)) + { + MessageBox.Show("Failed to parse file. Ensure it is not corrupted."); + chart = new(); + } + else + { + // Successful parse + var initGimmicks = chart.Gimmicks.Where(x => x.StartTime == 0); + var initBpm = initGimmicks.FirstOrDefault(x => x.GimmickType == GimmickType.BpmChange); + double bpm = initBpm != null ? initBpm.BPM : 120.0; + var initTimeSig = initGimmicks.FirstOrDefault(x => x.GimmickType == GimmickType.TimeSignatureChange); + int timeSigUpper = initTimeSig != null ? initTimeSig.TimeSig.Upper : 4; + int timeSigLower = initTimeSig != null ? initTimeSig.TimeSig.Lower : 4; + initSettingsForm.SetValues(bpm, timeSigUpper, timeSigLower, chart.Offset, chart.MovieOffset); + UpdateNoteLabels(chart.Notes.Count > 0 ? 0 : -1); + UpdateGimmickLabels(chart.Gimmicks.Count > 0 ? 0 : -1); + saveFileDialog.FileName = openFileDialog.FileName; + chart.IsSaved = true; + isNewFile = false; + SetText(); + } + circlePanel.Invalidate(); + } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { + SaveFile(isNewFile || isRecoveredFile); + } + + private DialogResult SaveFile(bool prompt = true) + { + var result = prompt ? saveFileDialog.ShowDialog() : DialogResult.OK; + + if (result == DialogResult.OK) + { + chart.WriteFile(saveFileDialog.FileName); + isNewFile = false; + if (isRecoveredFile) + { + DeleteAutosaves(); + autosaveFile = ""; + } + isRecoveredFile = false; + File.WriteAllText(tempStatusPath, "false"); + SetText(); + } + return result; + } + + private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) + { + SaveFile(true); + } + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!PromptSave()) + return; + + Application.Exit(); + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + var result = chart.IsSaved + ? DialogResult.No + : MessageBox.Show("Current chart is unsaved. Do you wish to save your changes?", "Save Changes", MessageBoxButtons.YesNoCancel); + + switch (result) + { + case DialogResult.Cancel: + e.Cancel = true; + return; + case DialogResult.Yes: + if (SaveFile() == DialogResult.Cancel) + { + e.Cancel = true; + return; + } + break; + case DialogResult.No: + break; + default: + break; + } + if (tempStatusPath != "") + File.Delete(tempStatusPath); + if (tempFilePath != "") + File.Delete(tempFilePath); + } + + private void SetSelectedObject(NoteType type) + { + currentNoteType = type; + switch (type) + { + case NoteType.TouchNoBonus: + updateLabel("Touch"); + break; + case NoteType.TouchBonus: + updateLabel("Touch [Bonus]"); + break; + case NoteType.SnapRedNoBonus: + updateLabel("Snap (R)"); + break; + case NoteType.SnapBlueNoBonus: + updateLabel("Snap (B)"); + break; + case NoteType.SlideOrangeNoBonus: + updateLabel("Slide (O)"); + break; + case NoteType.SlideOrangeBonus: + updateLabel("Slide (O) [Bonus]"); + break; + case NoteType.SlideGreenNoBonus: + updateLabel("Slide (G)"); + break; + case NoteType.SlideGreenBonus: + updateLabel("Slide (G) [Bonus]"); + break; + case NoteType.HoldStartNoBonus: + updateLabel("Hold Start"); + break; + case NoteType.HoldJoint: + if (endHoldCheck.Checked) + updateLabel("Hold End"); + else + updateLabel("Hold Middle"); + break; + case NoteType.HoldEnd: + updateLabel("Hold End"); + break; + case NoteType.MaskAdd: + if (clockwiseMaskRadio.Checked) + updateLabel("Mask Add (Clockwise)"); + else if (cClockwiseMaskRadio.Checked) + updateLabel("Mask Add (Counter-Clockwise)"); + else + updateLabel("Mask Add (From Center)"); + break; + case NoteType.MaskRemove: + if (clockwiseMaskRadio.Checked) + updateLabel("Mask Remove (Clockwise)"); + else if (cClockwiseMaskRadio.Checked) + updateLabel("Mask Remove (Counter-Clockwise)"); + else + updateLabel("Mask Remove (From Center)"); + break; + case NoteType.EndOfChart: + updateLabel("End of Chart"); + break; + case NoteType.Chain: + updateLabel("Chain"); + break; + case NoteType.TouchBonusFlair: + updateLabel("Touch [R Note]"); + break; + case NoteType.SnapRedBonusFlair: + updateLabel("Snap (R) [R Note]"); + break; + case NoteType.SnapBlueBonusFlair: + updateLabel("Snap (B) [R Note]"); + break; + case NoteType.SlideOrangeBonusFlair: + updateLabel("Slide (O) [R Note]"); + break; + case NoteType.SlideGreenBonusFlair: + updateLabel("Slide (G) [R Note]"); + break; + case NoteType.HoldStartBonusFlair: + updateLabel("Hold Start [R Note]"); + break; + case NoteType.ChainBonusFlair: + updateLabel("Chain [R Note]"); + break; + default: + updateLabel("None Selected"); + break; + } + circlePanel.Invalidate(); + } + + private void SetSelectedObject(GimmickType gimmick) + { + currentGimmickType = gimmick; + updateLabel(gimmick.ToLabel()); + } + + void updateLabel(string text) + { + currentSelectionLabel.InvokeIfRequired(() => { currentSelectionLabel.Text = text; }); + } + + private void touchToolStripMenuItem_Click(object sender, EventArgs e) + { + SetSelectedObject(NoteType.TouchNoBonus); + } + + private void touchBonusToolStripMenuItem_Click(object sender, EventArgs e) + { + SetSelectedObject(NoteType.TouchBonus); + } + + private void touchFlairToolStripMenuItem_Click(object sender, EventArgs e) + { + SetSelectedObject(NoteType.TouchBonusFlair); + } + + private void circlePanel_MouseWheel(object? sender, MouseEventArgs e) + { + if (Control.ModifierKeys == Keys.Alt) + { + // Shift beat division by standard musical quantization + // TODO: Take time signature into account? + if (beat2Numeric.Value < 2) + { + if (e.Delta > 0) + beat2Numeric.Value = 2; + return; + } + else if (beat2Numeric.Value == 2 && e.Delta < 0) + { + beat2Numeric.Value = 1; + return; + } + int low = 0; + int high = 1; + while (!(beat2Numeric.Value >= (1 << low) && beat2Numeric.Value <= (1 << high))) + { + low++; + high++; + } + if (e.Delta < 0) + beat2Numeric.Value = (1 << low); + else + { + if (high < 10) + beat2Numeric.Value = (1 << (high + 1)); + } + } + else if (Control.ModifierKeys == Keys.Shift) + { + + } + else if (Control.ModifierKeys == Keys.Control) + { + + } + else + { + valueTriggerEvent = EventSource.MouseWheel; + if (e.Delta > 0) + beat1Numeric.Value++; + else + beat1Numeric.Value--; + + circlePanel.Invalidate(); + } + } + + private void circlePanel_Paint(object sender, PaintEventArgs e) + { + Rectangle panelRect = new Rectangle(0, 0, circlePanel.Width, circlePanel.Height); + + // Set drawing mode + bufGraphics.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; + + // Draw background + bufGraphics.Graphics.FillRectangle(new SolidBrush(this.BackColor), panelRect); + + // Set hi-speed + + // Draw masks + var masks = chart.Notes.Where( + x => x.Measure <= circleView.CurrentMeasure + && x.IsMask).ToList(); + foreach (var mask in masks) + { + if (mask.NoteType == NoteType.MaskAdd) + { + // Check if there's a MaskRemove that counters the MaskAdd (unless the MaskAdd is later) + var rem = masks.FirstOrDefault(x => x.NoteType == NoteType.MaskRemove && x.Position == mask.Position && x.Size == mask.Size); + if (rem == null || rem.Measure < mask.Measure) + bufGraphics.Graphics.FillPie(circleView.MaskBrush, circleView.DrawRect.ToInt(), -mask.Position * 6.0f, -mask.Size * 6.0f); + } + } + + // Draw selected mask + + // Switch drawing modes + bufGraphics.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + + // Draw measure circle + for (float meas = (float)Math.Ceiling(circleView.CurrentMeasure); (meas - circleView.CurrentMeasure) < circleView.TotalMeasureShowNotes; meas += 1.0f) + { + var info = circleView.GetScaledRect(meas); + if (info.Rect.Width >= 1) + { + bufGraphics.Graphics.DrawEllipse(circleView.BeatPen, info.Rect); + } + } + + // Draw base circle + bufGraphics.Graphics.DrawEllipse(circleView.TickMediumPen, circleView.DrawRect); + + // Draw degree lines + for (int i = 0; i < 360; i += 6) + { + PointF startPoint = new PointF( + (float)(circleView.Radius * Math.Cos(Utils.DegToRad(i))) + circleView.CenterPoint.X, + (float)(circleView.Radius * Math.Sin(Utils.DegToRad(i))) + circleView.CenterPoint.Y); + float tickLength = circleView.PanelSize.Width * 10.0f / 285.0f; + float innerRad = circleView.Radius - tickLength; + Pen activePen; + if (i % 90 == 0) + { + innerRad = circleView.Radius - (tickLength * 3.5f); + activePen = circleView.TickMajorPen; + } + else if (i % 30 == 0) + { + innerRad = circleView.Radius - (tickLength * 2.5f); + activePen = circleView.TickMediumPen; + } + else + { + activePen = circleView.TickMinorPen; + } + PointF endPoint = new PointF( + (float)(innerRad * Math.Cos(Utils.DegToRad(i))) + circleView.CenterPoint.X, + (float)(innerRad * Math.Sin(Utils.DegToRad(i))) + circleView.CenterPoint.Y); + + bufGraphics.Graphics.DrawLine(activePen, startPoint, endPoint); + } + + // Some variables for use later + ArcInfo currentInfo = circleView.GetScaledRect(circleView.CurrentMeasure); + ArcInfo endInfo = circleView.GetScaledRect(circleView.CurrentMeasure + circleView.TotalMeasureShowNotes); + + // Draw holds + // First, draw holes that start before the viewpoint and have nodes that end after + List holdNotes = chart.Notes.Where( + x => x.Measure < circleView.CurrentMeasure + && x.NextNote != null + && x.NextNote.Measure > (circleView.CurrentMeasure + circleView.TotalMeasureShowNotes) + && x.IsHold).ToList(); + foreach (var note in holdNotes) + { + ArcInfo info = circleView.GetArcInfo(note); + ArcInfo nextInfo = circleView.GetArcInfo((Note)note.NextNote); + //GraphicsPath path = new GraphicsPath(); + //path.AddArc(endInfo.Rect, info.StartAngle, info.ArcLength); + //path.AddArc(currentInfo.Rect, info.StartAngle + info.ArcLength, -info.ArcLength); + //bufGraphics.Graphics.FillPath(circleView.HoldBrush, path); + + float ratio = (currentInfo.Rect.Width - nextInfo.Rect.Width) / (info.Rect.Width - nextInfo.Rect.Width); + float startNoteAngle = nextInfo.StartAngle; + float endNoteAngle = info.StartAngle; + if (nextInfo.StartAngle > info.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + startNoteAngle -= 360; + } + else if (info.StartAngle > nextInfo.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + endNoteAngle -= 360; + } + float startAngle = ratio * (endNoteAngle - startNoteAngle) + startNoteAngle; + float endAngle = ratio * ((endNoteAngle - info.ArcLength) - (startNoteAngle - nextInfo.ArcLength)) + + (startNoteAngle - nextInfo.ArcLength); + float arcLength = startAngle - endAngle; + + float ratio2 = (endInfo.Rect.Width - nextInfo.Rect.Width) / (info.Rect.Width - nextInfo.Rect.Width); + float startNoteAngle2 = nextInfo.StartAngle; + float endNoteAngle2 = info.StartAngle; + if (nextInfo.StartAngle > info.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + startNoteAngle2 -= 360; + } + else if (info.StartAngle > nextInfo.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + endNoteAngle2 -= 360; + } + float startAngle2 = ratio2 * (endNoteAngle2 - startNoteAngle2) + startNoteAngle2; + float endAngle2 = ratio2 * ((endNoteAngle2 - info.ArcLength) - (startNoteAngle2 - nextInfo.ArcLength)) + + (startNoteAngle2 - nextInfo.ArcLength); + float arcLength2 = startAngle2 - endAngle2; + + GraphicsPath path = new GraphicsPath(); + path.AddArc(currentInfo.Rect, startAngle, arcLength); + path.AddArc(endInfo.Rect, startAngle2 + arcLength2, -arcLength2); + bufGraphics.Graphics.FillPath(circleView.HoldBrush, path); + } + // Second, draw all the notes on-screen + holdNotes = chart.Notes.Where( + x => x.Measure >= circleView.CurrentMeasure + && x.Measure <= (circleView.CurrentMeasure + circleView.TotalMeasureShowNotes) + && x.IsHold).ToList(); + foreach (var note in holdNotes) + { + ArcInfo info = circleView.GetArcInfo(note); + + // If the previous note is off-screen, this case handles that + if (note.PrevNote != null && note.PrevNote.Measure < circleView.CurrentMeasure) + { + ArcInfo prevInfo = circleView.GetArcInfo((Note)note.PrevNote); + float ratio = (currentInfo.Rect.Width - info.Rect.Width) / (prevInfo.Rect.Width - info.Rect.Width); + float startNoteAngle = info.StartAngle; + float endNoteAngle = prevInfo.StartAngle; + if (info.StartAngle > prevInfo.StartAngle && (Math.Abs(info.StartAngle - prevInfo.StartAngle) > 180)) + { + startNoteAngle -= 360; + } + else if (prevInfo.StartAngle > info.StartAngle && (Math.Abs(info.StartAngle - prevInfo.StartAngle) > 180)) + { + endNoteAngle -= 360; + } + float startAngle = ratio * (endNoteAngle - startNoteAngle) + startNoteAngle; + float endAngle = ratio * ((endNoteAngle - prevInfo.ArcLength) - (startNoteAngle - info.ArcLength)) + + (startNoteAngle - info.ArcLength); + float arcLength = startAngle - endAngle; + + GraphicsPath path = new GraphicsPath(); + path.AddArc(info.Rect, info.StartAngle, info.ArcLength); + path.AddArc(currentInfo.Rect, startAngle + arcLength, -arcLength); + bufGraphics.Graphics.FillPath(circleView.HoldBrush, path); + } + + // If the next note is on-screen, this case handles that + if (note.NextNote != null && note.NextNote.Measure <= (circleView.CurrentMeasure + circleView.TotalMeasureShowNotes)) + { + ArcInfo nextInfo = circleView.GetArcInfo((Note)note.NextNote); + GraphicsPath path = new GraphicsPath(); + path.AddArc(info.Rect, info.StartAngle, info.ArcLength); + path.AddArc(nextInfo.Rect, nextInfo.StartAngle + nextInfo.ArcLength, -nextInfo.ArcLength); + bufGraphics.Graphics.FillPath(circleView.HoldBrush, path); + } + + // If the next note is off-screen, this case handles that + if (note.NextNote != null && note.NextNote.Measure > (circleView.CurrentMeasure + circleView.TotalMeasureShowNotes)) + { + ArcInfo nextInfo = circleView.GetArcInfo((Note)note.NextNote); + float ratio = (endInfo.Rect.Width - nextInfo.Rect.Width) / (info.Rect.Width - nextInfo.Rect.Width); + float startNoteAngle = nextInfo.StartAngle; + float endNoteAngle = info.StartAngle; + if (nextInfo.StartAngle > info.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + startNoteAngle -= 360; + } + else if (info.StartAngle > nextInfo.StartAngle && (Math.Abs(nextInfo.StartAngle - info.StartAngle) > 180)) + { + endNoteAngle -= 360; + } + float startAngle = ratio * (endNoteAngle - startNoteAngle) + startNoteAngle; + float endAngle = ratio * ((endNoteAngle - info.ArcLength) - (startNoteAngle - nextInfo.ArcLength)) + + (startNoteAngle - nextInfo.ArcLength); + float arcLength = startAngle - endAngle; + + GraphicsPath path = new GraphicsPath(); + path.AddArc(endInfo.Rect, startAngle, arcLength); + path.AddArc(info.Rect, info.StartAngle + info.ArcLength, -info.ArcLength); + bufGraphics.Graphics.FillPath(circleView.HoldBrush, path); + } + + // Draw note + if (info.Rect.Width >= 1) + { + bufGraphics.Graphics.DrawArc(circleView.GetPen(note), info.Rect, info.StartAngle, info.ArcLength); + + // Draw bonus + if (note.IsFlair) + bufGraphics.Graphics.DrawArc(circleView.HighlightPen, info.Rect, info.StartAngle + 2, info.ArcLength - 4); + + // Plot highlighted + if (highlightViewedNoteToolStripMenuItem.Checked) + { + if (selectedNoteIndex != -1 && note == chart.Notes[selectedNoteIndex]) + { + bufGraphics.Graphics.DrawArc(circleView.HighlightPen, info.Rect, info.StartAngle + 2, info.ArcLength - 4); + } + } + } + } + + // Draw notes + List drawNotes = chart.Notes.Where( + x => x.Measure >= circleView.CurrentMeasure + && x.Measure <= (circleView.CurrentMeasure + circleView.TotalMeasureShowNotes) + && !x.IsHold && !x.IsMask).ToList(); + foreach (var note in drawNotes) + { + ArcInfo info = circleView.GetArcInfo(note); + + if (info.Rect.Width >= 1) + { + bufGraphics.Graphics.DrawArc(circleView.GetPen(note, info.NoteScale), info.Rect, info.StartAngle, info.ArcLength); + if (note.IsFlair) + { + bufGraphics.Graphics.DrawArc(circleView.FlairPen, info.Rect, info.StartAngle + 2, info.ArcLength - 4); + } + // Plot highlighted + if (highlightViewedNoteToolStripMenuItem.Checked) + { + if (selectedNoteIndex != -1 && note == chart.Notes[selectedNoteIndex]) + { + bufGraphics.Graphics.DrawArc(circleView.HighlightPen, info.Rect, info.StartAngle + 2, info.ArcLength - 4); + } + } + } + } + + // Determine if cursor should be showing + bool showCursor = showCursorToolStripMenuItem.Checked || mouseDownPos != -1; + if (currentSong != null && !currentSong.Paused) + { + showCursor = showCursorDuringPlaybackToolStripMenuItem.Checked; + } + + // Draw cursor + if (showCursor) + { + bufGraphics.Graphics.DrawArc( + circleView.GetPen(currentNoteType), + circleView.DrawRect, + -(float)positionNumeric.Value * 6.0f, + -(float)sizeNumeric.Value * 6.0f); + } + + bufGraphics.Render(e.Graphics); + } + + private void measureNumeric_ValueChanged(object sender, EventArgs e) + { + updateTime(); + } + + private void beat1Numeric_ValueChanged(object sender, EventArgs e) + { + if (beat1Numeric.Value >= beat2Numeric.Value) + { + measureNumeric.Value++; + beat1Numeric.Value = 0; + } + else if (beat1Numeric.Value < 0) + { + if (measureNumeric.Value > 0) + { + measureNumeric.Value--; + beat1Numeric.Value = beat2Numeric.Value - 1; + } + else if (measureNumeric.Value == 0) + { + beat1Numeric.Value = 0; + } + } + updateTime(); + if (currentSong != null && !IsSongPlaying() && valueTriggerEvent != EventSource.TrackBar) + songTrackBar.Value = chart.GetTime(new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value)); + + valueTriggerEvent = EventSource.None; + } + + private void beat2Numeric_ValueChanged(object sender, EventArgs e) + { + + } + + private void updateTime() + { + if (currentSong == null || (currentSong != null && currentSong.Paused)) + { + circleView.CurrentMeasure = (float)measureNumeric.Value + ((float)beat1Numeric.Value / (float)beat2Numeric.Value); + circlePanel.Invalidate(); + } + } + + private void positionTrackBar_ValueChanged(object sender, EventArgs e) + { + positionNumeric.Value = positionTrackBar.Value; + circlePanel.Invalidate(); + } + + private void sizeTrackBar_ValueChanged(object sender, EventArgs e) + { + sizeNumeric.Value = sizeTrackBar.Value; + circlePanel.Invalidate(); + } + + private void tapButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.TouchNoBonus); + else if (bonusRadio.Checked) + SetSelectedObject(NoteType.TouchBonus); + else if (flairRadio.Checked) + SetSelectedObject(NoteType.TouchBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void orangeButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.SlideOrangeNoBonus); + else if (bonusRadio.Checked) + SetSelectedObject(NoteType.SlideOrangeBonus); + else if (flairRadio.Checked) + SetSelectedObject(NoteType.SlideOrangeBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void greenButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.SlideGreenNoBonus); + else if (bonusRadio.Checked) + SetSelectedObject(NoteType.SlideGreenBonus); + else if (flairRadio.Checked) + SetSelectedObject(NoteType.SlideGreenBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void redButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.SnapRedNoBonus); + else if (bonusRadio.Checked) + { + flairRadio.InvokeIfRequired(() => { flairRadio.Checked = true; }); + SetSelectedObject(NoteType.SnapRedBonusFlair); + } + else if (flairRadio.Checked) + SetSelectedObject(NoteType.SnapRedBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void blueButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.SnapBlueNoBonus); + else if (bonusRadio.Checked) + { + flairRadio.InvokeIfRequired(() => { flairRadio.Checked = true; }); + SetSelectedObject(NoteType.SnapBlueBonusFlair); + } + else if (flairRadio.Checked) + SetSelectedObject(NoteType.SnapBlueBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void chainButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.Chain); + else if (bonusRadio.Checked) + { + flairRadio.InvokeIfRequired(() => { flairRadio.Checked = true; }); + SetSelectedObject(NoteType.ChainBonusFlair); + } + else if (flairRadio.Checked) + SetSelectedObject(NoteType.ChainBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void holdButton_Click(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + SetSelectedObject(NoteType.HoldStartNoBonus); + else if (bonusRadio.Checked) + { + flairRadio.InvokeIfRequired(() => { flairRadio.Checked = true; }); + SetSelectedObject(NoteType.HoldStartBonusFlair); + } + else if (flairRadio.Checked) + SetSelectedObject(NoteType.HoldStartBonusFlair); + + currentGimmickType = GimmickType.NoGimmick; + } + + private void endChartButton_Click(object sender, EventArgs e) + { + SetSelectedObject(NoteType.EndOfChart); + currentGimmickType = GimmickType.NoGimmick; + } + + private void endHoldCheck_CheckedChanged(object sender, EventArgs e) + { + + } + + private void BonusRadioCheck(object sender, EventArgs e) + { + if (noBonusRadio.Checked) + currentBonusType = BonusType.NoBonus; + else if (bonusRadio.Checked) + currentBonusType = BonusType.Bonus; + else + currentBonusType = BonusType.Flair; + UpdateSelectedNote(); + } + + private void UpdateSelectedNote() + { + switch (currentNoteType) + { + case NoteType.TouchNoBonus: + case NoteType.TouchBonus: + case NoteType.TouchBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.TouchNoBonus); + break; + case BonusType.Bonus: + SetSelectedObject(NoteType.TouchBonus); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.TouchBonusFlair); + break; + default: + break; + } + break; + case NoteType.SnapRedNoBonus: + case NoteType.SnapRedBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.SnapRedNoBonus); + break; + case BonusType.Bonus: + flairRadio.Checked = true; + SetSelectedObject(NoteType.SnapRedBonusFlair); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.SnapRedBonusFlair); + break; + default: + break; + } + break; + case NoteType.SnapBlueNoBonus: + case NoteType.SnapBlueBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.SnapBlueNoBonus); + break; + case BonusType.Bonus: + flairRadio.Checked = true; + SetSelectedObject(NoteType.SnapBlueBonusFlair); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.SnapBlueBonusFlair); + break; + default: + break; + } + break; + case NoteType.SlideOrangeNoBonus: + case NoteType.SlideOrangeBonus: + case NoteType.SlideOrangeBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.SlideOrangeNoBonus); + break; + case BonusType.Bonus: + SetSelectedObject(NoteType.SlideOrangeBonus); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.SlideOrangeBonusFlair); + break; + default: + break; + } + break; + case NoteType.SlideGreenNoBonus: + case NoteType.SlideGreenBonus: + case NoteType.SlideGreenBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.SlideGreenNoBonus); + break; + case BonusType.Bonus: + SetSelectedObject(NoteType.SlideGreenBonus); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.SlideGreenBonusFlair); + break; + default: + break; + } + break; + case NoteType.HoldStartNoBonus: + case NoteType.HoldStartBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.HoldStartNoBonus); + break; + case BonusType.Bonus: + flairRadio.Checked = true; + SetSelectedObject(NoteType.HoldStartBonusFlair); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.HoldStartBonusFlair); + break; + default: + break; + } + break; + case NoteType.HoldJoint: + break; + case NoteType.HoldEnd: + break; + case NoteType.MaskAdd: + break; + case NoteType.MaskRemove: + break; + case NoteType.EndOfChart: + break; + case NoteType.Chain: + case NoteType.ChainBonusFlair: + switch (currentBonusType) + { + case BonusType.NoBonus: + SetSelectedObject(NoteType.Chain); + break; + case BonusType.Bonus: + flairRadio.Checked = true; + SetSelectedObject(NoteType.ChainBonusFlair); + break; + case BonusType.Flair: + SetSelectedObject(NoteType.ChainBonusFlair); + break; + default: + break; + } + break; + default: + break; + } + } + + private void selectSongButton_Click(object sender, EventArgs e) + { + if (openSongDialog.ShowDialog() != DialogResult.Cancel) + { + songFilePath = openSongDialog.FileName; + songFileLabel.Text = songFilePath; + currentSong = soundEngine.Play2D(songFilePath, true, true); + songTrackBar.Value = 0; + songTrackBar.Maximum = (int)currentSong.PlayLength; + } + } + + private void playButton_Click(object sender, EventArgs e) + { + if (currentSong != null) + { + if (!chart.HasInitEvents) + { + MessageBox.Show("Set Initial Chart Settings (from Chart Menu).", "Warning!"); + return; + } + + currentSong.PlayPosition = (uint)songTrackBar.Value; + currentSong.Paused = !currentSong.Paused; + if (currentSong.Paused) + { + playButton.Text = "Play (P)"; + updateTimer.Enabled = false; + } + else + { + playButton.Text = "Pause (P)"; + updateTimer.Enabled = true; + } + } + } + + private bool IsSongPlaying() + { + if (currentSong != null && !currentSong.Paused) + return true; + else + return false; + } + + private void updateTimer_Tick(object sender, EventArgs e) + { + songTrackBar.Value = (int)currentSong.PlayPosition; + var info = chart.GetBeat(currentSong.PlayPosition); + if (info != null && info.Measure != -1) + { + measureNumeric.Value = info.Measure; + beat1Numeric.Value = (int)((float)info.Beat / 1920.0f * (float)beat2Numeric.Value); + circleView.CurrentMeasure = info.MeasureDecimal; + + // TODO Fix hi-speed (it needs to be able to display multiple hi-speeds in the circle view at once) + //// Change hi-speed, if applicable + //var hispeed = chart.Gimmicks.Where(x => x.Measure <= info.Measure && x.GimmickType == GimmickType.HiSpeedChange).LastOrDefault(); + //if (hispeed != null && hispeed.HiSpeed != circleView.TotalMeasureShowNotes) + //{ + // visualHispeedNumeric.Value = (decimal)hispeed.HiSpeed; + //} + } + circlePanel.Invalidate(); + } + + private void songTrackBar_ValueChanged(object sender, EventArgs e) + { + if (IsSongPlaying()) + return; + + currentSong.PlayPosition = (uint)songTrackBar.Value; + var info = chart.GetBeat(currentSong.PlayPosition); + if (info != null && info.Measure != -1 && valueTriggerEvent != EventSource.MouseWheel) + { + valueTriggerEvent = EventSource.TrackBar; + measureNumeric.Value = info.Measure; + beat1Numeric.Value = (int)((float)info.Beat / 1920.0f * (float)beat2Numeric.Value); + circleView.CurrentMeasure = info.MeasureDecimal; + } + circlePanel.Invalidate(); + valueTriggerEvent = EventSource.None; + } + + private void circlePanel_MouseDown(object sender, MouseEventArgs e) + { + // Determine the location of mouse click inside the circle + // X and Y are relative to the upper left of the panel + float xCen = e.X - (circlePanel.Width / 2); + float yCen = -(e.Y - (circlePanel.Height / 2)); + float theta = (float)(Math.Atan2(yCen, xCen) * 180.0f / Math.PI); + if (theta < 0) + theta += 360.0f; + // Left click moves the cursor + if (e.Button == MouseButtons.Left) + { + positionNumeric.Value = (int)(theta / 6.0f); + mouseDownPos = (int)positionNumeric.Value; + mouseDownPt = e.Location; + lastMousePos = -1; + rolloverPos = false; + rolloverNeg = false; + circlePanel.Invalidate(); + } + } + + private void circlePanel_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left && mouseDownPos > -1) + { + var dist = Utils.GetDist(e.Location, mouseDownPt); + if (dist > 5.0f) + InsertObject(); + mouseDownPos = -1; + mouseDownPt = new Point(); + circlePanel.Invalidate(); + } + } + + private void circlePanel_MouseMove(object sender, MouseEventArgs e) + { + // Determine the location of mouse click inside the circle + // X and Y are relative to the upper left of the panel + float xCen = e.X - (circlePanel.Width / 2); + float yCen = -(e.Y - (circlePanel.Height / 2)); + float thetaCalc = (float)(Math.Atan2(yCen, xCen) * 180.0f / Math.PI); + if (thetaCalc < 0) + thetaCalc += 360.0f; + int theta = (int)(thetaCalc / 6.0f); + // Left click will alter the note width and possibly position depending on which direction we move + if (e.Button == MouseButtons.Left && mouseDownPos != -1) + { + int delta = theta - lastMousePos; + // Handle rollover + if (delta == -59) + { + if (rolloverNeg) + rolloverNeg = false; + else + rolloverPos = true; + } + else if (delta == 59) + { + if (rolloverPos) + rolloverPos = false; + else + rolloverNeg = true; + } + if (theta == mouseDownPos) + { + positionNumeric.Value = mouseDownPos; + sizeNumeric.Value = 1; + } + else if ((theta > mouseDownPos || rolloverPos) && !rolloverNeg) + { + positionNumeric.Value = mouseDownPos; + if (rolloverPos) + sizeNumeric.Value = (int)Math.Min(theta + 60 - mouseDownPos + 1, 60); + else + sizeNumeric.Value = theta - mouseDownPos + 1; + } + else if (theta < mouseDownPos || rolloverNeg) + { + positionNumeric.Value = theta; + if (rolloverNeg) + sizeNumeric.Value = (int)Math.Min(mouseDownPos + 60 - theta + 1, 60); + else + sizeNumeric.Value = mouseDownPos - theta + 1; + } + lastMousePos = theta; + circlePanel.Invalidate(); + } + } + + private void visualHispeedNumeric_ValueChanged(object sender, EventArgs e) + { + circleView.TotalMeasureShowNotes = (float)visualHispeedNumeric.Value; + } + + private void insertButton_Click(object sender, EventArgs e) + { + InsertObject(); + } + + private void InsertObject() + { + var currentBeat = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value); + + if (currentGimmickType == GimmickType.NoGimmick) + { + Note tempNote = new Note() + { + BeatInfo = currentBeat, + NoteType = currentNoteType, + Position = (int)positionNumeric.Value, + Size = (int)sizeNumeric.Value, + HoldChange = true + }; + switch (currentNoteType) + { + case NoteType.HoldStartNoBonus: + case NoteType.HoldStartBonusFlair: + SetSelectedObject(NoteType.HoldJoint); + lastNote = tempNote; + break; + case NoteType.HoldJoint: + case NoteType.HoldEnd: + tempNote.PrevNote = lastNote; + tempNote.PrevNote.NextNote = tempNote; + if (endHoldCheck.Checked) + tempNote.NoteType = NoteType.HoldEnd; + else + lastNote = tempNote; + break; + case NoteType.MaskAdd: + case NoteType.MaskRemove: + if (clockwiseMaskRadio.Checked) + tempNote.MaskFill = MaskType.Clockwise; + else if (cClockwiseMaskRadio.Checked) + tempNote.MaskFill = MaskType.CounterClockwise; + else + tempNote.MaskFill = MaskType.Center; + break; + default: + break; + } + chart.Notes.Add(tempNote); + chart.IsSaved = false; + opManager.Push(new InsertNote(chart, tempNote)); + } + } + + private void maskButton_Click(object sender, EventArgs e) + { + if (addMaskRadio.Checked) + SetSelectedObject(NoteType.MaskAdd); + else + SetSelectedObject(NoteType.MaskRemove); + SetSelectedObject(GimmickType.NoGimmick); + } + + private void bpmChangeButton_Click(object sender, EventArgs e) + { + var result = gimmickForm.Show( + new Gimmick() + { + BeatInfo = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value), + GimmickType = GimmickType.BpmChange + }, GimmickForm.FormReason.New); + if (result == DialogResult.OK) + { + InsertGimmick(gimmickForm.Gimmicks); + } + } + + private void timeSigButton_Click(object sender, EventArgs e) + { + var result = gimmickForm.Show( + new Gimmick() + { + BeatInfo = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value), + GimmickType = GimmickType.TimeSignatureChange + }, GimmickForm.FormReason.New); + if (result == DialogResult.OK) + { + InsertGimmick(gimmickForm.Gimmicks); + } + } + + private void hiSpeedButton_Click(object sender, EventArgs e) + { + var result = gimmickForm.Show( + new Gimmick() + { + BeatInfo = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value), + GimmickType = GimmickType.HiSpeedChange + }, GimmickForm.FormReason.New); + if (result == DialogResult.OK) + { + InsertGimmick(gimmickForm.Gimmicks); + } + } + + private void stopButton_Click(object sender, EventArgs e) + { + var result = gimmickForm.Show( + new Gimmick() + { + BeatInfo = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value), + GimmickType = GimmickType.StopStart + }, GimmickForm.FormReason.New); + if (result == DialogResult.OK) + { + InsertGimmick(gimmickForm.Gimmicks); + } + } + + private void reverseButton_Click(object sender, EventArgs e) + { + var result = gimmickForm.Show( + new Gimmick() + { + BeatInfo = new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value), + GimmickType = GimmickType.ReverseStart + }, GimmickForm.FormReason.New); + if (result == DialogResult.OK) + { + InsertGimmick(gimmickForm.Gimmicks); + } + } + + private void InsertGimmick(List gimmicks) + { + var operations = new List(); + foreach (var gim in gimmicks) + { + chart.Gimmicks.Add(gim); + operations.Add(new Operations.InsertGimmick(chart, gim)); + } + chart.IsSaved = false; + opManager.Push(new CompositeOperation(operations[0].Description, operations)); + } + + private void maskRatio_CheckChanged(object sender, EventArgs e) + { + if (currentNoteType == NoteType.MaskAdd || currentNoteType == NoteType.MaskRemove) + maskButton_Click(this, new EventArgs()); + } + + private void aboutToolStripMenuItem_Click(object sender, EventArgs e) + { + MessageBox.Show($"A reimagining of Goatgarien's BAKKA Editor.\n\nCode: VeroxZik\n\nUI Inspiration: Yellowberry", $"BAKKA Sharp {fileVersion}"); + } + + private void initialChartSettingsToolStripMenuItem_Click(object sender, EventArgs e) + { + ShowInitialSettings(); + } + + private void ShowInitialSettings() + { + if (initSettingsForm.ShowDialog() == DialogResult.OK) + { + var initBpm = chart.Gimmicks.FirstOrDefault(x => x.Measure == 0.0f && x.GimmickType == GimmickType.BpmChange); + if (initBpm != null) + initBpm.BPM = initSettingsForm.Bpm; + else + chart.Gimmicks.Add(new Gimmick() { BPM = initSettingsForm.Bpm, BeatInfo = new BeatInfo(0, 0), GimmickType = GimmickType.BpmChange }); + + var initTimSig = chart.Gimmicks.FirstOrDefault(x => x.Measure == 0.0f && x.GimmickType == GimmickType.TimeSignatureChange); + if (initTimSig != null) + { + initTimSig.TimeSig.Upper = initSettingsForm.TimeSigUpper; + initTimSig.TimeSig.Lower = initSettingsForm.TimeSigLower; + } + else + chart.Gimmicks.Add( + new Gimmick() + { + TimeSig = new TimeSignature() { Upper = initSettingsForm.TimeSigUpper, Lower = initSettingsForm.TimeSigLower }, + BeatInfo = new BeatInfo(0, 0), + GimmickType = GimmickType.TimeSignatureChange + }); + chart.Offset = initSettingsForm.Offset; + chart.MovieOffset = initSettingsForm.MovieOffset; + + if (selectedGimmickIndex == -1) + selectedGimmickIndex = 0; + UpdateGimmickLabels(); + chart.Gimmicks = chart.Gimmicks.OrderBy(x => x.Measure).ToList(); + chart.RecalcTime(); + } + } + + private void showCursorToolStripMenuItem_Click(object sender, EventArgs e) + { + circlePanel.Invalidate(); + } + + private void gimmickPrevButton_Click(object sender, EventArgs e) + { + if (chart.Gimmicks.Count == 0) + return; + + if (selectedGimmickIndex == 0) + selectedGimmickIndex = chart.Gimmicks.Count - 1; + else + selectedGimmickIndex -= 1; + + UpdateGimmickLabels(); + } + + private void gimmickNextButton_Click(object sender, EventArgs e) + { + if (chart.Gimmicks.Count == 0) + return; + + if (selectedGimmickIndex == chart.Gimmicks.Count - 1) + selectedGimmickIndex = 0; + else + selectedGimmickIndex += 1; + + UpdateGimmickLabels(); + } + + private void gimmickEditButton_Click(object sender, EventArgs e) + { + if (selectedGimmickIndex == -1) + return; + + var gimmick = chart.Gimmicks[selectedGimmickIndex]; + Gimmick? gim1 = null; + Gimmick? gim2 = null; + if (gimmick.Measure == 0 && (gimmick.GimmickType == GimmickType.BpmChange || gimmick.GimmickType == GimmickType.TimeSignatureChange)) + ShowInitialSettings(); + else + { + switch (gimmick.GimmickType) + { + case GimmickType.ReverseStart: + gim1 = chart.Gimmicks.FirstOrDefault(x => x.Measure > gimmick.Measure && x.GimmickType == GimmickType.ReverseMiddle); + gim2 = chart.Gimmicks.FirstOrDefault(x => x.Measure > gimmick.Measure && x.GimmickType == GimmickType.ReverseEnd); + break; + case GimmickType.ReverseMiddle: + gim1 = chart.Gimmicks.LastOrDefault(x => x.Measure < gimmick.Measure && x.GimmickType == GimmickType.ReverseStart); + gim2 = chart.Gimmicks.FirstOrDefault(x => x.Measure > gimmick.Measure && x.GimmickType == GimmickType.ReverseEnd); + break; + case GimmickType.ReverseEnd: + gim1 = chart.Gimmicks.LastOrDefault(x => x.Measure < gimmick.Measure && x.GimmickType == GimmickType.ReverseStart); + gim2 = chart.Gimmicks.LastOrDefault(x => x.Measure < gimmick.Measure && x.GimmickType == GimmickType.ReverseMiddle); + break; + case GimmickType.StopStart: + gim1 = chart.Gimmicks.FirstOrDefault(x => x.Measure > gimmick.Measure && x.GimmickType == GimmickType.StopEnd); + break; + case GimmickType.StopEnd: + gim1 = chart.Gimmicks.LastOrDefault(x => x.Measure < gimmick.Measure && x.GimmickType == GimmickType.StopStart); + break; + default: + break; + } + + if (gimmickForm.Show(gimmick, GimmickForm.FormReason.Edit, gim1, gim2) == DialogResult.OK) + { + var opList = new List(); + + switch (gimmick.GimmickType) + { + case GimmickType.BpmChange: + case GimmickType.TimeSignatureChange: + case GimmickType.HiSpeedChange: + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[0])); + break; + case GimmickType.ReverseStart: + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[0])); + opList.Add(new EditGimmick(gim1, gimmickForm.Gimmicks[1])); + opList.Add(new EditGimmick(gim2, gimmickForm.Gimmicks[2])); + break; + case GimmickType.ReverseMiddle: + opList.Add(new EditGimmick(gim1, gimmickForm.Gimmicks[0])); + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[1])); + opList.Add(new EditGimmick(gim2, gimmickForm.Gimmicks[2])); + break; + case GimmickType.ReverseEnd: + opList.Add(new EditGimmick(gim1, gimmickForm.Gimmicks[0])); + opList.Add(new EditGimmick(gim2, gimmickForm.Gimmicks[1])); + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[2])); + break; + case GimmickType.StopStart: + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[0])); + opList.Add(new EditGimmick(gim1, gimmickForm.Gimmicks[1])); + break; + case GimmickType.StopEnd: + opList.Add(new EditGimmick(gim1, gimmickForm.Gimmicks[0])); + opList.Add(new EditGimmick(gimmick, gimmickForm.Gimmicks[1])); + break; + default: + break; + } + opManager.InvokeAndPush(new CompositeOperation(opList[0].Description, opList)); + UpdateGimmickLabels(); + } + } + } + + private void gimmickDeleteButton_Click(object sender, EventArgs e) + { + if (selectedGimmickIndex == -1) + return; + + float measure = chart.Gimmicks[selectedGimmickIndex].Measure; + var type = chart.Gimmicks[selectedGimmickIndex].GimmickType; + var gimmicks = new List(); + gimmicks.Add(chart.Gimmicks[selectedGimmickIndex]); + chart.Gimmicks.RemoveAt(selectedGimmickIndex); + switch (type) + { + case GimmickType.ReverseStart: + gimmicks.Add(chart.Gimmicks.First(x => x.Measure > measure && x.GimmickType == GimmickType.ReverseMiddle)); + gimmicks.Add(chart.Gimmicks.First(x => x.Measure > measure && x.GimmickType == GimmickType.ReverseEnd)); + break; + case GimmickType.ReverseMiddle: + gimmicks.Add(chart.Gimmicks.Last(x => x.Measure < measure && x.GimmickType == GimmickType.ReverseStart)); + gimmicks.Add(chart.Gimmicks.First(x => x.Measure > measure && x.GimmickType == GimmickType.ReverseEnd)); + break; + case GimmickType.ReverseEnd: + gimmicks.Add(chart.Gimmicks.Last(x => x.Measure < measure && x.GimmickType == GimmickType.ReverseStart)); + gimmicks.Add(chart.Gimmicks.Last(x => x.Measure < measure && x.GimmickType == GimmickType.ReverseMiddle)); + break; + case GimmickType.StopStart: + gimmicks.Add(chart.Gimmicks.First(x => x.Measure > measure && x.GimmickType == GimmickType.StopEnd)); + break; + case GimmickType.StopEnd: + gimmicks.Add(chart.Gimmicks.Last(x => x.Measure < measure && x.GimmickType == GimmickType.StopStart)); + break; + default: + break; + } + var ops = new List(); + foreach (var gim in gimmicks) + ops.Add(new RemoveGimmick(chart, gim)); + opManager.InvokeAndPush(new CompositeOperation(ops[0].Description, ops)); + if (selectedGimmickIndex >= chart.Gimmicks.Count) + selectedGimmickIndex = chart.Gimmicks.Count - 1; + UpdateGimmickLabels(); + } + + private void UpdateGimmickLabels(int val = -2) + { + if (val != -2 && val < chart.Gimmicks.Count) + selectedGimmickIndex = val; + if (selectedGimmickIndex == -1) + { + gimmickMeasureLabel.Text = "None"; + gimmickBeatLabel.Text = "None"; + gimmickTypeLabel.Text = "None"; + gimmickValueLabel.Text = "None"; + return; + } + + var gimmick = chart.Gimmicks[selectedGimmickIndex]; + + gimmickMeasureLabel.Text = gimmick.BeatInfo.Measure.ToString(); + var quant = Utils.GetQuantization(gimmick.BeatInfo.Beat, 16); + gimmickBeatLabel.Text = $"{quant.Item1} / {quant.Item2}"; + gimmickTypeLabel.Text = gimmick.GimmickType.ToLabel(); + switch (gimmick.GimmickType) + { + case GimmickType.BpmChange: + gimmickValueLabel.Text = gimmick.BPM.ToString("F6"); + break; + case GimmickType.TimeSignatureChange: + gimmickValueLabel.Text = gimmick.TimeSig.Upper.ToString() + " / " + gimmick.TimeSig.Lower.ToString(); + break; + case GimmickType.HiSpeedChange: + gimmickValueLabel.Text = gimmick.HiSpeed.ToString("F6"); + break; + case GimmickType.NoGimmick: + case GimmickType.ReverseStart: + case GimmickType.ReverseMiddle: + case GimmickType.ReverseEnd: + case GimmickType.StopStart: + case GimmickType.StopEnd: + default: + gimmickValueLabel.Text = "No value"; + break; + } + + // Prevent deletetion of initial BPM and time signature + if (chart.Gimmicks.Count == 0 + || (gimmick.Measure == 0 && (gimmick.GimmickType == GimmickType.BpmChange || gimmick.GimmickType == GimmickType.TimeSignatureChange))) + { + gimmickDeleteButton.Enabled = false; + } + else + { + gimmickDeleteButton.Enabled = true; + } + } + + private void UpdateNoteLabels(int val = -2) + { + if (val != -2) + selectedNoteIndex = val; + if(selectedNoteIndex == -1) + { + noteMeasureLabel.Text = "None"; + noteBeatLabel.Text = "None"; + noteTypeLabel.Text = "None"; + notePositionLabel.Text = "None"; + noteSizeLabel.Text = "None"; + noteMaskLabel.Text = "N/A"; + return; + } + + var note = chart.Notes[selectedNoteIndex]; + + noteMeasureLabel.Text = note.BeatInfo.Measure.ToString(); + var quant = Utils.GetQuantization(note.BeatInfo.Beat, 16); + noteBeatLabel.Text = $"{quant.Item1} / {quant.Item2}"; + noteTypeLabel.Text = note.NoteType.ToLabel(); + notePositionLabel.Text = note.Position.ToString(); + noteSizeLabel.Text = note.Size.ToString(); + if (!note.IsMask) + noteMaskLabel.Text = "N/A"; + else + { + switch (note.MaskFill) + { + case MaskType.Clockwise: + noteMaskLabel.Text = "Clockwise"; + break; + case MaskType.CounterClockwise: + noteMaskLabel.Text = "C-Clockwise"; + break; + case MaskType.Center: + noteMaskLabel.Text = "From Center"; + break; + default: + break; + } + } + } + + private void notePrevButton_Click(object sender, EventArgs e) + { + if (chart.Notes.Count == 0) + return; + + if (selectedNoteIndex == 0) + selectedNoteIndex = chart.Notes.Count - 1; + else + selectedNoteIndex -= 1; + + circlePanel.Invalidate(); + UpdateNoteLabels(); + } + + private void noteNextButton_Click(object sender, EventArgs e) + { + if (chart.Notes.Count == 0) + return; + + if (selectedNoteIndex == chart.Notes.Count - 1) + selectedNoteIndex = 0; + else + selectedNoteIndex += 1; + + circlePanel.Invalidate(); + UpdateNoteLabels(); + } + + private void notePrevMeasureButton_Click(object sender, EventArgs e) + { + if (chart.Notes.Count == 0) + return; + + int lastMeasure = chart.Notes[selectedNoteIndex].BeatInfo.Measure; + var note = chart.Notes.LastOrDefault(x => x.BeatInfo.Measure < lastMeasure); + if (note != null) + { + selectedNoteIndex = chart.Notes.IndexOf(note); + } + else + { + note = chart.Notes.LastOrDefault(x => x.BeatInfo.Measure > lastMeasure); + if (note != null) + { + selectedNoteIndex = chart.Notes.IndexOf(note); + } + } + circlePanel.Invalidate(); + UpdateNoteLabels(); + } + + private void noteNextMeasureButton_Click(object sender, EventArgs e) + { + if (chart.Notes.Count == 0) + return; + + int lastMeasure = chart.Notes[selectedNoteIndex].BeatInfo.Measure; + var note = chart.Notes.FirstOrDefault(x => x.BeatInfo.Measure > lastMeasure); + if (note != null) + { + selectedNoteIndex = chart.Notes.IndexOf(note); + } + else + { + note = chart.Notes.FirstOrDefault(x => x.BeatInfo.Measure < lastMeasure); + if (note != null) + { + selectedNoteIndex = chart.Notes.IndexOf(note); + } + } + circlePanel.Invalidate(); + UpdateNoteLabels(); + } + + private void noteEditSelectedButton_Click(object sender, EventArgs e) + { + if (selectedNoteIndex == -1) + return; + + var currentNote = chart.Notes[selectedNoteIndex]; + var newNote = new Note() + { + BeatInfo = currentNote.BeatInfo, + Position = (int)positionNumeric.Value, + Size = (int)sizeNumeric.Value + }; + opManager.InvokeAndPush(new EditNote(currentNote, newNote)); + circlePanel.Invalidate(); + UpdateNoteLabels(); + } + + private void noteDeleteSelectedButton_Click(object sender, EventArgs e) + { + if (selectedNoteIndex == -1) + return; + + int delIndex = selectedNoteIndex; + opManager.InvokeAndPush(new RemoveNote(chart, chart.Notes[selectedNoteIndex])); + if (selectedNoteIndex == delIndex) + { + UpdateNoteLabels(delIndex - 1); + circlePanel.Invalidate(); + } + } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + var sender = this; + var e = new EventArgs(); + + switch (keyData) + { + case Keys.T: + tapButton_Click(sender, e); + tapButton.Focus(); + return true; + case Keys.O: + orangeButton_Click(sender, e); + orangeButton.Focus(); + return true; + case Keys.G: + greenButton_Click(sender, e); + greenButton.Focus(); + return true; + case Keys.R: + redButton_Click(sender, e); + redButton.Focus(); + return true; + case Keys.B: + blueButton_Click(sender, e); + blueButton.Focus(); + return true; + case Keys.Y: + chainButton_Click(sender, e); + chainButton.Focus(); + return true; + case Keys.H: + holdButton_Click(sender, e); + holdButton.Focus(); + return true; + case Keys.I: + insertButton_Click(sender, e); + insertButton.Focus(); + return true; + case Keys.P: + playButton_Click(sender, e); + playButton.Focus(); + return true; + default: + break; + } + + return base.ProcessCmdKey(ref msg, keyData); + } + + private void undoToolStripMenuItem_Click(object sender, EventArgs e) + { + if (opManager.CanUndo) + opManager.Undo(); + } + + private void redoToolStripMenuItem_Click(object sender, EventArgs e) + { + if (opManager.CanRedo) + opManager.Redo(); + } + + private void MainForm_Resize(object sender, EventArgs e) + { + var zoneWidth = noteViewGroupBox.Left - gimmickTypeGroupBox.Right - 12; + var zoneHeight = playbackGroupBox.Top - gimmickTypeGroupBox.Top - 6; + if (zoneWidth > zoneHeight) + { + circlePanel.Width = zoneHeight; + circlePanel.Height = zoneHeight; + } + else + { + circlePanel.Width = zoneWidth; + circlePanel.Height = zoneWidth; + } + int paddingLeft = (zoneWidth - circlePanel.Width) / 2; + circlePanel.Left = gimmickTypeGroupBox.Right + 6 + paddingLeft; + SetBufferedGraphicsContext(); + circleView.Update(circlePanel.Size); + circlePanel.Invalidate(); + } + + private void autoSaveTimer_Tick(object sender, EventArgs e) + { + if (tempFilePath == "") + tempFilePath = Path.GetTempFileName().Replace(".tmp", ".mer"); + + if ((chart.Notes.Count > 0 || chart.Gimmicks.Count > 0) && !chart.IsSaved) + { + chart.WriteFile(tempFilePath, false); + File.WriteAllLines(tempStatusPath, new string[] { "true", DateTime.Now.ToString("yyyy-MM-dd HH:mm") }); + } + else + { + DeleteAutosaves(tempFilePath); + } + } + + private void DeleteAutosaves(string keep = "") + { + var oldAutosave = Directory.GetFiles(Path.GetTempPath(), "*.mer"); + foreach (var file in oldAutosave) + { + if (file != keep) + File.Delete(file); + } + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/MainForm.resx b/BAKKA-Sharp/MainForm.resx new file mode 100644 index 0000000..3410fdf --- /dev/null +++ b/BAKKA-Sharp/MainForm.resx @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 125, 17 + + + 258, 17 + + + 387, 17 + + + 530, 17 + + + 17, 17 + + + 651, 17 + + \ No newline at end of file diff --git a/BAKKA-Sharp/Note.cs b/BAKKA-Sharp/Note.cs new file mode 100644 index 0000000..cf2ae73 --- /dev/null +++ b/BAKKA-Sharp/Note.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal class BeatInfo + { + public int Measure; + public int Beat; + + public BeatInfo(int measure, int beat) + { + Measure = measure; + Beat = beat; + } + + public BeatInfo(float measure) + { + Measure = (int)Math.Floor(measure); + Beat = (int)((measure - (float)Measure) * 1920.0f); + } + + public BeatInfo(BeatInfo info) + { + Measure = info.Measure; + Beat = info.Beat; + } + + public float MeasureDecimal { get { return (float)Measure + (float)Beat / 1920.0f; } } + } + + internal class TimeSignature + { + public int Upper; + public int Lower; + + public double Ratio { get { return (double)Upper / (double)Lower; } } + + public TimeSignature() + { + Upper = 4; + Lower = 4; + } + + public TimeSignature(TimeSignature sig) + { + Upper = sig.Upper; + Lower = sig.Lower; + } + } + + internal class NoteBase + { + public BeatInfo BeatInfo { get; set; } = new BeatInfo(-1, 0); + public GimmickType GimmickType { get; set; } = GimmickType.NoGimmick; + + public float Measure { get { return BeatInfo.MeasureDecimal; } } + } + + internal class Note : NoteBase + { + public NoteType NoteType { get; set; } = NoteType.TouchNoBonus; + public int Position { get; set; } + public int Size { get; set; } + [System.ComponentModel.Browsable(false)] + public bool HoldChange { get; set; } + [System.ComponentModel.Browsable(false)] + public MaskType MaskFill { get; set; } + [System.ComponentModel.Browsable(false)] + public Note NextNote { get; set; } + [System.ComponentModel.Browsable(false)] + public Note PrevNote { get; set; } + + [System.ComponentModel.Browsable(false)] + public bool IsHold + { + get + { + switch (NoteType) + { + case NoteType.HoldStartNoBonus: + case NoteType.HoldJoint: + case NoteType.HoldEnd: + case NoteType.HoldStartBonusFlair: + return true; + default: + return false; + } + } + } + [System.ComponentModel.Browsable(false)] + public bool IsMask + { + get + { + switch (NoteType) + { + case NoteType.MaskAdd: + case NoteType.MaskRemove: + return true; + default: + return false; + } + } + } + [System.ComponentModel.Browsable(false)] + public bool IsBonus + { + get + { + switch (NoteType) + { + case NoteType.TouchBonus: + case NoteType.SlideOrangeBonus: + case NoteType.SlideGreenBonus: + return true; + default: + return false; ; + } + } + } + [System.ComponentModel.Browsable(false)] + public bool IsFlair + { + get + { + switch (NoteType) + { + case NoteType.TouchBonusFlair: + case NoteType.SnapRedBonusFlair: + case NoteType.SnapBlueBonusFlair: + case NoteType.SlideOrangeBonusFlair: + case NoteType.SlideGreenBonusFlair: + case NoteType.HoldStartBonusFlair: + case NoteType.ChainBonusFlair: + return true; + default: + return false; + } + } + } + [System.ComponentModel.Browsable(false)] + public Color Color + { + get + { + return Utils.NoteTypeToColor(NoteType); + } + } + + public Note() { } + public Note(BeatInfo info) + { + BeatInfo = info; + GimmickType = GimmickType.NoGimmick; + } + + public Note(Note baseNote) : this(baseNote.BeatInfo) + { + Position = baseNote.Position; + Size = baseNote.Size; + NoteType = baseNote.NoteType; + } + } + + internal class Gimmick : NoteBase + { + public double BPM { get; set; } + public TimeSignature TimeSig { get; set; } = new(); + public double HiSpeed { get; set; } + public double StartTime { get; set; } + + public bool IsReverse + { + get + { + switch (GimmickType) + { + case GimmickType.ReverseStart: + case GimmickType.ReverseMiddle: + case GimmickType.ReverseEnd: + return true; + default: + return false; + } + } + } + + public bool IsStop + { + get + { + switch (GimmickType) + { + case GimmickType.StopStart: + case GimmickType.StopEnd: + return true; + default: + return false; + } + } + } + + public Gimmick() { } + public Gimmick(BeatInfo info, GimmickType type) + { + BeatInfo = info; + GimmickType = type; + } + public Gimmick(Gimmick baseGimmick) : this(baseGimmick.BeatInfo, baseGimmick.GimmickType) + { + switch (GimmickType) + { + case GimmickType.BpmChange: + HiSpeed = baseGimmick.HiSpeed; + break; + case GimmickType.TimeSignatureChange: + TimeSig = new TimeSignature(baseGimmick.TimeSig); + break; + case GimmickType.HiSpeedChange: + HiSpeed = baseGimmick.HiSpeed; + break; + } + } + } +} diff --git a/BAKKA-Sharp/Operations/CompositeOperation.cs b/BAKKA-Sharp/Operations/CompositeOperation.cs new file mode 100644 index 0000000..d041d6f --- /dev/null +++ b/BAKKA-Sharp/Operations/CompositeOperation.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp.Operations +{ + internal class CompositeOperation : IOperation + { + public string Description { get; } + + protected IEnumerable Operations { get; } + + public CompositeOperation(string description, IEnumerable operations) + { + Description = description; + Operations = operations; + } + + public void Redo() + { + foreach (var op in Operations) + { + op.Redo(); + } + } + + public void Undo() + { + foreach (var op in Operations) + { + op.Undo(); + } + } + } +} diff --git a/BAKKA-Sharp/Operations/GimmickOperation.cs b/BAKKA-Sharp/Operations/GimmickOperation.cs new file mode 100644 index 0000000..cd1086b --- /dev/null +++ b/BAKKA-Sharp/Operations/GimmickOperation.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp.Operations +{ + internal abstract class GimmickOperation : IOperation + { + protected Gimmick Gimmick { get; } + protected Chart Chart { get; } + public abstract string Description { get; } + + public GimmickOperation(Chart chart, Gimmick item) + { + Chart = chart; + Gimmick = item; + } + + public abstract void Redo(); + + public abstract void Undo(); + } + + internal class InsertGimmick : GimmickOperation + { + public override string Description => "Insert gimmick"; + + public InsertGimmick(Chart chart, Gimmick item) : base(chart, item) + { } + + public override void Redo() + { + Chart.Gimmicks.Add(Gimmick); + } + + public override void Undo() + { + Chart.Gimmicks.Remove(Gimmick); + } + } + + internal class RemoveGimmick : GimmickOperation + { + public override string Description => "Remove gimmick"; + + public RemoveGimmick(Chart chart, Gimmick item) : base(chart, item) + { } + + public override void Redo() + { + Chart.Gimmicks.Remove(Gimmick); + } + + public override void Undo() + { + Chart.Gimmicks.Add(Gimmick); + } + } + + internal class EditGimmick : IOperation + { + public string Description => "Edit gimmick"; + + protected Gimmick Base { get; } + protected Gimmick OldGimmick { get; } + protected Gimmick NewGimmick { get; } + + public EditGimmick(Gimmick baseGimmick, Gimmick newGimmick) + { + Base = baseGimmick; + OldGimmick = new Gimmick(baseGimmick); + NewGimmick = new Gimmick(newGimmick); + } + + public void Redo() + { + Base.BeatInfo = new BeatInfo(NewGimmick.BeatInfo); + switch (Base.GimmickType) + { + case GimmickType.BpmChange: + Base.BPM = NewGimmick.BPM; + break; + case GimmickType.TimeSignatureChange: + Base.TimeSig = new TimeSignature(NewGimmick.TimeSig); + break; + case GimmickType.HiSpeedChange: + Base.HiSpeed = NewGimmick.HiSpeed; + break; + } + } + + public void Undo() + { + Base.BeatInfo = new BeatInfo(OldGimmick.BeatInfo); + switch (Base.GimmickType) + { + case GimmickType.BpmChange: + Base.BPM = OldGimmick.BPM; + break; + case GimmickType.TimeSignatureChange: + Base.TimeSig = new TimeSignature(OldGimmick.TimeSig); + break; + case GimmickType.HiSpeedChange: + Base.HiSpeed = OldGimmick.HiSpeed; + break; + } + } + } +} diff --git a/BAKKA-Sharp/Operations/IOperation.cs b/BAKKA-Sharp/Operations/IOperation.cs new file mode 100644 index 0000000..8b5a3ee --- /dev/null +++ b/BAKKA-Sharp/Operations/IOperation.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp.Operations +{ + internal interface IOperation + { + string Description { get; } + + void Undo(); + + void Redo(); + } +} diff --git a/BAKKA-Sharp/Operations/NoteOperation.cs b/BAKKA-Sharp/Operations/NoteOperation.cs new file mode 100644 index 0000000..17511f0 --- /dev/null +++ b/BAKKA-Sharp/Operations/NoteOperation.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp.Operations +{ + internal abstract class NoteOperation : IOperation + { + protected Note Note { get; } + protected Chart Chart { get; } + public abstract string Description { get; } + + public NoteOperation(Chart chart, Note item) + { + Chart = chart; + Note = item; + } + + public abstract void Redo(); + + public abstract void Undo(); + } + + internal class InsertNote : NoteOperation + { + public override string Description => "Insert note"; + + public InsertNote(Chart chart, Note item) : base(chart, item) + { } + + public override void Redo() + { + Chart.Notes.Add(Note); + } + + public override void Undo() + { + Chart.Notes.Remove(Note); + } + } + + internal class RemoveNote : NoteOperation + { + public override string Description => "Remove note"; + + public RemoveNote(Chart chart, Note item) : base(chart, item) + { } + + public override void Redo() + { + Chart.Notes.Remove(Note); + } + + public override void Undo() + { + Chart.Notes.Add(Note); + } + } + + internal class EditNote : IOperation + { + public string Description => "Edit note"; + + protected Note Base { get; } + protected Note OldNote { get; } + protected Note NewNote { get; } + + public EditNote(Note baseNote, Note newNote) + { + Base = baseNote; + OldNote = new Note(baseNote); + NewNote = new Note(newNote); + } + + public void Redo() + { + Base.BeatInfo = new BeatInfo(NewNote.BeatInfo); + Base.Position = NewNote.Position; + Base.Size = NewNote.Size; + } + + public void Undo() + { + Base.BeatInfo = new BeatInfo(OldNote.BeatInfo); + Base.Position = OldNote.Position; + Base.Size = OldNote.Size; + } + } +} diff --git a/BAKKA-Sharp/Operations/OperationManager.cs b/BAKKA-Sharp/Operations/OperationManager.cs new file mode 100644 index 0000000..317eaeb --- /dev/null +++ b/BAKKA-Sharp/Operations/OperationManager.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp.Operations +{ + internal class OperationManager + { + public event EventHandler? OperationHistoryChanged; + public event EventHandler? ChangesCommitted; + + protected Stack UndoStack { get; } = new Stack(); + protected Stack RedoStack { get; } = new Stack(); + + private IOperation? LastCommittedOperation { get; set; } = null; + + public IEnumerable UndoOperationsDescription + { + get { return UndoStack.Select(p => p.Description); } + } + + public IEnumerable RedoOperationsDescription + { + get { return RedoStack.Select(p => p.Description); } + } + + public bool CanUndo { get { return UndoStack.Count > 0; } } + + public bool CanRedo { get { return RedoStack.Count > 0; } } + + public void Push(IOperation op) + { + UndoStack.Push(op); + RedoStack.Clear(); + OperationHistoryChanged?.Invoke(this, EventArgs.Empty); + } + + public void InvokeAndPush(IOperation op) + { + op.Redo(); + Push(op); + } + + public void Undo() + { + IOperation op = UndoStack.Pop(); + op.Undo(); + RedoStack.Push(op); + OperationHistoryChanged?.Invoke(this, EventArgs.Empty); + } + + public void Redo() + { + IOperation op = RedoStack.Pop(); + op.Redo(); + UndoStack.Push(op); + OperationHistoryChanged?.Invoke(this, EventArgs.Empty); + } + + public void Clear() + { + UndoStack.Clear(); + RedoStack.Clear(); + LastCommittedOperation = null; + OperationHistoryChanged?.Invoke(this, EventArgs.Empty); + } + } +} diff --git a/BAKKA-Sharp/Program.cs b/BAKKA-Sharp/Program.cs new file mode 100644 index 0000000..eb5fda0 --- /dev/null +++ b/BAKKA-Sharp/Program.cs @@ -0,0 +1,17 @@ +namespace BAKKA_Sharp +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/Properties/Resources.Designer.cs b/BAKKA-Sharp/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b07bf61 --- /dev/null +++ b/BAKKA-Sharp/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace BAKKA_Sharp.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BAKKA_Sharp.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/BAKKA-Sharp/Properties/Resources.resx b/BAKKA-Sharp/Properties/Resources.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/BAKKA-Sharp/Properties/Resources.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BAKKA-Sharp/Properties/launchSettings.json b/BAKKA-Sharp/Properties/launchSettings.json new file mode 100644 index 0000000..3e86481 --- /dev/null +++ b/BAKKA-Sharp/Properties/launchSettings.json @@ -0,0 +1,7 @@ +{ + "profiles": { + "BAKKA-Sharp": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/UserSettings.cs b/BAKKA-Sharp/UserSettings.cs new file mode 100644 index 0000000..3ef2225 --- /dev/null +++ b/BAKKA-Sharp/UserSettings.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal class UserSettings + { + public ViewSettings ViewSettings { get; set; } = new(); + public SaveSettings SaveSettings { get; set; } = new(); + } + + internal class ViewSettings + { + public bool ShowCursor { get; set; } = true; + public bool ShowCursorDuringPlayback { get; set; } = false; + public bool HighlightViewedNote { get; set; } = true; + } + + internal class SaveSettings + { + /// + /// How frequently autosave occurs (in minutes) + /// + public int AutoSaveInterval { get; set; } = 1; + } +} diff --git a/BAKKA-Sharp/Utils.cs b/BAKKA-Sharp/Utils.cs new file mode 100644 index 0000000..9106567 --- /dev/null +++ b/BAKKA-Sharp/Utils.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BAKKA_Sharp +{ + internal static class Utils + { + internal static string? GetTag(string input, string tag) + { + if(input.Contains(tag)) + { + return input.Substring(input.IndexOf(tag) + tag.Length); + } + + return null; + } + + internal static double DegToRad(double deg) + { + return deg * Math.PI / 180.0f; + } + + internal static Color NoteTypeToColor(NoteType type) + { + switch (type) + { + case NoteType.TouchNoBonus: + case NoteType.TouchBonus: + case NoteType.TouchBonusFlair: + return Color.Fuchsia; + case NoteType.SnapRedNoBonus: + case NoteType.SnapRedBonusFlair: + return Color.Red; + case NoteType.SnapBlueNoBonus: + case NoteType.SnapBlueBonusFlair: + return Color.Aqua; + case NoteType.SlideOrangeNoBonus: + case NoteType.SlideOrangeBonus: + case NoteType.SlideOrangeBonusFlair: + return Color.FromArgb(255, 128, 0); + case NoteType.SlideGreenNoBonus: + case NoteType.SlideGreenBonus: + case NoteType.SlideGreenBonusFlair: + return Color.LimeGreen; + case NoteType.HoldStartNoBonus: + case NoteType.HoldJoint: + case NoteType.HoldEnd: + case NoteType.HoldStartBonusFlair: + return Color.Yellow; + case NoteType.Chain: + case NoteType.ChainBonusFlair: + return Color.FromArgb(204, 190, 45); + default: + return Color.Transparent; + } + } + + internal static void InvokeIfRequired(this Control control, MethodInvoker action) + { + if (control.InvokeRequired) + { + control.Invoke(action); + } + else + { + action(); + } + } + + internal static Rectangle ToInt(this RectangleF rect) + { + return new Rectangle((int)rect.X, (int)rect.Y, (int)rect.Width, (int)rect.Height); + } + + internal static int FindGCD(int a, int b) + { + if (b == 0) + return a; + return FindGCD(b, a & b); + } + + internal static string ToLabel(this NoteType type) + { + switch (type) + { + case NoteType.TouchNoBonus: + return "Touch"; + case NoteType.TouchBonus: + return "Touch [Bonus]"; + case NoteType.SnapRedNoBonus: + return "Snap (R)"; + case NoteType.SnapBlueNoBonus: + return "Snap (B)"; + case NoteType.SlideOrangeNoBonus: + return "Slide (O)"; + case NoteType.SlideOrangeBonus: + return "Slide (O) [Bonus]"; + case NoteType.SlideGreenNoBonus: + return "Slide (G)"; + case NoteType.SlideGreenBonus: + return "Slide (G) [Bonus]"; + case NoteType.HoldStartNoBonus: + return "Hold Start"; + case NoteType.HoldJoint: + return "Hold Joint"; + case NoteType.HoldEnd: + return "Hold End"; + case NoteType.MaskAdd: + return "Mask Add"; + case NoteType.MaskRemove: + return "Mask Remove"; + case NoteType.EndOfChart: + return "End of Chart"; + case NoteType.Chain: + return "Chain"; + case NoteType.TouchBonusFlair: + return "Touch [R Note]"; + case NoteType.SnapRedBonusFlair: + return "Snap (R) [R Note]"; + case NoteType.SnapBlueBonusFlair: + return "Snap (B) [R Note]"; + case NoteType.SlideOrangeBonusFlair: + return "Slide (O) [R Note]"; + case NoteType.SlideGreenBonusFlair: + return "Slide (G) [R Note]"; + case NoteType.HoldStartBonusFlair: + return "Hold Start [R Note]"; + case NoteType.ChainBonusFlair: + return "Chain [R Note]"; + default: + return "Undefined Note Type"; + } + } + + internal static string ToLabel(this GimmickType type) + { + switch (type) + { + case GimmickType.BpmChange: + return "BPM Change"; + case GimmickType.TimeSignatureChange: + return "Time Signature Change"; + case GimmickType.HiSpeedChange: + return "Hi-Speed Change"; + case GimmickType.ReverseStart: + return "Reverse Start"; + case GimmickType.ReverseMiddle: + return "Reverse Middle"; + case GimmickType.ReverseEnd: + return "Reverse Stop"; + case GimmickType.StopStart: + return "Stop Start"; + case GimmickType.StopEnd: + return "Stop End"; + default: + return "Undefined Gimmick"; + } + } + + internal static bool HasDecimal(double num) + { + return Math.Ceiling(num) == Math.Floor(num); + } + + internal static Tuple GetQuantization(int val, int min) + { + while (!HasDecimal((double)(val * min) / 1920.0)) + { + min *= 2; + } + return new Tuple((int)(val * min / 1920.0), min); + } + + internal static float GetDist(Point a, Point b) + { + return (float)Math.Sqrt(Math.Pow(a.X - b.X, 2) + Math.Pow(a.Y - b.Y, 2)); + } + } +} diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.deps.json b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.deps.json new file mode 100644 index 0000000..0a0ce84 --- /dev/null +++ b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.deps.json @@ -0,0 +1,55 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "BAKKA-Sharp/1.0.0-rc8": { + "dependencies": { + "Tomlyn": "0.15.0", + "irrKlang.NET4": "1.0.6617.18847" + }, + "runtime": { + "BAKKA-Sharp.dll": {} + } + }, + "Tomlyn/0.15.0": { + "runtime": { + "lib/net6.0/Tomlyn.dll": { + "assemblyVersion": "0.15.0.0", + "fileVersion": "0.15.0.0" + } + } + }, + "irrKlang.NET4/1.0.6617.18847": { + "runtime": { + "irrKlang.NET4.dll": { + "assemblyVersion": "1.0.6617.18847", + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "BAKKA-Sharp/1.0.0-rc8": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Tomlyn/0.15.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WyEYqnQ7iN2m6N9cZjhAFqSa6Mz+M04AgUfDxXabTh+dToDPNKqh2r8V7oZLoRAIk3f0YEia08R9eYcrW1Txxg==", + "path": "tomlyn/0.15.0", + "hashPath": "tomlyn.0.15.0.nupkg.sha512" + }, + "irrKlang.NET4/1.0.6617.18847": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll new file mode 100644 index 0000000..1452bb5 Binary files /dev/null and b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll.config b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll.config new file mode 100644 index 0000000..3680e72 --- /dev/null +++ b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.dll.config @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.exe b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.exe new file mode 100644 index 0000000..2bea414 Binary files /dev/null and b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.exe differ diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.pdb b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.pdb new file mode 100644 index 0000000..a3fa720 Binary files /dev/null and b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.pdb differ diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.runtimeconfig.json b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.runtimeconfig.json new file mode 100644 index 0000000..b6062ae --- /dev/null +++ b/BAKKA-Sharp/bin/Debug/net6.0-windows/BAKKA-Sharp.runtimeconfig.json @@ -0,0 +1,15 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ] + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/Tomlyn.dll b/BAKKA-Sharp/bin/Debug/net6.0-windows/Tomlyn.dll new file mode 100644 index 0000000..57c670e Binary files /dev/null and b/BAKKA-Sharp/bin/Debug/net6.0-windows/Tomlyn.dll differ diff --git a/BAKKA-Sharp/bin/Debug/net6.0-windows/irrKlang.NET4.dll b/BAKKA-Sharp/bin/Debug/net6.0-windows/irrKlang.NET4.dll new file mode 100644 index 0000000..ef53ee5 Binary files /dev/null and b/BAKKA-Sharp/bin/Debug/net6.0-windows/irrKlang.NET4.dll differ diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.deps.json b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.deps.json new file mode 100644 index 0000000..0a0ce84 --- /dev/null +++ b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.deps.json @@ -0,0 +1,55 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "BAKKA-Sharp/1.0.0-rc8": { + "dependencies": { + "Tomlyn": "0.15.0", + "irrKlang.NET4": "1.0.6617.18847" + }, + "runtime": { + "BAKKA-Sharp.dll": {} + } + }, + "Tomlyn/0.15.0": { + "runtime": { + "lib/net6.0/Tomlyn.dll": { + "assemblyVersion": "0.15.0.0", + "fileVersion": "0.15.0.0" + } + } + }, + "irrKlang.NET4/1.0.6617.18847": { + "runtime": { + "irrKlang.NET4.dll": { + "assemblyVersion": "1.0.6617.18847", + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "BAKKA-Sharp/1.0.0-rc8": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Tomlyn/0.15.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WyEYqnQ7iN2m6N9cZjhAFqSa6Mz+M04AgUfDxXabTh+dToDPNKqh2r8V7oZLoRAIk3f0YEia08R9eYcrW1Txxg==", + "path": "tomlyn/0.15.0", + "hashPath": "tomlyn.0.15.0.nupkg.sha512" + }, + "irrKlang.NET4/1.0.6617.18847": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll new file mode 100644 index 0000000..d3eec8b Binary files /dev/null and b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll.config b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll.config new file mode 100644 index 0000000..3680e72 --- /dev/null +++ b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.dll.config @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.exe b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.exe new file mode 100644 index 0000000..2bea414 Binary files /dev/null and b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.exe differ diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.pdb b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.pdb new file mode 100644 index 0000000..171fc6e Binary files /dev/null and b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.pdb differ diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.runtimeconfig.json b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.runtimeconfig.json new file mode 100644 index 0000000..383c312 --- /dev/null +++ b/BAKKA-Sharp/bin/Release/net6.0-windows/BAKKA-Sharp.runtimeconfig.json @@ -0,0 +1,18 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ], + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/Tomlyn.dll b/BAKKA-Sharp/bin/Release/net6.0-windows/Tomlyn.dll new file mode 100644 index 0000000..57c670e Binary files /dev/null and b/BAKKA-Sharp/bin/Release/net6.0-windows/Tomlyn.dll differ diff --git a/BAKKA-Sharp/bin/Release/net6.0-windows/irrKlang.NET4.dll b/BAKKA-Sharp/bin/Release/net6.0-windows/irrKlang.NET4.dll new file mode 100644 index 0000000..ef53ee5 Binary files /dev/null and b/BAKKA-Sharp/bin/Release/net6.0-windows/irrKlang.NET4.dll differ diff --git a/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.dgspec.json b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.dgspec.json new file mode 100644 index 0000000..fb39ac4 --- /dev/null +++ b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.dgspec.json @@ -0,0 +1,75 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj": {} + }, + "projects": { + "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj": { + "version": "1.0.0-rc8", + "restore": { + "projectUniqueName": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj", + "projectName": "BAKKA-Sharp", + "projectPath": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj", + "packagesPath": "C:\\Users\\otaku\\.nuget\\packages\\", + "outputPath": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ], + "configFilePaths": [ + "C:\\Users\\otaku\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net6.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "dependencies": { + "Tomlyn": { + "target": "Package", + "version": "[0.15.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.400\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.props b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.props new file mode 100644 index 0000000..d3ab229 --- /dev/null +++ b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\otaku\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder + PackageReference + 6.3.0 + + + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.targets b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/BAKKA-Sharp/obj/BAKKA-Sharp.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs new file mode 100644 index 0000000..9e430c3 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("VeroxZik")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyCopyrightAttribute("2022")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0-rc8")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0-rc8")] +[assembly: System.Reflection.AssemblyProductAttribute("BAKKA-Sharp")] +[assembly: System.Reflection.AssemblyTitleAttribute("BAKKA-Sharp")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache new file mode 100644 index 0000000..ee7937d --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +3dbe1528cf4029aabee1dcda2fe55e7c5bbfe1ee diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f6a0c6d --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,16 @@ +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = BAKKA_Sharp.Program +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net6.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = BAKKA_Sharp +build_property.ProjectDir = C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs new file mode 100644 index 0000000..fea4009 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs @@ -0,0 +1,10 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.assets.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.assets.cache new file mode 100644 index 0000000..74e5a3e Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.assets.cache differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache new file mode 100644 index 0000000..919ceda Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.BuildWithSkipAnalyzers b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.CopyComplete b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..14389a9 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +5fcd841432db581d6e8bf5bf1d8376cce86318e7 diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..ff11a29 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt @@ -0,0 +1,26 @@ +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.exe +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.dll.config +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.deps.json +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.runtimeconfig.json +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\BAKKA-Sharp.pdb +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\Tomlyn.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Debug\net6.0-windows\irrKlang.NET4.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.csproj.AssemblyReference.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.dll.config +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA_Sharp.GimmickForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA_Sharp.InitChartSettingsForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA_Sharp.MainForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA_Sharp.Properties.Resources.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.csproj.GenerateResource.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.AssemblyInfoInputs.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.AssemblyInfo.cs +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.csproj.CoreCompileInputs.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.csproj.CopyComplete +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\refint\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.pdb +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\BAKKA-Sharp.genruntimeconfig.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Debug\net6.0-windows\ref\BAKKA-Sharp.dll diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache new file mode 100644 index 0000000..ecda1c8 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..0dab5c6 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache @@ -0,0 +1 @@ +015466d50d4df6383792bd4d722ac145ecd651ab diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.deps.json b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.deps.json new file mode 100644 index 0000000..37dbb8f --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.deps.json @@ -0,0 +1,28 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "Tomlyn/0.15.0": { + "runtime": { + "lib/net6.0/Tomlyn.dll": { + "assemblyVersion": "0.15.0.0", + "fileVersion": "0.15.0.0" + } + } + } + } + }, + "libraries": { + "Tomlyn/0.15.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WyEYqnQ7iN2m6N9cZjhAFqSa6Mz+M04AgUfDxXabTh+dToDPNKqh2r8V7oZLoRAIk3f0YEia08R9eYcrW1Txxg==", + "path": "tomlyn/0.15.0", + "hashPath": "tomlyn.0.15.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json new file mode 100644 index 0000000..c2eb1bf --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json @@ -0,0 +1,23 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ], + "additionalProbingPaths": [ + "C:\\Users\\otaku\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\otaku\\.nuget\\packages", + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ], + "configProperties": { + "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll new file mode 100644 index 0000000..1452bb5 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll.config b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll.config new file mode 100644 index 0000000..3680e72 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.dll.config @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache new file mode 100644 index 0000000..ff95179 --- /dev/null +++ b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache @@ -0,0 +1 @@ +d05a886fd8b05ad418b242db5b987ac9d6626cb4 diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.pdb b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.pdb new file mode 100644 index 0000000..a3fa720 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA-Sharp.pdb differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.GimmickForm.resources b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.GimmickForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.GimmickForm.resources differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.MainForm.resources b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.MainForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.MainForm.resources differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/apphost.exe b/BAKKA-Sharp/obj/Debug/net6.0-windows/apphost.exe new file mode 100644 index 0000000..2bea414 Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/apphost.exe differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/ref/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Debug/net6.0-windows/ref/BAKKA-Sharp.dll new file mode 100644 index 0000000..382c6dd Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/ref/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/Debug/net6.0-windows/refint/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Debug/net6.0-windows/refint/BAKKA-Sharp.dll new file mode 100644 index 0000000..382c6dd Binary files /dev/null and b/BAKKA-Sharp/obj/Debug/net6.0-windows/refint/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs new file mode 100644 index 0000000..20caad1 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("VeroxZik")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyCopyrightAttribute("2022")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0-rc8")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0-rc8")] +[assembly: System.Reflection.AssemblyProductAttribute("BAKKA-Sharp")] +[assembly: System.Reflection.AssemblyTitleAttribute("BAKKA-Sharp")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache new file mode 100644 index 0000000..acfbb37 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +12c483775a579c00efb4200a5b21994e4af18272 diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f6a0c6d --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,16 @@ +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = BAKKA_Sharp.Program +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net6.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = BAKKA_Sharp +build_property.ProjectDir = C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs new file mode 100644 index 0000000..fea4009 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.GlobalUsings.g.cs @@ -0,0 +1,10 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.assets.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.assets.cache new file mode 100644 index 0000000..d279501 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.assets.cache differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache new file mode 100644 index 0000000..919ceda Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.AssemblyReference.cache differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.BuildWithSkipAnalyzers b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.CopyComplete b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..3b01cb9 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +f94e78794f9ea9507c3b13dbdbd02c6fe11382b0 diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..833271a --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.FileListAbsolute.txt @@ -0,0 +1,26 @@ +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.exe +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.dll.config +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.deps.json +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.runtimeconfig.json +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\BAKKA-Sharp.pdb +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\Tomlyn.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\bin\Release\net6.0-windows\irrKlang.NET4.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.csproj.AssemblyReference.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.dll.config +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA_Sharp.GimmickForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA_Sharp.InitChartSettingsForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA_Sharp.MainForm.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA_Sharp.Properties.Resources.resources +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.csproj.GenerateResource.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.AssemblyInfoInputs.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.AssemblyInfo.cs +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.csproj.CoreCompileInputs.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.csproj.CopyComplete +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\refint\BAKKA-Sharp.dll +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.pdb +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\BAKKA-Sharp.genruntimeconfig.cache +C:\Users\otaku\source\repos\BAKKA-Sharp\BAKKA-Sharp\obj\Release\net6.0-windows\ref\BAKKA-Sharp.dll diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache new file mode 100644 index 0000000..ecda1c8 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.GenerateResource.cache differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..0dab5c6 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.csproj.SuggestedBindingRedirects.cache @@ -0,0 +1 @@ +015466d50d4df6383792bd4d722ac145ecd651ab diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.deps.json b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.deps.json new file mode 100644 index 0000000..37dbb8f --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.deps.json @@ -0,0 +1,28 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "Tomlyn/0.15.0": { + "runtime": { + "lib/net6.0/Tomlyn.dll": { + "assemblyVersion": "0.15.0.0", + "fileVersion": "0.15.0.0" + } + } + } + } + }, + "libraries": { + "Tomlyn/0.15.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WyEYqnQ7iN2m6N9cZjhAFqSa6Mz+M04AgUfDxXabTh+dToDPNKqh2r8V7oZLoRAIk3f0YEia08R9eYcrW1Txxg==", + "path": "tomlyn/0.15.0", + "hashPath": "tomlyn.0.15.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json new file mode 100644 index 0000000..f8106ad --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.designer.runtimeconfig.json @@ -0,0 +1,24 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ], + "additionalProbingPaths": [ + "C:\\Users\\otaku\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\otaku\\.nuget\\packages", + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ], + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll new file mode 100644 index 0000000..d3eec8b Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll.config b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll.config new file mode 100644 index 0000000..3680e72 --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.dll.config @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache new file mode 100644 index 0000000..fe6919e --- /dev/null +++ b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.genruntimeconfig.cache @@ -0,0 +1 @@ +a8c90ddd8682860b141a2576d19f5258227ed315 diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.pdb b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.pdb new file mode 100644 index 0000000..171fc6e Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA-Sharp.pdb differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.GimmickForm.resources b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.GimmickForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.GimmickForm.resources differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.InitChartSettingsForm.resources differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.MainForm.resources b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.MainForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.MainForm.resources differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/BAKKA_Sharp.Properties.Resources.resources differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/apphost.exe b/BAKKA-Sharp/obj/Release/net6.0-windows/apphost.exe new file mode 100644 index 0000000..2bea414 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/apphost.exe differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/ref/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Release/net6.0-windows/ref/BAKKA-Sharp.dll new file mode 100644 index 0000000..afd0fc2 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/ref/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/Release/net6.0-windows/refint/BAKKA-Sharp.dll b/BAKKA-Sharp/obj/Release/net6.0-windows/refint/BAKKA-Sharp.dll new file mode 100644 index 0000000..afd0fc2 Binary files /dev/null and b/BAKKA-Sharp/obj/Release/net6.0-windows/refint/BAKKA-Sharp.dll differ diff --git a/BAKKA-Sharp/obj/project.assets.json b/BAKKA-Sharp/obj/project.assets.json new file mode 100644 index 0000000..60b9ca2 --- /dev/null +++ b/BAKKA-Sharp/obj/project.assets.json @@ -0,0 +1,115 @@ +{ + "version": 3, + "targets": { + "net6.0-windows7.0": { + "Tomlyn/0.15.0": { + "type": "package", + "compile": { + "lib/net6.0/Tomlyn.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Tomlyn.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Tomlyn/0.15.0": { + "sha512": "WyEYqnQ7iN2m6N9cZjhAFqSa6Mz+M04AgUfDxXabTh+dToDPNKqh2r8V7oZLoRAIk3f0YEia08R9eYcrW1Txxg==", + "type": "package", + "path": "tomlyn/0.15.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0/Tomlyn.dll", + "lib/net6.0/Tomlyn.xml", + "lib/netstandard2.0/Tomlyn.dll", + "lib/netstandard2.0/Tomlyn.xml", + "logo.png", + "readme.md", + "tomlyn.0.15.0.nupkg.sha512", + "tomlyn.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net6.0-windows7.0": [ + "Tomlyn >= 0.15.0" + ] + }, + "packageFolders": { + "C:\\Users\\otaku\\.nuget\\packages\\": {}, + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} + }, + "project": { + "version": "1.0.0-rc8", + "restore": { + "projectUniqueName": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj", + "projectName": "BAKKA-Sharp", + "projectPath": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj", + "packagesPath": "C:\\Users\\otaku\\.nuget\\packages\\", + "outputPath": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ], + "configFilePaths": [ + "C:\\Users\\otaku\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net6.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "dependencies": { + "Tomlyn": { + "target": "Package", + "version": "[0.15.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.400\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/BAKKA-Sharp/obj/project.nuget.cache b/BAKKA-Sharp/obj/project.nuget.cache new file mode 100644 index 0000000..336b6fc --- /dev/null +++ b/BAKKA-Sharp/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "2Q6ues+SPqlOWBceWaU5ZzgESW7U2BDDfbemQakV5ch0DLIs/guBOLsoD0XgkY8MVWXaao67kqvjNpc466SsIA==", + "success": true, + "projectFilePath": "C:\\Users\\otaku\\source\\repos\\BAKKA-Sharp\\BAKKA-Sharp\\BAKKA-Sharp.csproj", + "expectedPackageFiles": [ + "C:\\Users\\otaku\\.nuget\\packages\\tomlyn\\0.15.0\\tomlyn.0.15.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/lib/ikpFlac.dll b/lib/ikpFlac.dll new file mode 100644 index 0000000..2271a3f Binary files /dev/null and b/lib/ikpFlac.dll differ diff --git a/lib/ikpMP3.dll b/lib/ikpMP3.dll new file mode 100644 index 0000000..b913400 Binary files /dev/null and b/lib/ikpMP3.dll differ diff --git a/lib/irrKlang.NET4.dll b/lib/irrKlang.NET4.dll new file mode 100644 index 0000000..ef53ee5 Binary files /dev/null and b/lib/irrKlang.NET4.dll differ