Files
Goatgarien_BAKKA-Editor/BAKKA-Sharp/Operations/NoteOperation.cs
T
2022-09-09 02:30:22 -07:00

92 lines
2.2 KiB
C#

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;
}
}
}