Bk2 - basic movie playback now works. You can now record shooting ducks

This commit is contained in:
adelikat 2014-06-17 00:33:33 +00:00
parent e39b2af5e7
commit fcd4a4eb65
5 changed files with 48 additions and 21 deletions

View File

@ -77,17 +77,23 @@ namespace BizHawk.Client.Common
/// </summary>
public void SetControllersAsMnemonic(string mnemonic)
{
/*
* This doesn't work because the working dictionary is populated by setting things by name, it will always be 0 in this context
* Need some sort of reverse lookup
var segments = mnemonic.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
var keys = MyBoolButtons.Keys.Select(x => x).ToList();
for (int i = 0; i < segments.Length; i++)
if (!string.IsNullOrWhiteSpace(mnemonic))
{
MyBoolButtons[keys[i]] = !(segments[0][i] == '.');
var trimmed = mnemonic.Replace("|", "");
for (int i = 0; i < Type.BoolButtons.Count; i++)
{
MyBoolButtons[Type.BoolButtons[i]] = trimmed[i] == '.' ? false : true;
}
var floats = trimmed.Remove(0, Type.BoolButtons.Count);
for (int i = 0; i < Type.FloatControls.Count; i++)
{
var temp = floats.Substring(i * 4, 3);
var val = int.Parse(temp);
MyFloatControls[Type.FloatControls[i]] = val;
}
}
*/
}
#endregion

View File

@ -17,6 +17,8 @@ namespace BizHawk.Client.Common
get { return new Bk2ControllerAdapter(); }
}
#region ILogEntryGenerator Implementation
public void SetSource(IController source)
{
_source = source;
@ -51,6 +53,26 @@ namespace BizHawk.Client.Common
return CreateLogEntry();
}
#endregion
public string GenerateLogKey()
{
StringBuilder sb = new StringBuilder();
sb.Append("LogKey:");
foreach (var button in _source.Type.BoolButtons)
{
sb.Append(button).Append('|');
}
foreach (var button in _source.Type.FloatControls)
{
sb.Append(button).Append('|');
}
return sb.ToString();
}
private string CreateLogEntry(bool createEmpty = false)
{
var sb = new StringBuilder();
@ -68,18 +90,19 @@ namespace BizHawk.Client.Common
}
}
sb.Append('|');
if (_source.Type.FloatControls.Any())
{
foreach (var floatBtn in _source.Type.FloatControls)
{
if (createEmpty)
{
sb.Append(" 000,");
sb.Append("000,");
}
else
{
var val = (int)_source.GetFloat(floatBtn);
sb.Append(' ').Append(val).Append(',');
sb.Append(val.ToString().PadLeft(3, '0')).Append(',');
}
}

View File

@ -286,7 +286,11 @@ namespace BizHawk.Client.Common
private StringBuilder RawInputLog()
{
var lg = new Bk2LogEntryGenerator();
lg.SetSource(Global.MovieOutputHardpoint);
var sb = new StringBuilder();
sb.AppendLine(lg.GenerateLogKey());
foreach (var record in _log)
{
sb.AppendLine(record);

View File

@ -43,12 +43,7 @@ namespace BizHawk.Client.Common
public ILogEntryGenerator LogGeneratorInstance()
{
if (VersionInfo.DeveloperBuild)
{
return new Bk2LogEntryGenerator();
}
return new BkmLogEntryGenerator();
return new Bk2LogEntryGenerator();
}
public double FrameCount

View File

@ -250,7 +250,6 @@ namespace BizHawk.Client.EmuHawk
public string InputStrOrAll()
{
//var m = new BkmControllerAdapter { Type = Global.MovieSession.MovieControllerAdapter.Type };
var m = Global.MovieSession.Movie.LogGeneratorInstance().MovieControllerAdapter;
m.Type = Global.MovieSession.MovieControllerAdapter.Type;
@ -266,9 +265,9 @@ namespace BizHawk.Client.EmuHawk
SourceOr = m
};
var mg = Global.MovieSession.Movie.LogGeneratorInstance();
mg.SetSource(orAdaptor);
return mg.GenerateInputDisplay();
var lg = Global.MovieSession.Movie.LogGeneratorInstance();
lg.SetSource(orAdaptor);
return lg.GenerateInputDisplay();
}
public string InputStrSticky()