CapersProject/Packages/com.singularitygroup.hotreload/Editor/HotReloadPrefs.cs

430 lines
21 KiB
C#

using System;
using System.Globalization;
using System.IO;
using JetBrains.Annotations;
using SingularityGroup.HotReload.Editor.Cli;
using UnityEditor;
using UnityEngine;
namespace SingularityGroup.HotReload.Editor {
internal static class HotReloadPrefs {
private const string RemoteServerKey = "HotReloadWindow.RemoteServer";
private const string RemoteServerHostKey = "HotReloadWindow.RemoteServerHost";
private const string LicenseEmailKey = "HotReloadWindow.LicenseEmail";
private const string RenderAuthLoginKey = "HotReloadWindow.RenderAuthLogin";
private const string FirstLoginCachedKey = "HotReloadWindow.FirstLoginCachedKey";
[Obsolete]
private const string ShowOnStartupKey = "HotReloadWindow.ShowOnStartup";
private const string PasswordCachedKey = "HotReloadWindow.PasswordCached";
private const string ExposeServerToLocalNetworkKey = "HotReloadWindow.ExposeServerToLocalNetwork";
private const string ErrorHiddenCachedKey = "HotReloadWindow.ErrorHiddenCachedKey";
private const string RefreshManuallyTipCachedKey = "HotReloadWindow.RefreshManuallyTipCachedKey";
private const string ShowLoginCachedKey = "HotReloadWindow.ShowLoginCachedKey";
private const string ConfigurationKey = "HotReloadWindow.Configuration";
private const string ShowPromoCodesCachedKey = "HotReloadWindow.ShowPromoCodesCached";
private const string ShowOnDeviceKey = "HotReloadWindow.ShowOnDevice";
private const string ShowChangelogKey = "HotReloadWindow.ShowChangelog";
private const string UnsupportedChangesKey = "HotReloadWindow.ShowUnsupportedChanges";
private const string LoggedBurstHintKey = "HotReloadWindow.LoggedBurstHint";
private const string ShouldDoAutoRefreshFixupKey = "HotReloadWindow.ShouldDoAutoRefreshFixup";
private const string ActiveDaysKey = "HotReloadWindow.ActiveDays";
[Obsolete]
private const string RateAppShownKey = "HotReloadWindow.RateAppShown";
private const string PatchesCollapseKey = "HotReloadWindow.PatchesCollapse";
private const string PatchesGroupAllKey = "HotReloadWindow.PatchesGroupAll";
private const string LaunchOnEditorStartKey = "HotReloadWindow.LaunchOnEditorStart";
private const string AutoRecompileUnsupportedChangesKey = "HotReloadWindow.AutoRecompileUnsupportedChanges";
private const string AutoRecompilePartiallyUnsupportedChangesKey = "HotReloadWindow.AutoRecompilePartiallyUnsupportedChanges";
private const string ShowNotificationsKey = "HotReloadWindow.ShowNotifications";
private const string ShowPatchingNotificationsKey = "HotReloadWindow.ShowPatchingNotifications";
private const string ShowCompilingUnsupportedNotificationsKey = "HotReloadWindow.ShowCompilingUnsupportedNotifications";
private const string AutoRecompileUnsupportedChangesImmediatelyKey = "HotReloadWindow.AutoRecompileUnsupportedChangesImmediately";
private const string AutoRecompileUnsupportedChangesOnExitPlayModeKey = "HotReloadWindow.AutoRecompileUnsupportedChangesOnExitPlayMode";
private const string AutoRecompileUnsupportedChangesInPlayModeKey = "HotReloadWindow.AutoRecompileUnsupportedChangesInPlayMode";
private const string AllowDisableUnityAutoRefreshKey = "HotReloadWindow.AllowDisableUnityAutoRefresh";
private const string DefaultAutoRefreshKey = "HotReloadWindow.DefaultAutoRefresh";
private const string DefaultAutoRefreshModeKey = "HotReloadWindow.DefaultAutoRefreshMode";
private const string DefaultScriptCompilationKeyKey = "HotReloadWindow.DefaultScriptCompilationKey";
private const string DefaultEditorTintKey = "HotReloadWindow.DefaultEditorTint";
private const string AppliedAutoRefreshKey = "HotReloadWindow.AppliedAutoRefresh";
private const string AppliedScriptCompilationKey = "HotReloadWindow.AppliedScriptCompilation";
private const string AppliedEditorTintKey = "HotReloadWindow.AppliedEditorTint";
private const string AllAssetChangesKey = "HotReloadWindow.AllAssetChanges";
private const string IncludeShaderChangesKey = "HotReloadWindow.IncludeShaderChanges";
private const string DisableConsoleWindowKey = "HotReloadWindow.DisableConsoleWindow";
private const string RedeemLicenseEmailKey = "HotReloadWindow.RedeemLicenseEmail";
private const string RedeemLicenseInvoiceKey = "HotReloadWindow.RedeemLicenseInvoice";
private const string RunTabEventsSuggestionsFoldoutKey = "HotReloadWindow.RunTabEventsSuggestionsFoldout";
private const string RunTabEventsTimelineFoldoutKey = "HotReloadWindow.RunTabEventsTimelineFoldout";
private const string RunTabUnsupportedChangesFilterKey = "HotReloadWindow.RunTabUnsupportedChangesFilter";
private const string RunTabCompileErrorFilterKey = "HotReloadWindow.RunTabCompileErrorFilter";
private const string RunTabPartiallyAppliedPatchesFilterKey = "HotReloadWindow.RunTabPartiallyAppliedPatchesFilter";
private const string RunTabAppliedPatchesFilterKey = "HotReloadWindow.RunTabAppliedPatchesFilter";
private const string RecompileDialogueShownKey = "HotReloadWindow.RecompileDialogueShown";
private const string OpenedWindowAtLeastOnceKey = "HotReloadWindow.OpenedWindowAtLeastOnce";
public const string DontShowPromptForDownloadKey = "ServerDownloader.DontShowPromptForDownload";
[Obsolete] public const string AllowHttpSettingCacheKey = "HotReloadWindow.AllowHttpSettingCacheKey";
[Obsolete] public const string AutoRefreshSettingCacheKey = "HotReloadWindow.AutoRefreshSettingCacheKey";
[Obsolete] public const string ScriptCompilationSettingCacheKey = "HotReloadWindow.ScriptCompilationSettingCacheKey";
[Obsolete] public const string ProjectGenerationSettingCacheKey = "HotReloadWindow.ProjectGenerationSettingCacheKey";
[Obsolete]
public static bool RemoteServer {
get { return EditorPrefs.GetBool(RemoteServerKey, false); }
set { EditorPrefs.SetBool(RemoteServerKey, value); }
}
public static bool DontShowPromptForDownload {
get { return EditorPrefs.GetBool(DontShowPromptForDownloadKey, false); }
set { EditorPrefs.SetBool(DontShowPromptForDownloadKey, value); }
}
[Obsolete]
public static string RemoteServerHost {
get { return EditorPrefs.GetString(RemoteServerHostKey); }
set { EditorPrefs.SetString(RemoteServerHostKey, value); }
}
public static string LicenseEmail {
get { return EditorPrefs.GetString(LicenseEmailKey); }
set { EditorPrefs.SetString(LicenseEmailKey, value); }
}
public static string LicensePassword {
get { return EditorPrefs.GetString(PasswordCachedKey); }
set { EditorPrefs.SetString(PasswordCachedKey, value); }
}
[Obsolete]
public static bool RenderAuthLogin { // false = render free trial
get { return EditorPrefs.GetBool(RenderAuthLoginKey); }
set { EditorPrefs.SetBool(RenderAuthLoginKey, value); }
}
[Obsolete]
public static bool FirstLogin {
get { return EditorPrefs.GetBool(FirstLoginCachedKey, true); }
set { EditorPrefs.SetBool(FirstLoginCachedKey, value); }
}
[Obsolete]
public static string ShowOnStartupLegacy { // WindowAutoOpen
get { return EditorPrefs.GetString(ShowOnStartupKey); }
set { EditorPrefs.SetString(ShowOnStartupKey, value); }
}
public static string showOnStartupPath { get; }= Path.Combine(CliUtils.GetAppDataPath(), "showOnStartup.txt");
static ShowOnStartupEnum? showOnStartup;
public static ShowOnStartupEnum ShowOnStartup {
get {
if (showOnStartup != null) {
return showOnStartup.Value;
}
if (!File.Exists(showOnStartupPath)) {
showOnStartup = ShowOnStartupEnum.Always;
return showOnStartup.Value;
}
var text = File.ReadAllText(showOnStartupPath);
ShowOnStartupEnum _showOnStartup;
if (Enum.TryParse(text, true, out _showOnStartup)) {
showOnStartup = _showOnStartup;
return showOnStartup.Value;
}
showOnStartup = ShowOnStartupEnum.Always;
return showOnStartup.Value;
}
set {
// ReSharper disable once AssignNullToNotNullAttribute
Directory.CreateDirectory(Path.GetDirectoryName(showOnStartupPath));
File.WriteAllText(showOnStartupPath, value.ToString());
showOnStartup = value;
}
}
public static bool ErrorHidden {
get { return EditorPrefs.GetBool(ErrorHiddenCachedKey); }
set { EditorPrefs.SetBool(ErrorHiddenCachedKey, value); }
}
public static bool ShowLogin {
get { return EditorPrefs.GetBool(ShowLoginCachedKey, true); }
set { EditorPrefs.SetBool(ShowLoginCachedKey, value); }
}
public static bool ShowConfiguration {
get { return EditorPrefs.GetBool(ConfigurationKey, true); }
set { EditorPrefs.SetBool(ConfigurationKey, value); }
}
public static bool ShowPromoCodes {
get { return EditorPrefs.GetBool(ShowPromoCodesCachedKey, true); }
set { EditorPrefs.SetBool(ShowPromoCodesCachedKey, value); }
}
public static bool ShowOnDevice {
get { return EditorPrefs.GetBool(ShowOnDeviceKey, true); }
set { EditorPrefs.SetBool(ShowOnDeviceKey, value); }
}
public static bool ShowChangeLog {
get { return EditorPrefs.GetBool(ShowChangelogKey, true); }
set { EditorPrefs.SetBool(ShowChangelogKey, value); }
}
public static bool ShowUnsupportedChanges {
get { return EditorPrefs.GetBool(UnsupportedChangesKey, true); }
set { EditorPrefs.SetBool(UnsupportedChangesKey, value); }
}
[Obsolete]
public static bool RefreshManuallyTip {
get { return EditorPrefs.GetBool(RefreshManuallyTipCachedKey); }
set { EditorPrefs.SetBool(RefreshManuallyTipCachedKey, value); }
}
public static bool LoggedBurstHint {
get { return EditorPrefs.GetBool(LoggedBurstHintKey); }
set { EditorPrefs.SetBool(LoggedBurstHintKey, value); }
}
[Obsolete]
public static bool ShouldDoAutoRefreshFixup {
get { return EditorPrefs.GetBool(ShouldDoAutoRefreshFixupKey, true); }
set { EditorPrefs.SetBool(ShouldDoAutoRefreshFixupKey, value); }
}
public static string ActiveDays {
get { return EditorPrefs.GetString(ActiveDaysKey, string.Empty); }
set { EditorPrefs.SetString(ActiveDaysKey, value); }
}
[Obsolete]
public static bool RateAppShownLegacy {
get { return EditorPrefs.GetBool(RateAppShownKey, false); }
set { EditorPrefs.SetBool(RateAppShownKey, value); }
}
static string rateAppPath = Path.Combine(CliUtils.GetAppDataPath(), "ratedApp.txt");
static bool? rateAppShown;
public static bool RateAppShown {
get {
if (rateAppShown != null) {
return rateAppShown.Value;
}
rateAppShown = File.Exists(rateAppPath);
return rateAppShown.Value;
}
set {
// ReSharper disable once AssignNullToNotNullAttribute
Directory.CreateDirectory(Path.GetDirectoryName(rateAppPath));
if (value && !File.Exists(rateAppPath)) {
using (File.Create(rateAppPath)) { }
} else if (!value && File.Exists(rateAppPath)) {
File.Delete(rateAppPath);
}
rateAppShown = value;
}
}
[Obsolete]
public static bool PatchesGroupAll {
get { return EditorPrefs.GetBool(PatchesGroupAllKey, false); }
set { EditorPrefs.SetBool(PatchesGroupAllKey, value); }
}
[Obsolete]
public static bool PatchesCollapse {
get { return EditorPrefs.GetBool(PatchesCollapseKey, true); }
set { EditorPrefs.SetBool(PatchesCollapseKey, value); }
}
[Obsolete]
public static ShowOnStartupEnum GetShowOnStartupEnum() {
ShowOnStartupEnum showOnStartupEnum;
if (Enum.TryParse(HotReloadPrefs.ShowOnStartupLegacy, true, out showOnStartupEnum)) {
return showOnStartupEnum;
}
return ShowOnStartupEnum.Always;
}
public static bool ExposeServerToLocalNetwork {
get { return EditorPrefs.GetBool(ExposeServerToLocalNetworkKey, false); }
set { EditorPrefs.SetBool(ExposeServerToLocalNetworkKey, value); }
}
public static bool LaunchOnEditorStart {
get { return EditorPrefs.GetBool(LaunchOnEditorStartKey, false); }
set { EditorPrefs.SetBool(LaunchOnEditorStartKey, value); }
}
public static bool AutoRecompileUnsupportedChanges {
get { return EditorPrefs.GetBool(AutoRecompileUnsupportedChangesKey, false); }
set { EditorPrefs.SetBool(AutoRecompileUnsupportedChangesKey, value); }
}
public static bool AutoRecompilePartiallyUnsupportedChanges {
get { return EditorPrefs.GetBool(AutoRecompilePartiallyUnsupportedChangesKey, false); }
set { EditorPrefs.SetBool(AutoRecompilePartiallyUnsupportedChangesKey, value); }
}
public static bool ShowNotifications {
get { return EditorPrefs.GetBool(ShowNotificationsKey, true); }
set { EditorPrefs.SetBool(ShowNotificationsKey, value); }
}
public static bool ShowPatchingNotifications {
get { return EditorPrefs.GetBool(ShowPatchingNotificationsKey, true); }
set { EditorPrefs.SetBool(ShowPatchingNotificationsKey, value); }
}
public static bool ShowCompilingUnsupportedNotifications {
get { return EditorPrefs.GetBool(ShowCompilingUnsupportedNotificationsKey, true); }
set { EditorPrefs.SetBool(ShowCompilingUnsupportedNotificationsKey, value); }
}
public static bool AutoRecompileUnsupportedChangesImmediately {
get { return EditorPrefs.GetBool(AutoRecompileUnsupportedChangesImmediatelyKey, false); }
set { EditorPrefs.SetBool(AutoRecompileUnsupportedChangesImmediatelyKey, value); }
}
public static bool AutoRecompileUnsupportedChangesOnExitPlayMode {
get { return EditorPrefs.GetBool(AutoRecompileUnsupportedChangesOnExitPlayModeKey, false); }
set { EditorPrefs.SetBool(AutoRecompileUnsupportedChangesOnExitPlayModeKey, value); }
}
public static bool AutoRecompileUnsupportedChangesInPlayMode {
get { return EditorPrefs.GetBool(AutoRecompileUnsupportedChangesInPlayModeKey, false); }
set { EditorPrefs.SetBool(AutoRecompileUnsupportedChangesInPlayModeKey, value); }
}
public static bool AllowDisableUnityAutoRefresh {
get { return EditorPrefs.GetBool(AllowDisableUnityAutoRefreshKey, false); }
set { EditorPrefs.SetBool(AllowDisableUnityAutoRefreshKey, value); }
}
public static int DefaultAutoRefresh {
get { return EditorPrefs.GetInt(DefaultAutoRefreshKey, -1); }
set { EditorPrefs.SetInt(DefaultAutoRefreshKey, value); }
}
[UsedImplicitly]
public static int DefaultAutoRefreshMode {
get { return EditorPrefs.GetInt(DefaultAutoRefreshModeKey, -1); }
set { EditorPrefs.SetInt(DefaultAutoRefreshModeKey, value); }
}
public static int DefaultScriptCompilation {
get { return EditorPrefs.GetInt(DefaultScriptCompilationKeyKey, -1); }
set { EditorPrefs.SetInt(DefaultScriptCompilationKeyKey, value); }
}
public static Color? DefaultEditorTint {
get { return ColorFromString(EditorPrefs.GetString(DefaultEditorTintKey, string.Empty)); }
set { EditorPrefs.SetString(DefaultEditorTintKey, ColorToString(value)); }
}
public static bool AppliedAutoRefresh {
get { return EditorPrefs.GetBool(AppliedAutoRefreshKey); }
set { EditorPrefs.SetBool(AppliedAutoRefreshKey, value); }
}
public static bool AppliedScriptCompilation {
get { return EditorPrefs.GetBool(AppliedScriptCompilationKey); }
set { EditorPrefs.SetBool(AppliedScriptCompilationKey, value); }
}
public static Color? AppliedEditorTint {
get { return ColorFromString(EditorPrefs.GetString(AppliedEditorTintKey, string.Empty)); }
set { EditorPrefs.SetString(AppliedEditorTintKey, ColorToString(value)); }
}
public static bool AllAssetChanges {
get { return EditorPrefs.GetBool(AllAssetChangesKey, false); }
set { EditorPrefs.SetBool(AllAssetChangesKey, value); }
}
public static bool IncludeShaderChanges {
get { return EditorPrefs.GetBool(IncludeShaderChangesKey, false); }
set { EditorPrefs.SetBool(IncludeShaderChangesKey, value); }
}
public static bool DisableConsoleWindow {
get { return EditorPrefs.GetBool(DisableConsoleWindowKey, false); }
set { EditorPrefs.SetBool(DisableConsoleWindowKey, value); }
}
public static string RedeemLicenseEmail {
get { return EditorPrefs.GetString(RedeemLicenseEmailKey); }
set { EditorPrefs.SetString(RedeemLicenseEmailKey, value); }
}
public static string RedeemLicenseInvoice {
get { return EditorPrefs.GetString(RedeemLicenseInvoiceKey); }
set { EditorPrefs.SetString(RedeemLicenseInvoiceKey, value); }
}
public static bool RunTabEventsTimelineFoldout {
get { return EditorPrefs.GetBool(RunTabEventsTimelineFoldoutKey, true); }
set { EditorPrefs.SetBool(RunTabEventsTimelineFoldoutKey, value); }
}
public static bool RunTabEventsSuggestionsFoldout {
get { return EditorPrefs.GetBool(RunTabEventsSuggestionsFoldoutKey, true); }
set { EditorPrefs.SetBool(RunTabEventsSuggestionsFoldoutKey, value); }
}
public static bool RunTabUnsupportedChangesFilter {
get { return EditorPrefs.GetBool(RunTabUnsupportedChangesFilterKey, true); }
set { EditorPrefs.SetBool(RunTabUnsupportedChangesFilterKey, value); }
}
public static bool RunTabCompileErrorFilter {
get { return EditorPrefs.GetBool(RunTabCompileErrorFilterKey, true); }
set { EditorPrefs.SetBool(RunTabCompileErrorFilterKey, value); }
}
public static bool RunTabPartiallyAppliedPatchesFilter {
get { return EditorPrefs.GetBool(RunTabPartiallyAppliedPatchesFilterKey, true); }
set { EditorPrefs.SetBool(RunTabPartiallyAppliedPatchesFilterKey, value); }
}
public static bool RunTabAppliedPatchesFilter {
get { return EditorPrefs.GetBool(RunTabAppliedPatchesFilterKey, true); }
set { EditorPrefs.SetBool(RunTabAppliedPatchesFilterKey, value); }
}
public static bool RecompileDialogueShown {
get { return EditorPrefs.GetBool(RecompileDialogueShownKey); }
set { EditorPrefs.SetBool(RecompileDialogueShownKey, value); }
}
public static bool OpenedWindowAtLeastOnce {
get { return EditorPrefs.GetBool(OpenedWindowAtLeastOnceKey); }
set { EditorPrefs.SetBool(OpenedWindowAtLeastOnceKey, value); }
}
private const string rgbaDelimiter = ";";
public static string ColorToString(Color? _color) {
if (_color == null) {
return null;
}
var color = _color.Value;
var cultInfo = CultureInfo.InvariantCulture;
string[] rgbaList = { color.r.ToString(cultInfo), color.g.ToString(cultInfo), color.b.ToString(cultInfo), color.a.ToString(cultInfo)};
return String.Join(rgbaDelimiter, rgbaList);
}
public static Color? ColorFromString(string ser) {
if (string.IsNullOrEmpty(ser)) {
return null;
}
string[] rgbaParts = ser.Split(rgbaDelimiter.ToCharArray());
return new Color(float.Parse(rgbaParts[0]), float.Parse(rgbaParts[1]),float.Parse(rgbaParts[2]),float.Parse(rgbaParts[3]));
}
}
}