more tastudio cleanups

This commit is contained in:
adelikat 2017-05-24 10:50:25 -05:00
parent b03e224c5e
commit 74b2cca967
2 changed files with 73 additions and 50 deletions

View File

@ -2,32 +2,36 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Media;
using BizHawk.Emulation.Common;
using BizHawk.Client.Common;
using BizHawk.Common;
using BizHawk.Client.EmuHawk.WinFormExtensions;
namespace BizHawk.Client.EmuHawk
{
public partial class BookmarksBranchesBox : UserControl
{
public TAStudio Tastudio { get; set; }
private const string BranchNumberColumnName = "BranchNumberColumn";
private const string FrameColumnName = "FrameColumn";
private const string UserTextColumnName = "TextColumn";
private readonly PlatformFrameRates FrameRates = new PlatformFrameRates();
private ScreenshotForm Screenshot = new ScreenshotForm();
private TasMovie Movie { get { return Tastudio.CurrentTasMovie; } }
public TasBranch BackupBranch;
private enum BranchUndo { Load, Update, Text, Remove, None }
private readonly ScreenshotForm Screenshot = new ScreenshotForm();
private TasMovie Movie => Tastudio.CurrentTasMovie;
private TasBranch _backupBranch;
private BranchUndo _branchUndo = BranchUndo.None;
private int LongestBranchText = 0;
public int HoverInterval {
private enum BranchUndo
{
Load, Update, Text, Remove, None
}
public TAStudio Tastudio { get; set; }
public int HoverInterval
{
get { return BranchView.HoverInterval; }
set { BranchView.HoverInterval = value; }
}
@ -36,7 +40,7 @@ namespace BizHawk.Client.EmuHawk
{
InitializeComponent();
BranchView.AllColumns.AddRange(new InputRoll.RollColumn[]
BranchView.AllColumns.AddRange(new[]
{
new InputRoll.RollColumn
{
@ -82,7 +86,6 @@ namespace BizHawk.Client.EmuHawk
text = GetBranch(index).Frame.ToString();
break;
case UserTextColumnName:
//text = GetBranch(index).TimeStamp.ToString(@"hh\:mm\:ss\.ff");
text = GetBranch(index).UserText;
break;
}
@ -95,17 +98,14 @@ namespace BizHawk.Client.EmuHawk
{
var record = Tastudio.CurrentTasMovie[branch.Frame];
if (index == Movie.CurrentBranch)
color = TAStudio.CurrentFrame_InputLog; // SystemColors.HotTrack;
{
color = TAStudio.CurrentFrame_InputLog;
}
else if (record.Lagged.HasValue)
{
if (record.Lagged.Value)
{
color = TAStudio.LagZone_InputLog;
}
else
{
color = TAStudio.GreenZone_InputLog;
}
color = record.Lagged.Value
? TAStudio.LagZone_InputLog
: TAStudio.GreenZone_InputLog;
}
}
@ -174,7 +174,6 @@ namespace BizHawk.Client.EmuHawk
var stateInfo = new KeyValuePair<int, byte[]>(branch.Frame, branch.CoreData);
Tastudio.LoadState(stateInfo);
QuickBmpFile.Copy(new BitmapBufferVideoProvider(branch.OSDFrameBuffer), Tastudio.VideoProvider);
//GlobalWin.MainForm.PauseEmulator();
GlobalWin.MainForm.PauseOnFrame = null;
Tastudio.RefreshDialog();
}
@ -190,8 +189,6 @@ namespace BizHawk.Client.EmuHawk
if (SelectedBranch != null)
{
int index = BranchView.SelectedRows.First();
//if (Movie.CurrentBranch == index) // if the current branch was edited, we should allow loading it. some day there might be a proper check
// return;
Movie.CurrentBranch = index;
LoadBranch(SelectedBranch);
BranchView.Refresh();
@ -224,11 +221,14 @@ namespace BizHawk.Client.EmuHawk
private void LoadBranchToolStripMenuItem_Click(object sender, EventArgs e)
{
BackupBranch = CreateBranch();
_backupBranch = CreateBranch();
var currentHashes = Movie.Branches.Select(b => b.UniqueIdentifier.GetHashCode()).ToList();
do BackupBranch.UniqueIdentifier = Guid.NewGuid();
while (currentHashes.Contains(BackupBranch.UniqueIdentifier.GetHashCode()));
do
{
_backupBranch.UniqueIdentifier = Guid.NewGuid();
}
while (currentHashes.Contains(_backupBranch.UniqueIdentifier.GetHashCode()));
UndoBranchToolStripMenuItem.Enabled = UndoBranchButton.Enabled = true;
UndoBranchToolStripMenuItem.Text = "Undo Branch Load";
@ -244,14 +244,14 @@ namespace BizHawk.Client.EmuHawk
{
Movie.CurrentBranch = BranchView.SelectedRows.First();
BackupBranch = SelectedBranch.Clone();
_backupBranch = SelectedBranch.Clone();
UndoBranchToolStripMenuItem.Enabled = UndoBranchButton.Enabled = true;
UndoBranchToolStripMenuItem.Text = "Undo Branch Update";
toolTip1.SetToolTip(UndoBranchButton, "Undo Branch Update");
_branchUndo = BranchUndo.Update;
UpdateBranch(SelectedBranch);
GlobalWin.OSD.AddMessage("Saved branch " + Movie.CurrentBranch.ToString());
GlobalWin.OSD.AddMessage("Saved branch " + Movie.CurrentBranch);
}
}
@ -264,8 +264,8 @@ namespace BizHawk.Client.EmuHawk
if (EditBranchTextPopUp(index))
{
BackupBranch = SelectedBranch.Clone();
BackupBranch.UserText = oldText;
_backupBranch = SelectedBranch.Clone();
_backupBranch.UserText = oldText;
UndoBranchToolStripMenuItem.Enabled = UndoBranchButton.Enabled = true;
UndoBranchToolStripMenuItem.Text = "Undo Branch Text Edit";
toolTip1.SetToolTip(UndoBranchButton, "Undo Branch Text Edit");
@ -300,7 +300,7 @@ namespace BizHawk.Client.EmuHawk
Movie.CurrentBranch--;
}
BackupBranch = SelectedBranch.Clone();
_backupBranch = SelectedBranch.Clone();
UndoBranchToolStripMenuItem.Enabled = UndoBranchButton.Enabled = true;
UndoBranchToolStripMenuItem.Text = "Undo Branch Removal";
toolTip1.SetToolTip(UndoBranchButton, "Undo Branch Removal");
@ -315,7 +315,6 @@ namespace BizHawk.Client.EmuHawk
BranchView.SelectRow(Movie.BranchCount - 1, true);
}
//BranchView.Refresh();
Tastudio.RefreshDialog();
GlobalWin.OSD.AddMessage("Removed branch " + index.ToString());
}
@ -325,25 +324,26 @@ namespace BizHawk.Client.EmuHawk
{
if (_branchUndo == BranchUndo.Load)
{
LoadBranch(BackupBranch);
LoadBranch(_backupBranch);
GlobalWin.OSD.AddMessage("Branch Load canceled");
}
else if (_branchUndo == BranchUndo.Update)
{
Movie.UpdateBranch(Movie.GetBranch(BackupBranch.UniqueIdentifier), BackupBranch);
Movie.UpdateBranch(Movie.GetBranch(_backupBranch.UniqueIdentifier), _backupBranch);
GlobalWin.OSD.AddMessage("Branch Update canceled");
}
else if (_branchUndo == BranchUndo.Text)
{
Movie.GetBranch(BackupBranch.UniqueIdentifier).UserText = BackupBranch.UserText;
Movie.GetBranch(_backupBranch.UniqueIdentifier).UserText = _backupBranch.UserText;
GlobalWin.OSD.AddMessage("Branch Text Edit canceled");
}
else if (_branchUndo == BranchUndo.Remove)
{
Movie.AddBranch(BackupBranch);
Movie.AddBranch(_backupBranch);
BranchView.RowCount = Movie.BranchCount;
GlobalWin.OSD.AddMessage("Branch Removal canceled");
}
UndoBranchToolStripMenuItem.Enabled = UndoBranchButton.Enabled = false;
BranchView.Refresh();
Tastudio.RefreshDialog();
@ -359,7 +359,9 @@ namespace BizHawk.Client.EmuHawk
public void LoadBranchExternal(int slot = -1)
{
if (Tastudio.FloatEditingMode)
{
return;
}
if (slot != -1)
{
@ -373,13 +375,16 @@ namespace BizHawk.Client.EmuHawk
return;
}
}
LoadBranchToolStripMenuItem_Click(null, null);
}
public void UpdateBranchExternal(int slot = -1)
{
if (Tastudio.FloatEditingMode)
{
return;
}
if (slot != -1)
{
@ -393,6 +398,7 @@ namespace BizHawk.Client.EmuHawk
return;
}
}
UpdateBranchToolStripMenuItem_Click(null, null);
}
@ -404,7 +410,9 @@ namespace BizHawk.Client.EmuHawk
public void SelectBranchExternal(int slot)
{
if (Tastudio.FloatEditingMode)
{
return;
}
if (GetBranch(slot) != null)
{
@ -425,6 +433,7 @@ namespace BizHawk.Client.EmuHawk
BranchView.Refresh();
return;
}
int sel = BranchView.SelectedRows.First();
if (next)
{
@ -442,14 +451,15 @@ namespace BizHawk.Client.EmuHawk
BranchView.SelectRow(sel - 1, true);
}
}
BranchView.Refresh();
}
public void NonExistentBranchMessage(int slot)
{
string binding = Global.Config.HotkeyBindings.Where(x => x.DisplayName == "Add Branch").FirstOrDefault().Bindings;
GlobalWin.OSD.AddMessage("Branch " + slot.ToString() + " does not exist");
GlobalWin.OSD.AddMessage("Use " + binding + " to add branches");
string binding = Global.Config.HotkeyBindings.First(x => x.DisplayName == "Add Branch").Bindings;
GlobalWin.OSD.AddMessage($"Branch {slot} does not exist");
GlobalWin.OSD.AddMessage($"Use {binding} to add branches");
}
public void UpdateValues()
@ -471,18 +481,25 @@ namespace BizHawk.Client.EmuHawk
foreach (TasBranch b in Movie.Branches)
{
if (string.IsNullOrEmpty(b.UserText))
{
continue;
}
if (temp < b.UserText.Length)
{
temp = b.UserText.Length;
}
}
LongestBranchText = temp;
int textWidth = LongestBranchText * 12 + 14; // sorry for magic numbers. see TAStudio.SetUpColumns()
InputRoll.RollColumn column = BranchView.AllColumns.Where(c => c.Name == UserTextColumnName).SingleOrDefault();
int textWidth = (LongestBranchText * 12) + 14; // sorry for magic numbers. see TAStudio.SetUpColumns()
var column = BranchView.AllColumns.Single(c => c.Name == UserTextColumnName);
if (textWidth < 90)
{
textWidth = 90;
}
if (column.Width != textWidth)
{
@ -495,9 +512,11 @@ namespace BizHawk.Client.EmuHawk
{
TasBranch branch = Movie.GetBranch(index);
if (branch == null)
{
return false;
}
InputPrompt i = new InputPrompt
var i = new InputPrompt
{
Text = "Text for branch " + index,
TextInputType = InputPrompt.InputType.Text,
@ -516,6 +535,7 @@ namespace BizHawk.Client.EmuHawk
UpdateValues();
return true;
}
return false;
}
@ -557,7 +577,7 @@ namespace BizHawk.Client.EmuHawk
private void BranchView_MouseMove(object sender, MouseEventArgs e)
{
if (BranchView.CurrentCell == null || !BranchView.CurrentCell.RowIndex.HasValue || BranchView.CurrentCell.Column == null)
if (BranchView.CurrentCell?.RowIndex == null || BranchView.CurrentCell.Column == null)
{
Screenshot.FadeOut();
}
@ -582,7 +602,7 @@ namespace BizHawk.Client.EmuHawk
private void BranchView_PointedCellChanged(object sender, InputRoll.CellEventArgs e)
{
if (e.NewCell != null && e.NewCell.RowIndex.HasValue && e.NewCell.Column != null && e.NewCell.RowIndex < Movie.BranchCount)
if (e.NewCell?.RowIndex != null && e.NewCell.Column != null && e.NewCell.RowIndex < Movie.BranchCount)
{
if (BranchView.CurrentCell.Column.Name == BranchNumberColumnName &&
BranchView.CurrentCell.RowIndex.HasValue &&

View File

@ -1,4 +1,7 @@
using BizHawk.Emulation.Common;
using System;
using System.Windows.Forms;
using BizHawk.Emulation.Common;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
@ -39,9 +42,9 @@ namespace BizHawk.Client.EmuHawk
return lg;
}
catch (System.Exception)
catch (Exception)
{
System.Windows.Forms.MessageBox.Show("Invalid mnemonic string: " + inputLogEntry, "Paste Input failed!");
MessageBox.Show("Invalid mnemonic string: " + inputLogEntry, "Paste Input failed!");
return null;
}
}