simplify some IMovieSession stuff

This commit is contained in:
adelikat 2020-04-14 21:23:47 -05:00
parent 189a2d7cfc
commit f2e52988c1
5 changed files with 25 additions and 18 deletions

View File

@ -28,18 +28,18 @@ namespace BizHawk.Client.Common
public void SetFromMnemonicStr(string inputLogEntry)
{
var lg = Global.MovieSession.GenerateMovieController(Global.Emulator.ControllerDefinition);
var controller = Global.MovieSession.GenerateMovieController();
try
{
lg.SetFromMnemonic(inputLogEntry);
controller.SetFromMnemonic(inputLogEntry);
}
catch (Exception)
{
LogCallback($"invalid mnemonic string: {inputLogEntry}");
return;
}
foreach (var button in lg.Definition.BoolButtons) Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
foreach (var floatButton in lg.Definition.AxisControls) Global.InputManager.ButtonOverrideAdapter.SetAxis(floatButton, lg.AxisValue(floatButton));
foreach (var button in controller.Definition.BoolButtons) Global.InputManager.ButtonOverrideAdapter.SetButton(button, controller.IsPressed(button));
foreach (var floatButton in controller.Definition.AxisControls) Global.InputManager.ButtonOverrideAdapter.SetAxis(floatButton, controller.AxisValue(floatButton));
}
public void Set(Dictionary<string, bool> buttons, int? controller = null)

View File

@ -52,10 +52,10 @@ namespace BizHawk.Client.Common
MovieController = new Bk2Controller(definition);
}
public IMovieController GenerateMovieController(ControllerDefinition definition)
public IMovieController GenerateMovieController()
{
// TODO: expose Movie.LogKey and pass in here
return new Bk2Controller("", definition);
return new Bk2Controller("", MovieController.Definition);
}
// Convenience property that gets the controller state from the movie for the most recent frame

View File

@ -13,9 +13,16 @@ namespace BizHawk.Client.Common
IController PreviousFrame { get; }
IController CurrentInput { get; }
/// <summary>
/// Recreates MovieController with the given controller definition
/// </summary>
void CreateMovieController(ControllerDefinition definition);
IMovieController GenerateMovieController(ControllerDefinition definition);
/// <summary>
/// Creates a <see cref="IMovieController" /> instance based on the
/// current <see cref="MovieController" /> button definition
/// </summary>
IMovieController GenerateMovieController();
bool ReadOnly { get; set; }
bool MovieIsQueued { get; }

View File

@ -779,13 +779,13 @@ namespace BizHawk.Client.EmuHawk
if (index < _bestBotAttempt.Log.Count)
{
var logEntry = _bestBotAttempt.Log[index];
var lg = Global.MovieSession.GenerateMovieController(Emulator.ControllerDefinition);
lg.SetFromMnemonic(logEntry);
var controller = Global.MovieSession.GenerateMovieController();
controller.SetFromMnemonic(logEntry);
foreach (var button in lg.Definition.BoolButtons)
foreach (var button in controller.Definition.BoolButtons)
{
// TODO: make an input adapter specifically for the bot?
Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
Global.InputManager.ButtonOverrideAdapter.SetButton(button, controller.IsPressed(button));
}
}
else

View File

@ -27,20 +27,20 @@ namespace BizHawk.Client.EmuHawk
{
try
{
var lg = Global.MovieSession.GenerateMovieController(Global.Emulator.ControllerDefinition);
lg.SetFromMnemonic(inputLogEntry);
var controller = Global.MovieSession.GenerateMovieController();
controller.SetFromMnemonic(inputLogEntry);
foreach (var button in lg.Definition.BoolButtons)
foreach (var button in controller.Definition.BoolButtons)
{
Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
Global.InputManager.ButtonOverrideAdapter.SetButton(button, controller.IsPressed(button));
}
foreach (var floatButton in lg.Definition.AxisControls)
foreach (var floatButton in controller.Definition.AxisControls)
{
Global.InputManager.ButtonOverrideAdapter.SetAxis(floatButton, lg.AxisValue(floatButton));
Global.InputManager.ButtonOverrideAdapter.SetAxis(floatButton, controller.AxisValue(floatButton));
}
return lg;
return controller;
}
catch (Exception)
{