Tastudio - Branches - show timestamp not movie length, and save/load the timestamp to the .tasproj

This commit is contained in:
adelikat 2015-08-04 21:41:31 -04:00
parent 07fddd31d7
commit a686465911
2 changed files with 23 additions and 41 deletions

View File

@ -15,6 +15,7 @@ namespace BizHawk.Client.Common
public BitmapBuffer OSDFrameBuffer { get; set; }
public TasLagLog LagLog { get; set; }
public TasMovieChangeLog ChangeLog { get; set; }
public DateTime TimeStamp { get; set; }
}
public class TasBranchCollection : List<TasBranch>
@ -31,7 +32,11 @@ namespace BizHawk.Client.Common
bs.PutLump(nheader, delegate(TextWriter tw)
{
// if this header needs more stuff in it, handle it sensibly
tw.WriteLine(JsonConvert.SerializeObject(new { Frame = b.Frame }));
tw.WriteLine(JsonConvert.SerializeObject(new
{
Frame = b.Frame,
TimeStamp = b.TimeStamp
}));
});
bs.PutLump(ncore, delegate(Stream s)
{
@ -76,7 +81,19 @@ namespace BizHawk.Client.Common
if (!bl.GetLump(nheader, false, delegate(TextReader tr)
{
b.Frame = (int)((dynamic)JsonConvert.DeserializeObject(tr.ReadLine())).Frame;
var header = (dynamic)JsonConvert.DeserializeObject(tr.ReadLine());
b.Frame = (int)header.Frame;
var timestamp = (dynamic)header.TImeStamp;
if (timestamp != null)
{
b.TimeStamp = (DateTime)timestamp;
}
else
{
b.TimeStamp = DateTime.Now;
}
}))
{
return;

View File

@ -48,7 +48,7 @@ namespace BizHawk.Client.EmuHawk
new InputRoll.RollColumn
{
Name = TimeColumnName,
Text = "Length",
Text = "TimeStamp",
Width = 90
},
});
@ -90,7 +90,7 @@ namespace BizHawk.Client.EmuHawk
text = Branches[index].Frame.ToString();
break;
case TimeColumnName:
text = MovieTime(Branches[index].Frame).ToString(@"hh\:mm\:ss\.fff");
text = Branches[index].TimeStamp.ToString(@"hh\:mm\:ss\.ff");
break;
}
}
@ -177,42 +177,6 @@ namespace BizHawk.Client.EmuHawk
Tastudio.RefreshDialog();
}
// TODO: copy pasted from PlatformFrameRates
private TimeSpan MovieTime(int frameCount)
{
var dblseconds = GetSeconds(frameCount);
var seconds = (int)(dblseconds % 60);
var days = seconds / 86400;
var hours = seconds / 3600;
var minutes = (seconds / 60) % 60;
var milliseconds = (int)((dblseconds - seconds) * 1000);
return new TimeSpan(days, hours, minutes, seconds, milliseconds);
}
private double GetSeconds(int frameCount)
{
double frames = frameCount;
if (frames < 1)
{
return 0;
}
return frames / Fps();
}
private double Fps()
{
TasMovie movie = Tastudio.CurrentTasMovie;
string system = movie.HeaderEntries[HeaderKeys.PLATFORM];
bool pal = movie.HeaderEntries.ContainsKey(HeaderKeys.PAL) &&
movie.HeaderEntries[HeaderKeys.PAL] == "1";
return FrameRates[system, pal];
}
// ***************************
public void UpdateValues()
{
BranchView.RowCount = Branches.Count;
@ -238,7 +202,8 @@ namespace BizHawk.Client.EmuHawk
InputLog = Tastudio.CurrentTasMovie.InputLog.ToList(),
OSDFrameBuffer = GlobalWin.MainForm.CaptureOSD(),
LagLog = Tastudio.CurrentTasMovie.TasLagLog.Clone(),
ChangeLog = new TasMovieChangeLog(Tastudio.CurrentTasMovie)
ChangeLog = new TasMovieChangeLog(Tastudio.CurrentTasMovie),
TimeStamp = DateTime.Now
};
}