MovieZone: refactor constructors, reducing duplicate code (fixes regression from commit aa80c3a
)
This commit is contained in:
parent
2834f8aa39
commit
dda09dd713
|
@ -51,7 +51,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
ReplaceBox.Enabled = OverlayBox.Enabled = PlaceNum.Enabled = CurrentMovie is ITasMovie;
|
ReplaceBox.Enabled = OverlayBox.Enabled = PlaceNum.Enabled = CurrentMovie is ITasMovie;
|
||||||
|
|
||||||
var main = new MovieZone(CurrentMovie, Emulator, Tools, MovieSession, 0, CurrentMovie.InputLogLength)
|
var main = new MovieZone(Emulator, Tools, MovieSession, 0, CurrentMovie.InputLogLength)
|
||||||
{
|
{
|
||||||
Name = "Entire Movie"
|
Name = "Entire Movie"
|
||||||
};
|
};
|
||||||
|
@ -125,7 +125,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var newZone = new MovieZone(CurrentMovie, Emulator, Tools, MovieSession, (int) StartNum.Value, (int) (EndNum.Value - StartNum.Value + 1))
|
var newZone = new MovieZone(Emulator, Tools, MovieSession, (int) StartNum.Value, (int) (EndNum.Value - StartNum.Value + 1))
|
||||||
{
|
{
|
||||||
Name = $"Zone {_zones.Count}"
|
Name = $"Zone {_zones.Count}"
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,14 +17,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private string _inputKey;
|
private string _inputKey;
|
||||||
private IMovieController _controller;
|
private IMovieController _controller;
|
||||||
|
|
||||||
public MovieZone(IMovie movie, IEmulator emulator, ToolManager tools, IMovieSession movieSession, int start, int length, string key = "")
|
public MovieZone(IEmulator emulator, ToolManager tools, IMovieSession movieSession, int start, int length, string key = "")
|
||||||
|
: this(emulator, tools, movieSession)
|
||||||
{
|
{
|
||||||
_emulator = emulator;
|
var lg = movieSession.Movie.LogGeneratorInstance(movieSession.MovieController);
|
||||||
_tools = tools;
|
|
||||||
_movieSession = movieSession;
|
|
||||||
var lg = movie.LogGeneratorInstance(movieSession.MovieController);
|
|
||||||
_targetController = movieSession.GenerateMovieController();
|
|
||||||
_targetController.SetFrom(_targetController); // Reference and create all buttons
|
|
||||||
|
|
||||||
if (key == "")
|
if (key == "")
|
||||||
{
|
{
|
||||||
|
@ -39,6 +35,42 @@ namespace BizHawk.Client.EmuHawk
|
||||||
_log = new string[length];
|
_log = new string[length];
|
||||||
|
|
||||||
// Get a IController that only contains buttons in key.
|
// Get a IController that only contains buttons in key.
|
||||||
|
InitController(_inputKey);
|
||||||
|
|
||||||
|
var logGenerator = movieSession.Movie.LogGeneratorInstance(_controller);
|
||||||
|
logGenerator.GenerateLogEntry(); // Reference and create all buttons.
|
||||||
|
|
||||||
|
string movieKey = logGenerator.GenerateLogKey().Replace("LogKey:", "").Replace("#", "");
|
||||||
|
movieKey = movieKey.Substring(0, movieKey.Length - 1);
|
||||||
|
if (key == movieKey)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
_log[i] = movieSession.Movie.GetInputLogEntry(i + start);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
_controller.SetFrom(movieSession.Movie.GetInputState(i + start));
|
||||||
|
_log[i] = logGenerator.GenerateLogEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private MovieZone(IEmulator emulator, ToolManager tools, IMovieSession movieSession)
|
||||||
|
{
|
||||||
|
_emulator = emulator;
|
||||||
|
_tools = tools;
|
||||||
|
_movieSession = movieSession;
|
||||||
|
|
||||||
|
_targetController = movieSession.GenerateMovieController();
|
||||||
|
_targetController.SetFrom(_targetController); // Reference and create all buttons
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitController(string key)
|
||||||
|
{
|
||||||
string[] keys = key.Split('|');
|
string[] keys = key.Split('|');
|
||||||
var d = new ControllerDefinition();
|
var d = new ControllerDefinition();
|
||||||
foreach (var k in keys)
|
foreach (var k in keys)
|
||||||
|
@ -49,31 +81,11 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d.Axes.Add(k, _emulator.ControllerDefinition.Axes[k]);
|
d.Axes.Add(k, _emulator.ControllerDefinition.Axes[key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_controller = movieSession.GenerateMovieController(d);
|
_controller = _movieSession.GenerateMovieController(d);
|
||||||
var logGenerator = movieSession.Movie.LogGeneratorInstance(_controller);
|
|
||||||
logGenerator.GenerateLogEntry(); // Reference and create all buttons.
|
|
||||||
|
|
||||||
string movieKey = logGenerator.GenerateLogKey().Replace("LogKey:", "").Replace("#", "");
|
|
||||||
movieKey = movieKey.Substring(0, movieKey.Length - 1);
|
|
||||||
if (key == movieKey)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < length; i++)
|
|
||||||
{
|
|
||||||
_log[i] = movie.GetInputLogEntry(i + start);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < length; i++)
|
|
||||||
{
|
|
||||||
_controller.SetFrom(movie.GetInputState(i + start));
|
|
||||||
_log[i] = logGenerator.GenerateLogEntry();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
@ -212,16 +224,13 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
public MovieZone(string fileName, IEmulator emulator, IMovieSession movieSession, ToolManager tools)
|
public MovieZone(string fileName, IEmulator emulator, IMovieSession movieSession, ToolManager tools)
|
||||||
|
: this(emulator, tools, movieSession)
|
||||||
{
|
{
|
||||||
if (!File.Exists(fileName))
|
if (!File.Exists(fileName))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_emulator = emulator;
|
|
||||||
_tools = tools;
|
|
||||||
_movieSession = movieSession;
|
|
||||||
|
|
||||||
string[] readText = File.ReadAllLines(fileName);
|
string[] readText = File.ReadAllLines(fileName);
|
||||||
|
|
||||||
// If the LogKey contains buttons/controls not accepted by the emulator,
|
// If the LogKey contains buttons/controls not accepted by the emulator,
|
||||||
|
@ -254,24 +263,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
Name = Path.GetFileNameWithoutExtension(fileName);
|
Name = Path.GetFileNameWithoutExtension(fileName);
|
||||||
|
|
||||||
// Adapters
|
// Get a IController that only contains buttons in key.
|
||||||
_targetController = _movieSession.GenerateMovieController();
|
InitController(_inputKey);
|
||||||
_targetController.SetFrom(_targetController); // Reference and create all buttons
|
|
||||||
string[] keys = _inputKey.Split('|');
|
|
||||||
var d = new ControllerDefinition(_emulator.ControllerDefinition);
|
|
||||||
foreach (var k in keys)
|
|
||||||
{
|
|
||||||
if (_emulator.ControllerDefinition.BoolButtons.Contains(k))
|
|
||||||
{
|
|
||||||
d.BoolButtons.Add(k);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
d.Axes.Add(k, _emulator.ControllerDefinition.Axes[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_controller = _movieSession.GenerateMovieController(d);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LatchFromSourceButtons(IMovieController latching, IController source)
|
private void LatchFromSourceButtons(IMovieController latching, IController source)
|
||||||
|
|
|
@ -239,7 +239,6 @@ namespace BizHawk.Client.EmuHawk
|
||||||
if (file != null)
|
if (file != null)
|
||||||
{
|
{
|
||||||
new MovieZone(
|
new MovieZone(
|
||||||
CurrentTasMovie,
|
|
||||||
Emulator,
|
Emulator,
|
||||||
Tools,
|
Tools,
|
||||||
MovieSession,
|
MovieSession,
|
||||||
|
|
Loading…
Reference in New Issue