From 1a020ba0f5dd8e8671c1d555701bd6c5f9f9da3a Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Mon, 30 Nov 2020 20:52:02 +1000 Subject: [PATCH] Make the getters of the 6 ToolFormBase props protected and it only cost a callback and a `public new` hack --- .../tools/MultiDiskBundler/MultiDiskBundler.cs | 2 +- .../MultiDiskBundler/MultiDiskFileSelector.cs | 12 ++++++++---- .../tools/TAStudio/TAStudio.cs | 4 ++++ src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs | 14 ++++++++------ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs index bacafcd339..a0fc9991fa 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs @@ -127,7 +127,7 @@ namespace BizHawk.Client.EmuHawk Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top }; - var mdf = new MultiDiskFileSelector(this) + var mdf = new MultiDiskFileSelector(this, () => MainForm.CurrentlyOpenRom) { Location = UIHelper.Scale(new Point(7, 12)), Width = groupBox.ClientSize.Width - UIHelper.ScaleX(13), diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs index c4c115964c..25706667d5 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs @@ -9,6 +9,8 @@ namespace BizHawk.Client.EmuHawk { public partial class MultiDiskFileSelector : UserControl { + private readonly Func _getLoadedRomNameCallback; + private readonly ToolFormBase _parent; public string SystemString { get; set; } = ""; @@ -26,8 +28,9 @@ namespace BizHawk.Client.EmuHawk OnNameChanged(EventArgs.Empty); } - public MultiDiskFileSelector(ToolFormBase parent) + public MultiDiskFileSelector(ToolFormBase parent, Func getLoadedRomNameCallback) { + _getLoadedRomNameCallback = getLoadedRomNameCallback; _parent = parent; InitializeComponent(); PathBox.TextChanged += HandleLabelTextChanged; @@ -123,7 +126,7 @@ namespace BizHawk.Client.EmuHawk private void UseCurrentRomButton_Click(object sender, EventArgs e) { - PathBox.Text = _parent.MainForm.CurrentlyOpenRom; + PathBox.Text = _getLoadedRomNameCallback(); } private void DualGBFileSelector_Load(object sender, EventArgs e) @@ -133,9 +136,10 @@ namespace BizHawk.Client.EmuHawk public void UpdateValues() { + var loadedRomName = _getLoadedRomNameCallback(); UseCurrentRomButton.Enabled = - !string.IsNullOrEmpty(_parent.MainForm.CurrentlyOpenRom) - && !_parent.MainForm.CurrentlyOpenRom.Contains(".xml"); // Can't already be an xml + !string.IsNullOrEmpty(loadedRomName) + && !loadedRomName.Contains(".xml"); // Can't already be an xml } private void PathBox_TextChanged(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 4a422bee2d..655a156995 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -17,6 +17,10 @@ namespace BizHawk.Client.EmuHawk { public override bool BlocksInputWhenFocused => IsInMenuLoop; + public new IMainFormForTools MainForm => base.MainForm; + + public new IMovieSession MovieSession => base.MovieSession; + // TODO: UI flow that conveniently allows to start from savestate public ITasMovie CurrentTasMovie => MovieSession.Movie as ITasMovie; diff --git a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs index f3ef662b40..ed1af1af22 100644 --- a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs +++ b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs @@ -10,15 +10,17 @@ namespace BizHawk.Client.EmuHawk { public class ToolFormBase : FormBase, IToolForm { - public ToolManager Tools { get; set; } + public ToolManager Tools { protected get; set; } - public DisplayManager DisplayManager { get; set; } + public DisplayManager DisplayManager { protected get; set; } - public InputManager InputManager { get; set; } - public IMainFormForTools MainForm { get; set; } + public InputManager InputManager { protected get; set; } - public IMovieSession MovieSession { get; set; } - public IGameInfo Game { get; set; } + public IMainFormForTools MainForm { protected get; set; } + + public IMovieSession MovieSession { protected get; set; } + + public IGameInfo Game { protected get; set; } public virtual bool AskSaveChanges() => true;