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> /// </summary>
public void SetControllersAsMnemonic(string mnemonic) public void SetControllersAsMnemonic(string mnemonic)
{ {
/* if (!string.IsNullOrWhiteSpace(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++)
{ {
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 #endregion

View File

@ -17,6 +17,8 @@ namespace BizHawk.Client.Common
get { return new Bk2ControllerAdapter(); } get { return new Bk2ControllerAdapter(); }
} }
#region ILogEntryGenerator Implementation
public void SetSource(IController source) public void SetSource(IController source)
{ {
_source = source; _source = source;
@ -51,6 +53,26 @@ namespace BizHawk.Client.Common
return CreateLogEntry(); 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) private string CreateLogEntry(bool createEmpty = false)
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -68,18 +90,19 @@ namespace BizHawk.Client.Common
} }
} }
sb.Append('|');
if (_source.Type.FloatControls.Any()) if (_source.Type.FloatControls.Any())
{ {
foreach (var floatBtn in _source.Type.FloatControls) foreach (var floatBtn in _source.Type.FloatControls)
{ {
if (createEmpty) if (createEmpty)
{ {
sb.Append(" 000,"); sb.Append("000,");
} }
else else
{ {
var val = (int)_source.GetFloat(floatBtn); 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() private StringBuilder RawInputLog()
{ {
var lg = new Bk2LogEntryGenerator();
lg.SetSource(Global.MovieOutputHardpoint);
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine(lg.GenerateLogKey());
foreach (var record in _log) foreach (var record in _log)
{ {
sb.AppendLine(record); sb.AppendLine(record);

View File

@ -42,15 +42,10 @@ namespace BizHawk.Client.Common
public bool IsCountingRerecords { get; set; } public bool IsCountingRerecords { get; set; }
public ILogEntryGenerator LogGeneratorInstance() public ILogEntryGenerator LogGeneratorInstance()
{
if (VersionInfo.DeveloperBuild)
{ {
return new Bk2LogEntryGenerator(); return new Bk2LogEntryGenerator();
} }
return new BkmLogEntryGenerator();
}
public double FrameCount public double FrameCount
{ {
get get

View File

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