Bk2 - basic movie playback now works. You can now record shooting ducks
This commit is contained in:
parent
e39b2af5e7
commit
fcd4a4eb65
|
@ -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
|
||||||
|
|
|
@ -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(',');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -43,12 +43,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public ILogEntryGenerator LogGeneratorInstance()
|
public ILogEntryGenerator LogGeneratorInstance()
|
||||||
{
|
{
|
||||||
if (VersionInfo.DeveloperBuild)
|
return new Bk2LogEntryGenerator();
|
||||||
{
|
|
||||||
return new Bk2LogEntryGenerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
return new BkmLogEntryGenerator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double FrameCount
|
public double FrameCount
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue