-Bugfix: TAStudio couldn't re-save a project.
-Bugfix: tasproj files without StateHistory couldn't load. -Gave a bunch of StateHistory stuff proper names.
This commit is contained in:
parent
f44f32997d
commit
2c876858f2
|
@ -23,7 +23,7 @@ namespace BizHawk.Client.Common
|
|||
|
||||
// TasMovie
|
||||
LagLog,
|
||||
Greenzone,
|
||||
Greenzone, // Greenzone actually means StateHistory. Changing these two names would break previous save files, though.
|
||||
GreenzoneSettings,
|
||||
Markers,
|
||||
ClientSettings,
|
||||
|
|
|
@ -21,7 +21,8 @@ namespace BizHawk.Client.Common
|
|||
EnableZip64 = Zip64Option.Never,
|
||||
CompressionLevel = (Ionic.Zlib.CompressionLevel)level
|
||||
};
|
||||
}
|
||||
z.CompressionMethod = CompressionMethod.Deflate;
|
||||
}
|
||||
|
||||
public void WriteItem(string name, Action<Stream> callback)
|
||||
{
|
||||
|
|
|
@ -54,9 +54,10 @@ namespace BizHawk.Client.Common
|
|||
ReportProgress(PROGRESS_STEP);
|
||||
|
||||
// TasProj extras
|
||||
// Greenzone actually means StateHistory. Changing these two names would break previous save files, though.
|
||||
bs.PutLump(BinaryStateLump.GreenzoneSettings, tw => tw.WriteLine(StateManager.Settings.ToString()));
|
||||
ReportProgress(PROGRESS_STEP);
|
||||
if (StateManager.Settings.SaveGreenzone)
|
||||
if (StateManager.Settings.SaveStateHistory)
|
||||
{
|
||||
bs.PutLump(BinaryStateLump.Greenzone, (BinaryWriter bw) => StateManager.Save(bw));
|
||||
}
|
||||
|
@ -197,12 +198,13 @@ namespace BizHawk.Client.Common
|
|||
});
|
||||
}
|
||||
|
||||
// Greenzone actually means StateHistory. Changing these two names would break previous save files, though.
|
||||
bl.GetLump(BinaryStateLump.GreenzoneSettings, false, delegate(TextReader tr)
|
||||
{
|
||||
StateManager.Settings.PopulateFromString(tr.ReadToEnd());
|
||||
});
|
||||
|
||||
if (StateManager.Settings.SaveGreenzone)
|
||||
if (StateManager.Settings.SaveStateHistory)
|
||||
{
|
||||
bl.GetLump(BinaryStateLump.Greenzone, false, delegate(BinaryReader br, long length)
|
||||
{
|
||||
|
|
|
@ -23,6 +23,10 @@ namespace BizHawk.Client.Common
|
|||
private readonly List<string> VerificationLog = new List<string>(); // For movies that do not begin with power-on, this is the input required to get into the initial state
|
||||
|
||||
private BackgroundWorker _progressReportWorker = null;
|
||||
public void NewBGWorker(BackgroundWorker newWorker)
|
||||
{
|
||||
_progressReportWorker = newWorker;
|
||||
}
|
||||
|
||||
public TasMovie(string path, bool startsFromSavestate = false, BackgroundWorker progressReportWorker = null)
|
||||
: base(path)
|
||||
|
@ -248,7 +252,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
if (StateManager.Any())
|
||||
{
|
||||
StateManager.ClearGreenzone();
|
||||
StateManager.ClearStateHistory();
|
||||
Changes = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -207,7 +207,7 @@ namespace BizHawk.Client.Common
|
|||
Used = 0;
|
||||
}
|
||||
|
||||
public void ClearGreenzone()
|
||||
public void ClearStateHistory()
|
||||
{
|
||||
if (States.Any())
|
||||
{
|
||||
|
|
|
@ -10,13 +10,13 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public TasStateManagerSettings()
|
||||
{
|
||||
SaveGreenzone = true;
|
||||
SaveStateHistory = true;
|
||||
Capacitymb = 512;
|
||||
}
|
||||
|
||||
public TasStateManagerSettings(TasStateManagerSettings settings)
|
||||
{
|
||||
SaveGreenzone = settings.SaveGreenzone;
|
||||
SaveStateHistory = settings.SaveStateHistory;
|
||||
Capacitymb = settings.Capacitymb;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ namespace BizHawk.Client.Common
|
|||
/// </summary>
|
||||
[DisplayName("Save History")]
|
||||
[Description("Whether or not to use savestate history")]
|
||||
public bool SaveGreenzone { get; set; }
|
||||
public bool SaveStateHistory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The total amount of memory to devote to greenzone in megabytes
|
||||
|
@ -45,7 +45,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.AppendLine(SaveGreenzone.ToString());
|
||||
sb.AppendLine(SaveStateHistory.ToString());
|
||||
sb.AppendLine(Capacitymb.ToString());
|
||||
|
||||
return sb.ToString();
|
||||
|
@ -56,7 +56,7 @@ namespace BizHawk.Client.Common
|
|||
if (!string.IsNullOrWhiteSpace(settings))
|
||||
{
|
||||
var lines = settings.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
SaveGreenzone = bool.Parse(lines[0]);
|
||||
SaveStateHistory = bool.Parse(lines[0]);
|
||||
Capacitymb = int.Parse(lines[1]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ using System.Windows.Forms;
|
|||
|
||||
namespace BizHawk.Client.EmuHawk
|
||||
{
|
||||
public partial class GreenzoneSettingsForm
|
||||
public partial class StateHistorySettingsForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
|
@ -35,10 +35,10 @@ namespace BizHawk.Client.EmuHawk
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GreenzoneSettingsForm));
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StateHistorySettingsForm));
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.OkBtn = new System.Windows.Forms.Button();
|
||||
this.SaveGreenzoneCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.SaveStateHistoryCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.CapacityNumeric = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
|
@ -74,13 +74,13 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
// SaveGreenzoneCheckbox
|
||||
//
|
||||
this.SaveGreenzoneCheckbox.AutoSize = true;
|
||||
this.SaveGreenzoneCheckbox.Location = new System.Drawing.Point(13, 20);
|
||||
this.SaveGreenzoneCheckbox.Name = "SaveGreenzoneCheckbox";
|
||||
this.SaveGreenzoneCheckbox.Size = new System.Drawing.Size(234, 17);
|
||||
this.SaveGreenzoneCheckbox.TabIndex = 2;
|
||||
this.SaveGreenzoneCheckbox.Text = "Save savestate history information in proj file";
|
||||
this.SaveGreenzoneCheckbox.UseVisualStyleBackColor = true;
|
||||
this.SaveStateHistoryCheckbox.AutoSize = true;
|
||||
this.SaveStateHistoryCheckbox.Location = new System.Drawing.Point(13, 20);
|
||||
this.SaveStateHistoryCheckbox.Name = "SaveGreenzoneCheckbox";
|
||||
this.SaveStateHistoryCheckbox.Size = new System.Drawing.Size(234, 17);
|
||||
this.SaveStateHistoryCheckbox.TabIndex = 2;
|
||||
this.SaveStateHistoryCheckbox.Text = "Save savestate history information in proj file";
|
||||
this.SaveStateHistoryCheckbox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// CapacityNumeric
|
||||
//
|
||||
|
@ -173,7 +173,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.CapacityNumeric);
|
||||
this.Controls.Add(this.SaveGreenzoneCheckbox);
|
||||
this.Controls.Add(this.SaveStateHistoryCheckbox);
|
||||
this.Controls.Add(this.OkBtn);
|
||||
this.Controls.Add(this.CancelBtn);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
|
@ -181,7 +181,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.Name = "GreenzoneSettingsForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "Savestate History Settings";
|
||||
this.Load += new System.EventHandler(this.GreenzoneSettings_Load);
|
||||
this.Load += new System.EventHandler(this.StateHistorySettings_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.CapacityNumeric)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
@ -190,7 +190,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private Button CancelBtn;
|
||||
private Button OkBtn;
|
||||
private CheckBox SaveGreenzoneCheckbox;
|
||||
private CheckBox SaveStateHistoryCheckbox;
|
||||
private NumericUpDown CapacityNumeric;
|
||||
private Label label1;
|
||||
private Label label2;
|
||||
|
|
|
@ -13,23 +13,23 @@ using BizHawk.Client.Common;
|
|||
|
||||
namespace BizHawk.Client.EmuHawk
|
||||
{
|
||||
public partial class GreenzoneSettingsForm : Form
|
||||
public partial class StateHistorySettingsForm : Form
|
||||
{
|
||||
public IStatable Statable { get; set; }
|
||||
|
||||
private readonly TasStateManagerSettings Settings;
|
||||
private decimal _stateSizeMb;
|
||||
public GreenzoneSettingsForm(TasStateManagerSettings settings)
|
||||
public StateHistorySettingsForm(TasStateManagerSettings settings)
|
||||
{
|
||||
Settings = settings;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void GreenzoneSettings_Load(object sender, EventArgs e)
|
||||
private void StateHistorySettings_Load(object sender, EventArgs e)
|
||||
{
|
||||
_stateSizeMb = Statable.SaveStateBinary().Length / (decimal)1024 / (decimal)1024;
|
||||
|
||||
SaveGreenzoneCheckbox.Checked = Settings.SaveGreenzone;
|
||||
SaveStateHistoryCheckbox.Checked = Settings.SaveStateHistory;
|
||||
CapacityNumeric.Value = Settings.Capacitymb == 0 ? 1 : Settings.Capacitymb < CapacityNumeric.Maximum ?
|
||||
Settings.Capacitymb :
|
||||
CapacityNumeric.Maximum;
|
||||
|
@ -45,7 +45,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void OkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
Settings.SaveGreenzone = SaveGreenzoneCheckbox.Checked;
|
||||
Settings.SaveStateHistory = SaveStateHistoryCheckbox.Checked;
|
||||
Settings.Capacitymb = (int)CapacityNumeric.Value;
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
|
|
|
@ -88,7 +88,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.AutopauseAtEndOfMovieMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.MetaSubMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.HeaderMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.GreenzoneSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.StateHistorySettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.CommentsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.SubtitlesMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator21 = new System.Windows.Forms.ToolStripSeparator();
|
||||
|
@ -602,7 +602,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.MetaSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.HeaderMenuItem,
|
||||
this.GreenzoneSettingsMenuItem,
|
||||
this.StateHistorySettingsMenuItem,
|
||||
this.CommentsMenuItem,
|
||||
this.SubtitlesMenuItem,
|
||||
this.toolStripSeparator21,
|
||||
|
@ -618,12 +618,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.HeaderMenuItem.Text = "&Header...";
|
||||
this.HeaderMenuItem.Click += new System.EventHandler(this.HeaderMenuItem_Click);
|
||||
//
|
||||
// GreenzoneSettingsMenuItem
|
||||
// StateHistorySettingsMenuItem
|
||||
//
|
||||
this.GreenzoneSettingsMenuItem.Name = "GreenzoneSettingsMenuItem";
|
||||
this.GreenzoneSettingsMenuItem.Size = new System.Drawing.Size(236, 22);
|
||||
this.GreenzoneSettingsMenuItem.Text = "&Savestate History Settings...";
|
||||
this.GreenzoneSettingsMenuItem.Click += new System.EventHandler(this.GreenzoneSettingsMenuItem_Click);
|
||||
this.StateHistorySettingsMenuItem.Name = "StateHistorySettingsMenuItem";
|
||||
this.StateHistorySettingsMenuItem.Size = new System.Drawing.Size(236, 22);
|
||||
this.StateHistorySettingsMenuItem.Text = "&Savestate History Settings...";
|
||||
this.StateHistorySettingsMenuItem.Click += new System.EventHandler(this.StateHistorySettingsMenuItem_Click);
|
||||
//
|
||||
// CommentsMenuItem
|
||||
//
|
||||
|
@ -1187,7 +1187,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private System.Windows.Forms.ToolStripMenuItem HeaderMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem CommentsMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem SubtitlesMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem GreenzoneSettingsMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem StateHistorySettingsMenuItem;
|
||||
private MarkerControl MarkerControl;
|
||||
private System.Windows.Forms.ContextMenuStrip RightClickMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem SetMarkersContextMenuItem;
|
||||
|
|
|
@ -611,9 +611,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
UpdateChangesIndicator();
|
||||
}
|
||||
|
||||
private void GreenzoneSettingsMenuItem_Click(object sender, EventArgs e)
|
||||
private void StateHistorySettingsMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
new GreenzoneSettingsForm(CurrentTasMovie.TasStateManager.Settings)
|
||||
new StateHistorySettingsForm(CurrentTasMovie.TasStateManager.Settings)
|
||||
{
|
||||
Owner = GlobalWin.MainForm,
|
||||
Location = this.ChildPointToScreen(TasView),
|
||||
|
|
|
@ -70,6 +70,32 @@ namespace BizHawk.Client.EmuHawk
|
|||
// TODO: show this at all times or hide it when saving is done?
|
||||
this.SavingProgressBar.Visible = false;
|
||||
|
||||
InitializeSaveWorker();
|
||||
|
||||
WantsToControlStopMovie = true;
|
||||
TasPlaybackBox.Tastudio = this;
|
||||
MarkerControl.Tastudio = this;
|
||||
MarkerControl.Emulator = this.Emulator;
|
||||
TasView.QueryItemText += TasView_QueryItemText;
|
||||
TasView.QueryItemBkColor += TasView_QueryItemBkColor;
|
||||
TasView.QueryItemIcon += TasView_QueryItemIcon;
|
||||
TasView.QueryFrameLag += TasView_QueryFrameLag;
|
||||
TasView.InputPaintingMode = Settings.DrawInput;
|
||||
TasView.PointedCellChanged += TasView_PointedCellChanged;
|
||||
TasView.MultiSelect = true;
|
||||
TasView.MaxCharactersInHorizontal = 1;
|
||||
WantsToControlRestartMovie = true;
|
||||
|
||||
}
|
||||
|
||||
private void InitializeSaveWorker()
|
||||
{
|
||||
if (_saveBackgroundWorker != null)
|
||||
{
|
||||
_saveBackgroundWorker.Dispose();
|
||||
_saveBackgroundWorker = null; // Idk if this line is even useful.
|
||||
}
|
||||
|
||||
_saveBackgroundWorker = new BackgroundWorker();
|
||||
_saveBackgroundWorker.WorkerReportsProgress = true;
|
||||
_saveBackgroundWorker.DoWork += (s, e) =>
|
||||
|
@ -89,31 +115,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.Invoke(() => this.MessageStatusLabel.Text = Path.GetFileName(CurrentTasMovie.Filename) + " saved.");
|
||||
this.Invoke(() => this.SavingProgressBar.Visible = false);
|
||||
|
||||
// SUPER HACKY, and i'm not even sure it's necessary
|
||||
Timer t = new Timer();
|
||||
t.Tick += (a, b) =>
|
||||
{
|
||||
this.Invoke(() => this.MessageStatusLabel.Text = "TAStudio engaged.");
|
||||
t.Stop();
|
||||
};
|
||||
t.Interval = 5000;
|
||||
t.Start();
|
||||
InitializeSaveWorker(); // Required, or it will error when trying to report progress again.
|
||||
};
|
||||
|
||||
WantsToControlStopMovie = true;
|
||||
TasPlaybackBox.Tastudio = this;
|
||||
MarkerControl.Tastudio = this;
|
||||
MarkerControl.Emulator = this.Emulator;
|
||||
TasView.QueryItemText += TasView_QueryItemText;
|
||||
TasView.QueryItemBkColor += TasView_QueryItemBkColor;
|
||||
TasView.QueryItemIcon += TasView_QueryItemIcon;
|
||||
TasView.QueryFrameLag += TasView_QueryFrameLag;
|
||||
TasView.InputPaintingMode = Settings.DrawInput;
|
||||
TasView.PointedCellChanged += TasView_PointedCellChanged;
|
||||
TasView.MultiSelect = true;
|
||||
TasView.MaxCharactersInHorizontal = 1;
|
||||
WantsToControlRestartMovie = true;
|
||||
|
||||
if (CurrentTasMovie != null) // Again required. TasMovie has a separate reference.
|
||||
CurrentTasMovie.NewBGWorker(_saveBackgroundWorker);
|
||||
}
|
||||
|
||||
private void TastudioToStopMovie()
|
||||
|
|
Loading…
Reference in New Issue