1. Upgraded insert and delete functions in tastudio to support multiple selection.
2. Fixed issues with the light blue current frame pointer in tastudio 3. Removed a totally useless index that was being kept seperately in the movie log. 4. Moved the tastudio update after the check to see if the rest of the saved state list is valid. 5. Changed some function/variable names related to the movie log for clarity.
This commit is contained in:
parent
93b266838c
commit
cb4c45eb70
|
@ -249,11 +249,11 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED)
|
if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED)
|
||||||
{
|
{
|
||||||
return Global.Emulator.Frame.ToString() + "/" + Global.MovieSession.Movie.Length().ToString() + " (Finished)";
|
return Global.Emulator.Frame.ToString() + "/" + Global.MovieSession.Movie.LogLength().ToString() + " (Finished)";
|
||||||
}
|
}
|
||||||
else if (Global.MovieSession.Movie.Mode == MOVIEMODE.PLAY)
|
else if (Global.MovieSession.Movie.Mode == MOVIEMODE.PLAY)
|
||||||
{
|
{
|
||||||
return Global.Emulator.Frame.ToString() + "/" + Global.MovieSession.Movie.Length().ToString();
|
return Global.Emulator.Frame.ToString() + "/" + Global.MovieSession.Movie.LogLength().ToString();
|
||||||
}
|
}
|
||||||
else if (Global.MovieSession.Movie.Mode == MOVIEMODE.RECORD)
|
else if (Global.MovieSession.Movie.Mode == MOVIEMODE.RECORD)
|
||||||
return Global.Emulator.Frame.ToString();
|
return Global.Emulator.Frame.ToString();
|
||||||
|
|
|
@ -1445,7 +1445,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
public int movie_length()
|
public int movie_length()
|
||||||
{
|
{
|
||||||
return Global.MovieSession.Movie.Length();
|
return Global.MovieSession.Movie.LogLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string movie_filename()
|
public string movie_filename()
|
||||||
|
|
|
@ -1894,7 +1894,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
if (Global.MovieSession.Movie.Mode == MOVIEMODE.PLAY)
|
if (Global.MovieSession.Movie.Mode == MOVIEMODE.PLAY)
|
||||||
{
|
{
|
||||||
if (Global.MovieSession.Movie.Length() == Global.Emulator.Frame+1 && true == StopOnEnd)
|
if (Global.MovieSession.Movie.LogLength() == Global.Emulator.Frame + 1 && true == StopOnEnd)
|
||||||
{
|
{
|
||||||
if (true == Global.MovieSession.Movie.TastudioOn)
|
if (true == Global.MovieSession.Movie.TastudioOn)
|
||||||
{
|
{
|
||||||
|
@ -1905,7 +1905,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED)
|
if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED)
|
||||||
{
|
{
|
||||||
if (Global.MovieSession.Movie.Length() > Global.Emulator.Frame+1)
|
if (Global.MovieSession.Movie.LogLength() > Global.Emulator.Frame + 1)
|
||||||
{
|
{
|
||||||
Global.MovieSession.Movie.StartPlayback();
|
Global.MovieSession.Movie.StartPlayback();
|
||||||
//Global.MovieSession.MovieControllerAdapter.SetControllersAsMnemonic(Global.MovieSession.Movie.GetInputFrame(Global.Emulator.Frame));
|
//Global.MovieSession.MovieControllerAdapter.SetControllersAsMnemonic(Global.MovieSession.Movie.GetInputFrame(Global.Emulator.Frame));
|
||||||
|
@ -1998,8 +1998,8 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
//The other tool updates are earlier, TAStudio needs to be later so it can display the latest
|
//The other tool updates are earlier, TAStudio needs to be later so it can display the latest
|
||||||
//frame of execution in its list view.
|
//frame of execution in its list view.
|
||||||
TAStudio1.UpdateValues();
|
|
||||||
Global.MovieSession.Movie.CheckValidity();
|
Global.MovieSession.Movie.CheckValidity();
|
||||||
|
TAStudio1.UpdateValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
private unsafe Image MakeScreenshotImage()
|
private unsafe Image MakeScreenshotImage()
|
||||||
|
|
|
@ -88,7 +88,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
Movie m = new Movie(file.FullName, MOVIEMODE.INACTIVE);
|
Movie m = new Movie(file.FullName, MOVIEMODE.INACTIVE);
|
||||||
m.LoadMovie(); //State files will have to load everything unfortunately
|
m.LoadMovie(); //State files will have to load everything unfortunately
|
||||||
if (m.Length() == 0)
|
if (m.LogLength() == 0)
|
||||||
{
|
{
|
||||||
MessageBox.Show("No input log detected in this savestate, aborting", "Can not load file", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
MessageBox.Show("No input log detected in this savestate, aborting", "Can not load file", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
||||||
return;
|
return;
|
||||||
|
@ -119,7 +119,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
Movie m = new Movie(file.CanonicalFullPath, MOVIEMODE.INACTIVE);
|
Movie m = new Movie(file.CanonicalFullPath, MOVIEMODE.INACTIVE);
|
||||||
m.LoadMovie(); //State files will have to load everything unfortunately
|
m.LoadMovie(); //State files will have to load everything unfortunately
|
||||||
if (m.Length() > 0)
|
if (m.LogLength() > 0)
|
||||||
{
|
{
|
||||||
MovieList.Add(m);
|
MovieList.Add(m);
|
||||||
sortReverse = false;
|
sortReverse = false;
|
||||||
|
|
|
@ -163,7 +163,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
for (int i = 0; i < frames; i++)
|
for (int i = 0; i < frames; i++)
|
||||||
{
|
{
|
||||||
if (RewindBuf.Count == 0 || (true == Global.MovieSession.Movie.Loaded && 0 == Global.MovieSession.Movie.Length()))
|
if (RewindBuf.Count == 0 || (true == Global.MovieSession.Movie.Loaded && 0 == Global.MovieSession.Movie.LogLength()))
|
||||||
return;
|
return;
|
||||||
if (LastState.Length < 0x10000)
|
if (LastState.Length < 0x10000)
|
||||||
Rewind64K();
|
Rewind64K();
|
||||||
|
|
|
@ -72,15 +72,23 @@ namespace BizHawk.MultiClient
|
||||||
return Header.GetHeaderLine(MovieHeader.GAMENAME);
|
return Header.GetHeaderLine(MovieHeader.GAMENAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Length()
|
public int LogLength()
|
||||||
{
|
{
|
||||||
if (Loaded)
|
if (Loaded)
|
||||||
return Log.Length();
|
return Log.MovieLength();
|
||||||
else
|
else
|
||||||
return Frames;
|
return Frames;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateFileName(string filename)
|
public int StateLength()
|
||||||
|
{
|
||||||
|
if (Loaded)
|
||||||
|
return Log.StateLength();
|
||||||
|
else
|
||||||
|
return Frames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateFileName(string filename)
|
||||||
{
|
{
|
||||||
this.Filename = filename;
|
this.Filename = filename;
|
||||||
}
|
}
|
||||||
|
@ -123,9 +131,9 @@ namespace BizHawk.MultiClient
|
||||||
Global.MainForm.TAStudio1.UpdateValues();
|
Global.MainForm.TAStudio1.UpdateValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int LastValidState()
|
public int ValidStateCount()
|
||||||
{
|
{
|
||||||
return Log.LastValidState();
|
return Log.ValidStateCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckValidity()
|
public void CheckValidity()
|
||||||
|
@ -146,7 +154,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
ClearSaveRAM();
|
ClearSaveRAM();
|
||||||
Mode = MOVIEMODE.RECORD;
|
Mode = MOVIEMODE.RECORD;
|
||||||
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length() > 0)
|
if (Global.Config.EnableBackupMovies && MakeBackup && Log.MovieLength() > 0)
|
||||||
{
|
{
|
||||||
WriteBackup();
|
WriteBackup();
|
||||||
MakeBackup = false;
|
MakeBackup = false;
|
||||||
|
@ -205,7 +213,7 @@ namespace BizHawk.MultiClient
|
||||||
public string GetInputFrame(int frame)
|
public string GetInputFrame(int frame)
|
||||||
{
|
{
|
||||||
lastLog = frame;
|
lastLog = frame;
|
||||||
if (frame < Log.Length())
|
if (frame < Log.MovieLength())
|
||||||
return Log.GetFrame(frame);
|
return Log.GetFrame(frame);
|
||||||
else
|
else
|
||||||
return "";
|
return "";
|
||||||
|
@ -252,7 +260,7 @@ namespace BizHawk.MultiClient
|
||||||
private void WriteText(string file)
|
private void WriteText(string file)
|
||||||
{
|
{
|
||||||
if (file.Length == 0) return; //Nothing to write
|
if (file.Length == 0) return; //Nothing to write
|
||||||
int length = Log.Length();
|
int length = Log.MovieLength();
|
||||||
|
|
||||||
using (StreamWriter sw = new StreamWriter(file))
|
using (StreamWriter sw = new StreamWriter(file))
|
||||||
{
|
{
|
||||||
|
@ -409,7 +417,7 @@ namespace BizHawk.MultiClient
|
||||||
writer.WriteLine("[Input]");
|
writer.WriteLine("[Input]");
|
||||||
string s = MovieHeader.GUID + " " + Header.GetHeaderLine(MovieHeader.GUID);
|
string s = MovieHeader.GUID + " " + Header.GetHeaderLine(MovieHeader.GUID);
|
||||||
writer.WriteLine(s);
|
writer.WriteLine(s);
|
||||||
for (int x = 0; x < Log.Length(); x++)
|
for (int x = 0; x < Log.MovieLength(); x++)
|
||||||
writer.WriteLine(Log.GetFrame(x));
|
writer.WriteLine(Log.GetFrame(x));
|
||||||
writer.WriteLine("[/Input]");
|
writer.WriteLine("[/Input]");
|
||||||
}
|
}
|
||||||
|
@ -421,7 +429,7 @@ namespace BizHawk.MultiClient
|
||||||
//We are in record mode so replace the movie log with the one from the savestate
|
//We are in record mode so replace the movie log with the one from the savestate
|
||||||
if (!Global.MovieSession.MultiTrack.IsActive)
|
if (!Global.MovieSession.MultiTrack.IsActive)
|
||||||
{
|
{
|
||||||
if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length() > 0)
|
if (Global.Config.EnableBackupMovies && MakeBackup && Log.MovieLength() > 0)
|
||||||
{
|
{
|
||||||
WriteBackup();
|
WriteBackup();
|
||||||
MakeBackup = false;
|
MakeBackup = false;
|
||||||
|
@ -497,9 +505,9 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (stateFrame > 0 && stateFrame < Log.Length())
|
if (stateFrame > 0 && stateFrame < Log.MovieLength())
|
||||||
{
|
{
|
||||||
Log.Truncate(Global.Emulator.Frame);
|
Log.TruncateStates(Global.Emulator.Frame);
|
||||||
}
|
}
|
||||||
IncrementRerecords();
|
IncrementRerecords();
|
||||||
reader.Close();
|
reader.Close();
|
||||||
|
@ -534,7 +542,7 @@ namespace BizHawk.MultiClient
|
||||||
if (preLoad)
|
if (preLoad)
|
||||||
seconds = GetSeconds(Frames);
|
seconds = GetSeconds(Frames);
|
||||||
else
|
else
|
||||||
seconds = GetSeconds(Log.Length());
|
seconds = GetSeconds(Log.MovieLength());
|
||||||
int hours = ((int)seconds) / 3600;
|
int hours = ((int)seconds) / 3600;
|
||||||
int minutes = (((int)seconds) / 60) % 60;
|
int minutes = (((int)seconds) / 60) % 60;
|
||||||
double sec = seconds % 60;
|
double sec = seconds % 60;
|
||||||
|
@ -697,7 +705,7 @@ namespace BizHawk.MultiClient
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stateFrame > l.Length()) //stateFrame is greater than state input log, so movie finished mode
|
if (stateFrame > l.MovieLength()) //stateFrame is greater than state input log, so movie finished mode
|
||||||
{
|
{
|
||||||
if (Mode == MOVIEMODE.PLAY || Mode == MOVIEMODE.FINISHED)
|
if (Mode == MOVIEMODE.PLAY || Mode == MOVIEMODE.FINISHED)
|
||||||
{
|
{
|
||||||
|
@ -710,13 +718,13 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
if (stateFrame == 0)
|
if (stateFrame == 0)
|
||||||
{
|
{
|
||||||
stateFrame = l.Length(); //In case the frame count failed to parse, revert to using the entire state input log
|
stateFrame = l.MovieLength(); //In case the frame count failed to parse, revert to using the entire state input log
|
||||||
}
|
}
|
||||||
if (Log.Length() < stateFrame)
|
if (Log.MovieLength() < stateFrame)
|
||||||
{
|
{
|
||||||
//Future event error
|
//Future event error
|
||||||
MessageBox.Show("The savestate is from frame " + l.Length().ToString() + " which is greater than the current movie length of " +
|
MessageBox.Show("The savestate is from frame " + l.MovieLength().ToString() + " which is greater than the current movie length of " +
|
||||||
Log.Length().ToString() + ".\nCan not load this savestate.", "Future event Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
Log.MovieLength().ToString() + ".\nCan not load this savestate.", "Future event Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@ namespace BizHawk.MultiClient
|
||||||
case '1':
|
case '1':
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
if (m.Length() != 0)
|
if (m.LogLength() != 0)
|
||||||
warningMsg = "hard reset";
|
warningMsg = "hard reset";
|
||||||
break;
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
|
|
|
@ -15,23 +15,26 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
List<string> MovieRecords = new List<string>();
|
List<string> MovieRecords = new List<string>();
|
||||||
|
|
||||||
private List<byte[]> StateList = new List<byte[]>();
|
private List<byte[]> StateRecords = new List<byte[]>();
|
||||||
private int StateLastValidIndex = -1;
|
|
||||||
|
|
||||||
public MovieLog()
|
public MovieLog()
|
||||||
{
|
{
|
||||||
//Should this class initialize with an empty string to MovieRecords so that first frame is index 1?
|
|
||||||
//MovieRecords.Add("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Length()
|
public int MovieLength()
|
||||||
{
|
{
|
||||||
return MovieRecords.Count;
|
return MovieRecords.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int StateLength()
|
||||||
|
{
|
||||||
|
return StateRecords.Count;
|
||||||
|
}
|
||||||
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
MovieRecords.Clear();
|
MovieRecords.Clear();
|
||||||
|
StateRecords.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddFrame(string frame)
|
public void AddFrame(string frame)
|
||||||
|
@ -41,10 +44,9 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
public void AddState(byte[] state)
|
public void AddState(byte[] state)
|
||||||
{
|
{
|
||||||
if (Global.Emulator.Frame >= StateList.Count)
|
if (Global.Emulator.Frame >= StateRecords.Count)
|
||||||
{
|
{
|
||||||
StateList.Add(state);
|
StateRecords.Add(state);
|
||||||
StateLastValidIndex = Global.Emulator.Frame;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,63 +61,64 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
MovieRecords.Insert(frameNum, frame);
|
MovieRecords.Insert(frameNum, frame);
|
||||||
|
|
||||||
if (frameNum <= StateList.Count - 1)
|
if (frameNum <= StateRecords.Count - 1)
|
||||||
{
|
{
|
||||||
StateList.RemoveRange(frameNum, StateList.Count - frameNum);
|
StateRecords.RemoveRange(frameNum, StateRecords.Count - frameNum);
|
||||||
}
|
|
||||||
if (StateLastValidIndex >= frameNum)
|
|
||||||
{
|
|
||||||
StateLastValidIndex = frameNum - 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckValidity()
|
public void CheckValidity()
|
||||||
{
|
{
|
||||||
byte[] state = Global.Emulator.SaveStateBinary();
|
byte[] state = Global.Emulator.SaveStateBinary();
|
||||||
if (Global.Emulator.Frame < StateList.Count && (null == StateList[Global.Emulator.Frame] || !state.SequenceEqual((byte[])StateList[Global.Emulator.Frame])))
|
if (Global.Emulator.Frame < StateRecords.Count && !state.SequenceEqual((byte[])StateRecords[Global.Emulator.Frame]))
|
||||||
{
|
{
|
||||||
StateLastValidIndex = Global.Emulator.Frame;
|
TruncateStates(Global.Emulator.Frame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int CapturedStateCount()
|
public int CapturedStateCount()
|
||||||
{
|
{
|
||||||
return StateList.Count;
|
return StateRecords.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int LastValidState()
|
public int ValidStateCount()
|
||||||
{
|
{
|
||||||
return StateLastValidIndex;
|
return StateRecords.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] GetState(int frame)
|
public byte[] GetState(int frame)
|
||||||
{
|
{
|
||||||
return StateList[frame];
|
return StateRecords[frame];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteFrame(int frame)
|
public void DeleteFrame(int frame)
|
||||||
{
|
{
|
||||||
MovieRecords.RemoveAt(frame);
|
MovieRecords.RemoveAt(frame);
|
||||||
if (frame < StateList.Count)
|
if (frame < StateRecords.Count)
|
||||||
{
|
{
|
||||||
StateList.RemoveAt(frame);
|
StateRecords.RemoveAt(frame);
|
||||||
}
|
|
||||||
if (StateLastValidIndex > frame)
|
|
||||||
{
|
|
||||||
StateLastValidIndex = frame;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ClearStates()
|
public void ClearStates()
|
||||||
{
|
{
|
||||||
StateList.Clear();
|
StateRecords.Clear();
|
||||||
StateLastValidIndex = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Truncate(int frame)
|
public void TruncateFrames(int frame)
|
||||||
{
|
{
|
||||||
if (frame >= 0 && frame < Length())
|
if (frame >= 0 && frame < MovieLength())
|
||||||
{ MovieRecords.RemoveRange(frame, Length() - frame); }
|
{
|
||||||
|
MovieRecords.RemoveRange(frame, MovieLength() - frame);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TruncateStates(int frame)
|
||||||
|
{
|
||||||
|
if (frame >= 0 && frame < StateLength())
|
||||||
|
{
|
||||||
|
StateRecords.RemoveRange(frame, StateLength() - frame);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetFrame(int frameCount) //Frame count is 0 based here, should it be?
|
public string GetFrame(int frameCount) //Frame count is 0 based here, should it be?
|
||||||
|
@ -133,7 +136,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
public void WriteText(StreamWriter sw)
|
public void WriteText(StreamWriter sw)
|
||||||
{
|
{
|
||||||
int length = Length();
|
int length = MovieLength();
|
||||||
for (int x = 0; x < length; x++)
|
for (int x = 0; x < length; x++)
|
||||||
{
|
{
|
||||||
sw.WriteLine(GetFrame(x));
|
sw.WriteLine(GetFrame(x));
|
||||||
|
|
|
@ -64,7 +64,8 @@
|
||||||
this.ReadOnlyCheckBox = new System.Windows.Forms.CheckBox();
|
this.ReadOnlyCheckBox = new System.Windows.Forms.CheckBox();
|
||||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.InsertOneFrame = new System.Windows.Forms.ToolStripMenuItem();
|
this.Insert = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.Delete = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.SelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
this.SelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.ControllerBox = new System.Windows.Forms.GroupBox();
|
this.ControllerBox = new System.Windows.Forms.GroupBox();
|
||||||
this.ControllersContext = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.ControllersContext = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
@ -82,7 +83,6 @@
|
||||||
this.TASView = new BizHawk.VirtualListView();
|
this.TASView = new BizHawk.VirtualListView();
|
||||||
this.Frame = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
this.Frame = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
this.Log = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
this.Log = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
this.DeleteFrames = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuStrip1.SuspendLayout();
|
this.menuStrip1.SuspendLayout();
|
||||||
this.contextMenuStrip1.SuspendLayout();
|
this.contextMenuStrip1.SuspendLayout();
|
||||||
this.ControllersContext.SuspendLayout();
|
this.ControllersContext.SuspendLayout();
|
||||||
|
@ -294,18 +294,25 @@
|
||||||
// contextMenuStrip1
|
// contextMenuStrip1
|
||||||
//
|
//
|
||||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.InsertOneFrame,
|
this.Insert,
|
||||||
this.DeleteFrames,
|
this.Delete,
|
||||||
this.SelectAll});
|
this.SelectAll});
|
||||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
this.contextMenuStrip1.Size = new System.Drawing.Size(157, 70);
|
this.contextMenuStrip1.Size = new System.Drawing.Size(157, 70);
|
||||||
//
|
//
|
||||||
// InsertOneFrame
|
// Insert
|
||||||
//
|
//
|
||||||
this.InsertOneFrame.Name = "InsertOneFrame";
|
this.Insert.Name = "Insert";
|
||||||
this.InsertOneFrame.Size = new System.Drawing.Size(156, 22);
|
this.Insert.Size = new System.Drawing.Size(156, 22);
|
||||||
this.InsertOneFrame.Text = "Insert Frame";
|
this.Insert.Text = "Insert Frame(s)";
|
||||||
this.InsertOneFrame.Click += new System.EventHandler(this.InsertOneFrame_Click);
|
this.Insert.Click += new System.EventHandler(this.Insert_Click);
|
||||||
|
//
|
||||||
|
// Delete
|
||||||
|
//
|
||||||
|
this.Delete.Name = "Delete";
|
||||||
|
this.Delete.Size = new System.Drawing.Size(156, 22);
|
||||||
|
this.Delete.Text = "Delete Frame(s)";
|
||||||
|
this.Delete.Click += new System.EventHandler(this.Delete_Click);
|
||||||
//
|
//
|
||||||
// SelectAll
|
// SelectAll
|
||||||
//
|
//
|
||||||
|
@ -483,13 +490,6 @@
|
||||||
this.Log.Text = "Log";
|
this.Log.Text = "Log";
|
||||||
this.Log.Width = 201;
|
this.Log.Width = 201;
|
||||||
//
|
//
|
||||||
// DeleteFrames
|
|
||||||
//
|
|
||||||
this.DeleteFrames.Name = "DeleteFrames";
|
|
||||||
this.DeleteFrames.Size = new System.Drawing.Size(156, 22);
|
|
||||||
this.DeleteFrames.Text = "Delete Frame(s)";
|
|
||||||
this.DeleteFrames.Click += new System.EventHandler(this.DeleteFrames_Click);
|
|
||||||
//
|
|
||||||
// TAStudio
|
// TAStudio
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -551,7 +551,7 @@
|
||||||
private System.Windows.Forms.ToolStripButton FastFowardToEnd;
|
private System.Windows.Forms.ToolStripButton FastFowardToEnd;
|
||||||
private System.Windows.Forms.ToolStripMenuItem insertFrameToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem insertFrameToolStripMenuItem;
|
||||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem InsertOneFrame;
|
private System.Windows.Forms.ToolStripMenuItem Insert;
|
||||||
private System.Windows.Forms.ToolStripMenuItem SelectAll;
|
private System.Windows.Forms.ToolStripMenuItem SelectAll;
|
||||||
private System.Windows.Forms.GroupBox ControllerBox;
|
private System.Windows.Forms.GroupBox ControllerBox;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||||
|
@ -564,6 +564,6 @@
|
||||||
private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem1;
|
private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem1;
|
||||||
private System.Windows.Forms.ToolStripButton FastForward;
|
private System.Windows.Forms.ToolStripButton FastForward;
|
||||||
private System.Windows.Forms.ToolStripButton TurboFastForward;
|
private System.Windows.Forms.ToolStripButton TurboFastForward;
|
||||||
private System.Windows.Forms.ToolStripMenuItem DeleteFrames;
|
private System.Windows.Forms.ToolStripMenuItem Delete;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -104,9 +104,9 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void TASView_QueryItemBkColor(int index, int column, ref Color color)
|
private void TASView_QueryItemBkColor(int index, int column, ref Color color)
|
||||||
{
|
{
|
||||||
if (index <= Global.MovieSession.Movie.LastValidState())
|
if (index < Global.MovieSession.Movie.ValidStateCount())
|
||||||
color = Color.LightGreen;
|
color = Color.LightGreen;
|
||||||
else if (Global.MovieSession.Movie.GetInputFrame(index)[1] == 'L')
|
else if ("" != Global.MovieSession.Movie.GetInputFrame(index) && Global.MovieSession.Movie.GetInputFrame(index)[1] == 'L')
|
||||||
color = Color.Pink;
|
color = Color.Pink;
|
||||||
if (index == Global.Emulator.Frame)
|
if (index == Global.Emulator.Frame)
|
||||||
{
|
{
|
||||||
|
@ -117,15 +117,25 @@ namespace BizHawk.MultiClient
|
||||||
private void TASView_QueryItemText(int index, int column, out string text)
|
private void TASView_QueryItemText(int index, int column, out string text)
|
||||||
{
|
{
|
||||||
text = "";
|
text = "";
|
||||||
if (column == 0)
|
|
||||||
text = String.Format("{0:#,##0}", index);
|
//If this is just for an actual frame and not just the list view cursor at the end
|
||||||
if (column == 1)
|
if (Global.MovieSession.Movie.LogLength() != index)
|
||||||
text = Global.MovieSession.Movie.GetInputFrame(index);
|
{
|
||||||
|
if (column == 0)
|
||||||
|
text = String.Format("{0:#,##0}", index);
|
||||||
|
if (column == 1)
|
||||||
|
text = Global.MovieSession.Movie.GetInputFrame(index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisplayList()
|
private void DisplayList()
|
||||||
{
|
{
|
||||||
TASView.ItemCount = Global.MovieSession.Movie.Length();
|
TASView.ItemCount = Global.MovieSession.Movie.LogLength();
|
||||||
|
if (Global.MovieSession.Movie.LogLength() == Global.Emulator.Frame && Global.MovieSession.Movie.StateLength() == Global.Emulator.Frame)
|
||||||
|
{
|
||||||
|
//If we're at the end of the movie add one to show the cursor as a blank frame
|
||||||
|
TASView.ItemCount++;
|
||||||
|
}
|
||||||
TASView.ensureVisible(Global.Emulator.Frame-1);
|
TASView.ensureVisible(Global.Emulator.Frame-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,15 +483,23 @@ namespace BizHawk.MultiClient
|
||||||
Global.MovieSession.Movie.RewindToFrame(TASView.selectedItem);
|
Global.MovieSession.Movie.RewindToFrame(TASView.selectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InsertOneFrame_Click(object sender, EventArgs e)
|
private void Insert_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.MovieSession.Movie.InsertFrame(Global.MovieSession.Movie.GetInputFrame(TASView.selectedItem), TASView.selectedItem);
|
ListView.SelectedIndexCollection list = TASView.SelectedIndices;
|
||||||
|
for (int index = 0; index < list.Count; index++)
|
||||||
|
{
|
||||||
|
Global.MovieSession.Movie.InsertFrame(Global.MovieSession.Movie.GetInputFrame(list[index]), (int)list[index]);
|
||||||
|
}
|
||||||
Global.MovieSession.Movie.RewindToFrame(TASView.selectedItem);
|
Global.MovieSession.Movie.RewindToFrame(TASView.selectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteFrames_Click(object sender, EventArgs e)
|
private void Delete_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.MovieSession.Movie.DeleteFrame(TASView.selectedItem);
|
ListView.SelectedIndexCollection list = TASView.SelectedIndices;
|
||||||
|
for (int index = 0; index < list.Count; index++)
|
||||||
|
{
|
||||||
|
Global.MovieSession.Movie.DeleteFrame(TASView.selectedItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue