diff --git a/OWML.Common/Menus/IModButton.cs b/OWML.Common/Menus/IModButton.cs index 2cacc51a5..93b096f81 100644 --- a/OWML.Common/Menus/IModButton.cs +++ b/OWML.Common/Menus/IModButton.cs @@ -3,23 +3,23 @@ namespace OWML.Common.Menus { - public interface IModButton + public interface IModButton : IModButtonBase { event Action OnClick; int Index { get; set; } Button Button { get; } - bool IsSelected { get; } void Initialize(IModMenu menu); + string Title { get; set; } - IModButton Copy(); - IModButton Copy(int index); + new IModButton Copy(); + IModButton Copy(string title); + IModButton Copy(string title, int index); - IModButton Duplicate(); - IModButton Duplicate(int index); - - IModButton Replace(); - IModButton Replace(int index); + IModButton Duplicate(string title); + IModButton Duplicate(string title, int index); + IModButton Replace(string title); + IModButton Replace(string title, int index); void Show(); void Hide(); } diff --git a/OWML.Common/Menus/IModButtonBase.cs b/OWML.Common/Menus/IModButtonBase.cs new file mode 100644 index 000000000..2e26a635c --- /dev/null +++ b/OWML.Common/Menus/IModButtonBase.cs @@ -0,0 +1,26 @@ +using System; +using UnityEngine.UI; + +namespace OWML.Common.Menus +{ + public interface IModButtonBase + { + event Action OnClick; + int Index { get; set; } + Button Button { get; } + bool IsSelected { get; } + void Initialize(IModMenu menu); + + IModButtonBase Copy(); + IModButtonBase Copy(int index); + + IModButtonBase Duplicate(); + IModButtonBase Duplicate(int index); + + IModButtonBase Replace(); + IModButtonBase Replace(int index); + + void Show(); + void Hide(); + } +} \ No newline at end of file diff --git a/OWML.Common/Menus/IModFieldInput.cs b/OWML.Common/Menus/IModFieldInput.cs index acc98ef93..3c2ca84f7 100644 --- a/OWML.Common/Menus/IModFieldInput.cs +++ b/OWML.Common/Menus/IModFieldInput.cs @@ -2,6 +2,6 @@ { public interface IModFieldInput : IModInput { - IModTitleButton Button { get; } + IModButton Button { get; } } } diff --git a/OWML.Common/Menus/IModLayoutButton.cs b/OWML.Common/Menus/IModLayoutButton.cs index c29b72903..e71f1e2f0 100644 --- a/OWML.Common/Menus/IModLayoutButton.cs +++ b/OWML.Common/Menus/IModLayoutButton.cs @@ -1,6 +1,6 @@ namespace OWML.Common.Menus { - public interface IModLayoutButton : IModButton + public interface IModLayoutButton : IModButtonBase { IModLayoutManager Layout { get; } } diff --git a/OWML.Common/Menus/IModMainMenu.cs b/OWML.Common/Menus/IModMainMenu.cs index 6c548daf9..8d779031f 100644 --- a/OWML.Common/Menus/IModMainMenu.cs +++ b/OWML.Common/Menus/IModMainMenu.cs @@ -2,10 +2,13 @@ { public interface IModMainMenu : IModOWMenu { - IModTitleButton ResumeExpeditionButton { get; } - IModTitleButton NewExpeditionButton { get; } - IModTitleButton ViewCreditsButton { get; } - IModTitleButton SwitchProfileButton { get; } + new IModTabbedMenu OptionsMenu { get; } + new IModButton OptionsButton { get; } + new IModButton QuitButton { get; } + IModButton ResumeExpeditionButton { get; } + IModButton NewExpeditionButton { get; } + IModButton ViewCreditsButton { get; } + IModButton SwitchProfileButton { get; } void Initialize(TitleScreenManager titleScreenManager); } diff --git a/OWML.Common/Menus/IModMenu.cs b/OWML.Common/Menus/IModMenu.cs index 2fde02bdb..63d79b475 100644 --- a/OWML.Common/Menus/IModMenu.cs +++ b/OWML.Common/Menus/IModMenu.cs @@ -10,18 +10,20 @@ public interface IModMenu Menu Menu { get; } + List BaseButtons { get; } List Buttons { get; } - List TitleButtons { get; } List LayoutButtons { get; } List PromptButtons { get; } [Obsolete("Use GetTitleButton instead")] - IModTitleButton GetButton(string title); - IModTitleButton GetTitleButton(string title); + IModButton GetButton(string title); + IModButton GetTitleButton(string title); IModPromptButton GetPromptButton(string title); IModButton AddButton(IModButton button); IModButton AddButton(IModButton button, int index); + IModButtonBase AddButton(IModButtonBase button); + IModButtonBase AddButton(IModButtonBase button, int index); List ToggleInputs { get; } IModToggleInput GetToggleInput(string title); diff --git a/OWML.Common/Menus/IModOWMenu.cs b/OWML.Common/Menus/IModOWMenu.cs index d53802826..b4f1cfea4 100644 --- a/OWML.Common/Menus/IModOWMenu.cs +++ b/OWML.Common/Menus/IModOWMenu.cs @@ -3,7 +3,7 @@ public interface IModOWMenu : IModMenu { IModTabbedMenu OptionsMenu { get; } - IModTitleButton OptionsButton { get; } - IModTitleButton QuitButton { get; } + IModButton OptionsButton { get; } + IModButton QuitButton { get; } } } diff --git a/OWML.Common/Menus/IModPauseMenu.cs b/OWML.Common/Menus/IModPauseMenu.cs index 0f58cd8f8..23e541bad 100644 --- a/OWML.Common/Menus/IModPauseMenu.cs +++ b/OWML.Common/Menus/IModPauseMenu.cs @@ -2,7 +2,10 @@ { public interface IModPauseMenu : IModPopupMenu, IModOWMenu { - IModTitleButton ResumeButton { get; } + new IModTabbedMenu OptionsMenu { get; } + new IModButton OptionsButton { get; } + new IModButton QuitButton { get; } + IModButton ResumeButton { get; } void Initialize(SettingsManager settingsManager); } diff --git a/OWML.Common/Menus/IModPromptButton.cs b/OWML.Common/Menus/IModPromptButton.cs index b34781552..5cf4760c8 100644 --- a/OWML.Common/Menus/IModPromptButton.cs +++ b/OWML.Common/Menus/IModPromptButton.cs @@ -1,6 +1,6 @@ namespace OWML.Common.Menus { - public interface IModPromptButton : IModTitleButton + public interface IModPromptButton : IModButton { string DefaultTitle { get; } ScreenPrompt Prompt { get; set; } diff --git a/OWML.Common/Menus/IModTitleButton.cs b/OWML.Common/Menus/IModTitleButton.cs deleted file mode 100644 index 075b208d7..000000000 --- a/OWML.Common/Menus/IModTitleButton.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace OWML.Common.Menus -{ - public interface IModTitleButton : IModButton - { - string Title { get; set; } - - new IModTitleButton Copy(); - IModTitleButton Copy(string title); - IModTitleButton Copy(string title, int index); - - IModTitleButton Duplicate(string title); - IModTitleButton Duplicate(string title, int index); - - IModTitleButton Replace(string title); - IModTitleButton Replace(string title, int index); - } -} \ No newline at end of file diff --git a/OWML.Common/Menus/IModToggleInput.cs b/OWML.Common/Menus/IModToggleInput.cs index cf0fb7363..de5283868 100644 --- a/OWML.Common/Menus/IModToggleInput.cs +++ b/OWML.Common/Menus/IModToggleInput.cs @@ -3,8 +3,8 @@ public interface IModToggleInput : IModInput { TwoButtonToggleElement Toggle { get; } - IModTitleButton YesButton { get; } - IModTitleButton NoButton { get; } + IModButton YesButton { get; } + IModButton NoButton { get; } IModToggleInput Copy(); IModToggleInput Copy(string key); } diff --git a/OWML.Common/OWML.Common.csproj b/OWML.Common/OWML.Common.csproj index 2c31480bb..caebcf639 100644 --- a/OWML.Common/OWML.Common.csproj +++ b/OWML.Common/OWML.Common.csproj @@ -49,13 +49,13 @@ - + - + diff --git a/OWML.ModHelper.Menus/ModButton.cs b/OWML.ModHelper.Menus/ModButtonBase.cs similarity index 81% rename from OWML.ModHelper.Menus/ModButton.cs rename to OWML.ModHelper.Menus/ModButtonBase.cs index 6fa0fc974..b0ea4b91f 100644 --- a/OWML.ModHelper.Menus/ModButton.cs +++ b/OWML.ModHelper.Menus/ModButtonBase.cs @@ -6,7 +6,7 @@ namespace OWML.ModHelper.Menus { - public abstract class ModButton : IModButton + public abstract class ModButtonBase : IModButtonBase { public event Action OnClick; @@ -27,7 +27,7 @@ public int Index private readonly UIStyleApplier _uIStyleApplier; - protected ModButton(Button button, IModMenu menu) + protected ModButtonBase(Button button, IModMenu menu) { _uIStyleApplier = button.GetComponent(); Button = button; @@ -35,11 +35,11 @@ protected ModButton(Button button, IModMenu menu) Initialize(menu); } - public IModButton Copy() + public IModButtonBase Copy() { var button = Object.Instantiate(Button); Object.Destroy(button.GetComponent()); - var modButton = (IModButton)Activator.CreateInstance(GetType(), button, Menu); + var modButton = (IModButtonBase)Activator.CreateInstance(GetType(), button, Menu); modButton.Index = Index + 1; return modButton; } @@ -49,35 +49,35 @@ public void Initialize(IModMenu menu) Menu = menu; } - public IModButton Copy(int index) + public IModButtonBase Copy(int index) { var copy = Copy(); copy.Index = index; return copy; } - public IModButton Duplicate() + public IModButtonBase Duplicate() { var copy = Copy(); Menu.AddButton(copy); return copy; } - public IModButton Duplicate(int index) + public IModButtonBase Duplicate(int index) { var dupe = Duplicate(); dupe.Index = index; return dupe; } - public IModButton Replace() + public IModButtonBase Replace() { var duplicate = Duplicate(); Hide(); return duplicate; } - public IModButton Replace(int index) + public IModButtonBase Replace(int index) { var replacement = Replace(); replacement.Index = index; diff --git a/OWML.ModHelper.Menus/ModFieldInput.cs b/OWML.ModHelper.Menus/ModFieldInput.cs index 7f77756f2..47d475de0 100644 --- a/OWML.ModHelper.Menus/ModFieldInput.cs +++ b/OWML.ModHelper.Menus/ModFieldInput.cs @@ -6,7 +6,7 @@ namespace OWML.ModHelper.Menus { public abstract class ModFieldInput : ModPopupInput, IModFieldInput { - public IModTitleButton Button { get; } + public IModButton Button { get; } protected readonly IModInputMenu InputMenu; diff --git a/OWML.ModHelper.Menus/ModLayoutButton.cs b/OWML.ModHelper.Menus/ModLayoutButton.cs index 7b7385686..959e02a67 100644 --- a/OWML.ModHelper.Menus/ModLayoutButton.cs +++ b/OWML.ModHelper.Menus/ModLayoutButton.cs @@ -4,7 +4,7 @@ namespace OWML.ModHelper.Menus { - public class ModLayoutButton : ModButton, IModLayoutButton + public class ModLayoutButton : ModButtonBase, IModLayoutButton { public IModLayoutManager Layout { get; } diff --git a/OWML.ModHelper.Menus/ModMainMenu.cs b/OWML.ModHelper.Menus/ModMainMenu.cs index a1f1532ca..6d6ee75c1 100644 --- a/OWML.ModHelper.Menus/ModMainMenu.cs +++ b/OWML.ModHelper.Menus/ModMainMenu.cs @@ -10,12 +10,12 @@ public class ModMainMenu : ModMenu, IModMainMenu { public IModTabbedMenu OptionsMenu { get; } - public IModTitleButton ResumeExpeditionButton { get; private set; } - public IModTitleButton NewExpeditionButton { get; private set; } - public IModTitleButton OptionsButton { get; private set; } - public IModTitleButton ViewCreditsButton { get; private set; } - public IModTitleButton SwitchProfileButton { get; private set; } - public IModTitleButton QuitButton { get; private set; } + public IModButton ResumeExpeditionButton { get; private set; } + public IModButton NewExpeditionButton { get; private set; } + public IModButton OptionsButton { get; private set; } + public IModButton ViewCreditsButton { get; private set; } + public IModButton SwitchProfileButton { get; private set; } + public IModButton QuitButton { get; private set; } private TitleAnimationController _anim; @@ -42,10 +42,10 @@ public void Initialize(TitleScreenManager titleScreenManager) InvokeOnInit(); } - public override IModButton AddButton(IModButton button, int index) + public override IModButtonBase AddButton(IModButtonBase button, int index) { var modButton = base.AddButton(button, index); - var fadeControllers = TitleButtons.OrderBy(x => x.Index).Select(x => new CanvasGroupFadeController + var fadeControllers = Buttons.OrderBy(x => x.Index).Select(x => new CanvasGroupFadeController { group = x.Button.GetComponent() }); diff --git a/OWML.ModHelper.Menus/ModMenu.cs b/OWML.ModHelper.Menus/ModMenu.cs index 9e1ead73c..71829b85a 100644 --- a/OWML.ModHelper.Menus/ModMenu.cs +++ b/OWML.ModHelper.Menus/ModMenu.cs @@ -15,15 +15,15 @@ public class ModMenu : IModMenu public event Action OnInit; public Menu Menu { get; protected set; } - public List Buttons { get; private set; } + public List BaseButtons { get; private set; } public List ToggleInputs { get; private set; } public List SliderInputs { get; private set; } public List TextInputs { get; private set; } public List ComboInputs { get; private set; } public List NumberInputs { get; private set; } - public List TitleButtons => Buttons.OfType().ToList(); - public List LayoutButtons => Buttons.OfType().ToList(); - public List PromptButtons => Buttons.OfType().ToList(); + public List Buttons => BaseButtons.OfType().ToList(); + public List LayoutButtons => BaseButtons.OfType().ToList(); + public List PromptButtons => BaseButtons.OfType().ToList(); protected LayoutGroup Layout; protected readonly IModConsole OwmlConsole; @@ -46,10 +46,10 @@ public virtual void Initialize(Menu menu, LayoutGroup layoutGroup) Layout = layoutGroup; var promptButtons = Menu.GetComponentsInChildren(true).Select(x => x.GetComponent