Pass test MarkersUnaffectedByMovieExtension
This commit is contained in:
parent
2d0c856341
commit
3871359694
|
@ -258,19 +258,16 @@ namespace BizHawk.Client.Common
|
||||||
private void ExtendMovieForEdit(int numFrames)
|
private void ExtendMovieForEdit(int numFrames)
|
||||||
{
|
{
|
||||||
int oldLength = InputLogLength;
|
int oldLength = InputLogLength;
|
||||||
ChangeLog.AddGeneralUndo(oldLength, oldLength + numFrames - 1);
|
|
||||||
|
|
||||||
Session.MovieController.SetFrom(Session.StickySource);
|
// account for autohold TODO: What about auto-fire?
|
||||||
|
string inputs = Bk2LogEntryGenerator.GenerateLogEntry(Session.StickySource);
|
||||||
// account for autohold. needs autohold pattern to be already recorded in the current frame
|
|
||||||
for (int i = 0; i < numFrames; i++)
|
for (int i = 0; i < numFrames; i++)
|
||||||
{
|
{
|
||||||
Log.Add(Bk2LogEntryGenerator.GenerateLogEntry(Session.MovieController));
|
Log.Add(inputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
Changes = true;
|
Changes = true;
|
||||||
|
ChangeLog.AddExtend(oldLength, numFrames, inputs);
|
||||||
ChangeLog.SetGeneralRedo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleBoolState(int frame, string buttonName)
|
public void ToggleBoolState(int frame, string buttonName)
|
||||||
|
|
|
@ -29,6 +29,7 @@ namespace BizHawk.Client.Common
|
||||||
void AddInsertFrames(int frame, int count, string name = "", bool force = false);
|
void AddInsertFrames(int frame, int count, string name = "", bool force = false);
|
||||||
void AddInsertInput(int frame, List<string> newInputs, string name = "", bool force = false);
|
void AddInsertInput(int frame, List<string> newInputs, string name = "", bool force = false);
|
||||||
void AddRemoveFrames(int removeStart, int removeUpTo, List<string> oldInputs, List<TasMovieMarker> removedMarkers, string name = "", bool force = false);
|
void AddRemoveFrames(int removeStart, int removeUpTo, List<string> oldInputs, List<TasMovieMarker> removedMarkers, string name = "", bool force = false);
|
||||||
|
void AddExtend(int originalLength, int count, string inputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TasMovieChangeLog : IMovieChangeLog
|
public class TasMovieChangeLog : IMovieChangeLog
|
||||||
|
@ -380,6 +381,15 @@ namespace BizHawk.Client.Common
|
||||||
LatestBatch.Add(new MovieActionRemoveFrames(removeStart, removeUpTo, oldInputs, removedMarkers));
|
LatestBatch.Add(new MovieActionRemoveFrames(removeStart, removeUpTo, oldInputs, removedMarkers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddExtend(int originalLength, int count, string inputs)
|
||||||
|
{
|
||||||
|
if (IsRecording)
|
||||||
|
{
|
||||||
|
AddMovieAction("extend movie");
|
||||||
|
LatestBatch.Add(new MovieActionExtend(originalLength, count, inputs));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IMovieAction
|
public interface IMovieAction
|
||||||
|
@ -844,4 +854,47 @@ namespace BizHawk.Client.Common
|
||||||
movie.ChangeLog.IsRecording = wasRecording;
|
movie.ChangeLog.IsRecording = wasRecording;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class MovieActionExtend : IMovieAction
|
||||||
|
{
|
||||||
|
public int FirstFrame { get; }
|
||||||
|
public int LastFrame => FirstFrame + _count - 1;
|
||||||
|
|
||||||
|
private int _count;
|
||||||
|
private string _inputs;
|
||||||
|
|
||||||
|
public MovieActionExtend(int currentEndOfMovie, int count, string inputs)
|
||||||
|
{
|
||||||
|
FirstFrame = currentEndOfMovie;
|
||||||
|
_count = count;
|
||||||
|
_inputs = inputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Undo(ITasMovie movie)
|
||||||
|
{
|
||||||
|
bool wasRecording = movie.ChangeLog.IsRecording;
|
||||||
|
movie.ChangeLog.IsRecording = false;
|
||||||
|
bool wasMarkerBound = movie.BindMarkersToInput;
|
||||||
|
movie.BindMarkersToInput = false;
|
||||||
|
|
||||||
|
movie.RemoveFrames(FirstFrame, LastFrame + 1);
|
||||||
|
|
||||||
|
movie.ChangeLog.IsRecording = wasRecording;
|
||||||
|
movie.BindMarkersToInput = wasMarkerBound;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Redo(ITasMovie movie)
|
||||||
|
{
|
||||||
|
bool wasRecording = movie.ChangeLog.IsRecording;
|
||||||
|
movie.ChangeLog.IsRecording = false;
|
||||||
|
bool wasMarkerBound = movie.BindMarkersToInput;
|
||||||
|
movie.BindMarkersToInput = false;
|
||||||
|
|
||||||
|
movie.InsertInput(FirstFrame, Enumerable.Repeat(_inputs, _count));
|
||||||
|
|
||||||
|
movie.ChangeLog.IsRecording = wasRecording;
|
||||||
|
movie.BindMarkersToInput = wasMarkerBound;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue