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>
|
||||
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
|
||||
|
|
|
@ -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(',');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue