public MovieZone(IMovie movie, int start, int length, string key = "") { Bk2LogEntryGenerator lg = Global.MovieSession.LogGeneratorInstance() as Bk2LogEntryGenerator; lg.SetSource(Global.MovieSession.MovieControllerAdapter); targetController = new Bk2ControllerAdapter(); targetController.Type = Global.Emulator.ControllerDefinition; targetController.LatchFromSource(targetController); // Reference and create all buttons if (key == "") key = lg.GenerateLogKey(); key = key.Replace("LogKey:", "").Replace("#", ""); key = key.Substring(0, key.Length - 1); _inputKey = key; Length = length; _log = new string[length]; // Get a IController that only contains buttons in key. string[] keys = key.Split('|'); ControllerDefinition d = new ControllerDefinition(); for (int i = 0; i < keys.Length; i++) { if (Global.Emulator.ControllerDefinition.BoolButtons.Contains(keys[i])) d.BoolButtons.Add(keys[i]); else d.FloatControls.Add(keys[i]); } controller = new Bk2ControllerAdapter() { Type = d }; Bk2LogEntryGenerator logGenerator = new Bk2LogEntryGenerator(""); logGenerator.SetSource(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.LatchFromSource(movie.GetInputState(i + start)); _log[i] = logGenerator.GenerateLogEntry(); } } }
/// <summary> /// Takes a log entry from a line in an input log, /// If the log key differs from the system's, it will be coverted /// </summary> /// <param name="line">a log entry line of text from the input log</param> /// /// <param name="logKey">a log entry line of text from the input log</param> private string ConvertLogEntryFromFile(string line, string logKey) { var adapter = new Bk2LogEntryGenerator(logKey).MovieControllerAdapter; adapter.Type = Global.MovieSession.MovieControllerAdapter.Type; adapter.SetControllersAsMnemonic(line); var lg = LogGeneratorInstance(); lg.SetSource(adapter); return lg.GenerateLogEntry(); }
protected StringBuilder RawInputLog() { var lg = new Bk2LogEntryGenerator(LogKey); lg.SetSource(Global.MovieOutputHardpoint); var sb = new StringBuilder(); sb.AppendLine(lg.GenerateLogKey()); foreach (var record in _log) { sb.AppendLine(record); } return sb; }
private void ReSetLog() { // Get a IController that only contains buttons in key. string[] keys = _inputKey.Split('|'); ControllerDefinition d = new ControllerDefinition(); for (int i = 0; i < keys.Length; i++) { if (Global.Emulator.ControllerDefinition.BoolButtons.Contains(keys[i])) d.BoolButtons.Add(keys[i]); else d.FloatControls.Add(keys[i]); } Bk2ControllerAdapter newController = new Bk2ControllerAdapter() { Type = d }; Bk2LogEntryGenerator logGenerator = new Bk2LogEntryGenerator(""); logGenerator.SetSource(newController); logGenerator.GenerateLogEntry(); // Reference and create all buttons. // Reset all buttons in targetController (it may still have buttons that aren't being set here set true) Bk2LogEntryGenerator tC = new Bk2LogEntryGenerator(""); tC.SetSource(targetController); targetController.SetControllersAsMnemonic(tC.EmptyEntry); for (int i = 0; i < Length; i++) { controller.SetControllersAsMnemonic(_log[i]); LatchFromSourceButtons(targetController, controller); newController.LatchFromSource(targetController); _log[i] = logGenerator.GenerateLogEntry(); } controller = newController; }
protected void WriteRawInputLog(TextWriter writer) { var lg = new Bk2LogEntryGenerator(LogKey); lg.SetSource(Global.MovieOutputHardpoint); writer.WriteLine(lg.GenerateLogKey()); foreach (var record in _log) { writer.WriteLine(record); } }