mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
no more debug menus (we removed both submenus so its just empty now)
This commit is contained in:
parent
f70ce36d99
commit
a4ee4dbee7
@ -1,6 +1,5 @@
|
||||
#region
|
||||
|
||||
using NewHorizons.Utility.DebugTools.Menu;
|
||||
using NewHorizons.Utility.OWML;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
|
||||
@ -20,7 +20,6 @@ using NewHorizons.OtherMods.VoiceActing;
|
||||
using NewHorizons.Streaming;
|
||||
using NewHorizons.Utility;
|
||||
using NewHorizons.Utility.DebugTools;
|
||||
using NewHorizons.Utility.DebugTools.Menu;
|
||||
using NewHorizons.Utility.Files;
|
||||
using NewHorizons.Utility.OuterWilds;
|
||||
using NewHorizons.Utility.OWML;
|
||||
@ -142,7 +141,6 @@ namespace NewHorizons
|
||||
if (currentScene == "SolarSystem")
|
||||
{
|
||||
DebugReload.UpdateReloadButton();
|
||||
DebugMenu.UpdatePauseMenuButton();
|
||||
}
|
||||
|
||||
if (VerboseLogs) NHLogger.UpdateLogLevel(NHLogger.LogType.Verbose);
|
||||
@ -291,7 +289,6 @@ namespace NewHorizons
|
||||
{
|
||||
base.SetupPauseMenu(pauseMenu);
|
||||
DebugReload.InitializePauseMenu(pauseMenu);
|
||||
DebugMenu.InitializePauseMenu(pauseMenu);
|
||||
}
|
||||
|
||||
public void OnDestroy()
|
||||
@ -622,7 +619,6 @@ namespace NewHorizons
|
||||
}
|
||||
|
||||
Locator.GetPlayerBody().gameObject.AddComponent<DebugRaycaster>();
|
||||
Locator.GetPlayerBody().gameObject.AddComponent<DebugMenu>();
|
||||
Locator.GetPlayerBody().gameObject.AddComponent<PlayerShipAtmosphereDetectorFix>();
|
||||
if (HasDLC) Locator.GetPlayerBody().gameObject.AddComponent<LanternExtinguisher>();
|
||||
|
||||
|
||||
@ -1,319 +0,0 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Utility.Files;
|
||||
using NewHorizons.Utility.OWML;
|
||||
using Newtonsoft.Json;
|
||||
using OWML.Common;
|
||||
using OWML.Common.Menus;
|
||||
using OWML.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Utility.DebugTools.Menu
|
||||
{
|
||||
class DebugMenu : MonoBehaviour
|
||||
{
|
||||
private static SubmitAction pauseMenuButton;
|
||||
|
||||
public GUIStyle _editorMenuStyle;
|
||||
public GUIStyle _tabBarStyle;
|
||||
public GUIStyle _submenuStyle;
|
||||
internal Vector2 EditorMenuSize = new Vector2(600, 900);
|
||||
bool menuOpen = false;
|
||||
static bool openMenuOnPause;
|
||||
|
||||
// Menu params
|
||||
internal static IModBehaviour loadedMod = null;
|
||||
internal Dictionary<string, PlanetConfig> loadedConfigFiles = new Dictionary<string, PlanetConfig>();
|
||||
private bool saveButtonUnlocked = false;
|
||||
private Vector2 recentModListScrollPosition = Vector2.zero;
|
||||
|
||||
// Submenus
|
||||
private List<DebugSubmenu> submenus;
|
||||
private int activeSubmenu = 0;
|
||||
|
||||
private static DebugMenu _instance;
|
||||
|
||||
internal static JsonSerializerSettings jsonSettings = new JsonSerializerSettings
|
||||
{
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
DefaultValueHandling = DefaultValueHandling.Ignore,
|
||||
Formatting = Formatting.Indented,
|
||||
};
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
submenus = new List<DebugSubmenu>()
|
||||
{
|
||||
};
|
||||
|
||||
submenus.ForEach((submenu) => submenu.OnAwake(this));
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_instance = this;
|
||||
|
||||
Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuOpened += OnOpenMenu;
|
||||
Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuClosed += OnCloseMenu;
|
||||
Main.Instance.OnChangeStarSystem.AddListener(OnChangeStarSystem);
|
||||
|
||||
InitMenu();
|
||||
|
||||
if (loadedMod != null)
|
||||
{
|
||||
LoadMod(loadedMod);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnDestroy()
|
||||
{
|
||||
Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuOpened -= OnOpenMenu;
|
||||
Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuClosed -= OnCloseMenu;
|
||||
Main.Instance.OnChangeStarSystem.RemoveListener(OnChangeStarSystem);
|
||||
}
|
||||
|
||||
private void OnChangeStarSystem(string _)
|
||||
{
|
||||
if (saveButtonUnlocked)
|
||||
{
|
||||
SaveLoadedConfigsForRecentSystem();
|
||||
saveButtonUnlocked = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void InitializePauseMenu(IPauseMenuManager pauseMenu)
|
||||
{
|
||||
pauseMenuButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Toggle Dev Tools Menu", TranslationHandler.TextType.UI).ToUpperFixed(), 3, true);
|
||||
_instance?.InitMenu();
|
||||
}
|
||||
|
||||
public static void UpdatePauseMenuButton()
|
||||
{
|
||||
pauseMenuButton?.SetButtonVisible(Main.Debug);
|
||||
}
|
||||
|
||||
private void OnOpenMenu() { menuOpen = openMenuOnPause; }
|
||||
|
||||
private void ToggleMenu() { menuOpen = !menuOpen; openMenuOnPause = !openMenuOnPause; }
|
||||
|
||||
private void OnCloseMenu() { menuOpen = false; }
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
if (!menuOpen) return;
|
||||
if (!Main.Debug) return;
|
||||
|
||||
Vector2 menuPosition = new Vector2(10, 40);
|
||||
|
||||
GUILayout.BeginArea(new Rect(menuPosition.x, menuPosition.y, EditorMenuSize.x, EditorMenuSize.y), _editorMenuStyle);
|
||||
|
||||
// Continue working on existing mod
|
||||
GUILayout.Label("Name of your mod");
|
||||
if (loadedMod == null)
|
||||
{
|
||||
recentModListScrollPosition = GUILayout.BeginScrollView(recentModListScrollPosition, GUILayout.Width(EditorMenuSize.x), GUILayout.Height(100));
|
||||
|
||||
foreach (var mod in Main.MountedAddons)
|
||||
{
|
||||
if (GUILayout.Button(mod.ModHelper.Manifest.UniqueName))
|
||||
{
|
||||
LoadMod(mod);
|
||||
submenus[activeSubmenu].GainActive();
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.EndScrollView();
|
||||
}
|
||||
else
|
||||
{
|
||||
GUILayout.Label(loadedMod.ModHelper.Manifest.UniqueName);
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
// Save your work
|
||||
if (loadedMod != null)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button(saveButtonUnlocked ? " O " : " | ", GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
saveButtonUnlocked = !saveButtonUnlocked;
|
||||
}
|
||||
GUI.enabled = saveButtonUnlocked;
|
||||
if (GUILayout.Button("Update your mod's configs"))
|
||||
{
|
||||
SaveLoadedConfigsForRecentSystem();
|
||||
saveButtonUnlocked = false;
|
||||
}
|
||||
GUI.enabled = true;
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
if (GUILayout.Button("Print config changes for your mod"))
|
||||
{
|
||||
PrintLoadedConfigChangesForRecentSystem();
|
||||
saveButtonUnlocked = false;
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
// Draw submenu stuff
|
||||
if (loadedMod != null)
|
||||
{
|
||||
GUILayout.BeginHorizontal(_tabBarStyle);
|
||||
GUILayout.Space(5);
|
||||
for (int i = 0; i < submenus.Count; i++)
|
||||
{
|
||||
GUI.enabled = i != activeSubmenu;
|
||||
var style = i == activeSubmenu ? _submenuStyle : _tabBarStyle;
|
||||
if (GUILayout.Button(" " + submenus[i].SubmenuName() + " ", style, GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
GUI.enabled = true;
|
||||
submenus[activeSubmenu].LoseActive();
|
||||
activeSubmenu = i;
|
||||
submenus[activeSubmenu].GainActive();
|
||||
|
||||
}
|
||||
GUI.enabled = true;
|
||||
|
||||
// if (i < submenus.Count-1) GUILayout.Label("|", GUILayout.ExpandWidth(false));
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.BeginVertical(_submenuStyle);
|
||||
GUILayout.Space(10);
|
||||
submenus[activeSubmenu].OnGUI(this);
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
private void LoadMod(IModBehaviour mod)
|
||||
{
|
||||
loadedMod = mod;
|
||||
submenus.ForEach(submenu => submenu.OnBeginLoadMod(this));
|
||||
|
||||
var folder = loadedMod.ModHelper.Manifest.ModFolderPath;
|
||||
|
||||
var bodiesForThisMod = Main.BodyDict.Values.SelectMany(x => x).Where(x => x.Mod == loadedMod).ToList();
|
||||
foreach (var body in bodiesForThisMod)
|
||||
{
|
||||
if (body.RelativePath == null)
|
||||
{
|
||||
NHLogger.LogWarning($"Error loading config for {body.Config.name} in {body.Config.starSystem}");
|
||||
continue;
|
||||
}
|
||||
|
||||
loadedConfigFiles[Path.Combine(folder, body.RelativePath)] = body.Config;
|
||||
submenus.ForEach(submenu => submenu.LoadConfigFile(this, body.Config));
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveLoadedConfigsForRecentSystem()
|
||||
{
|
||||
submenus.ForEach(submenu => submenu.PreSave(this));
|
||||
|
||||
var backupFolderName = $"configBackups\\{DateTime.Now.ToString("yyyyMMddTHHmmss")}\\";
|
||||
|
||||
NHLogger.Log($"Potentially saving {loadedConfigFiles.Keys.Count} files");
|
||||
|
||||
foreach (var filePath in loadedConfigFiles.Keys)
|
||||
{
|
||||
NHLogger.LogVerbose($"Possibly Saving... {loadedConfigFiles[filePath].name} @ {filePath}");
|
||||
|
||||
if (loadedConfigFiles[filePath].starSystem != Main.Instance.CurrentStarSystem) continue;
|
||||
|
||||
var relativePath = filePath.Replace(loadedMod.ModHelper.Manifest.ModFolderPath, "");
|
||||
|
||||
var json = loadedConfigFiles[filePath].ToSerializedJson();
|
||||
|
||||
try
|
||||
{
|
||||
var path = Path.Combine(loadedMod.ModHelper.Manifest.ModFolderPath, backupFolderName, relativePath);
|
||||
NHLogger.LogVerbose($"Backing up... {relativePath} to {path}");
|
||||
var oldPath = Path.Combine(loadedMod.ModHelper.Manifest.ModFolderPath, relativePath);
|
||||
var directoryName = Path.GetDirectoryName(path);
|
||||
Directory.CreateDirectory(directoryName);
|
||||
|
||||
if (File.Exists(oldPath))
|
||||
File.WriteAllBytes(path, File.ReadAllBytes(oldPath));
|
||||
else
|
||||
File.WriteAllText(path, json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
NHLogger.LogError($"Failed to save backup file {backupFolderName}{relativePath}:\n{e}");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
NHLogger.Log($"Saving... {relativePath} to {filePath}");
|
||||
var path = Path.Combine(loadedMod.ModHelper.Manifest.ModFolderPath, relativePath);
|
||||
var directoryName = Path.GetDirectoryName(path);
|
||||
Directory.CreateDirectory(directoryName);
|
||||
|
||||
File.WriteAllText(path, json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
NHLogger.LogError($"Failed to save file {relativePath}:\n{e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void PrintLoadedConfigChangesForRecentSystem()
|
||||
{
|
||||
foreach(DebugSubmenu menu in submenus)
|
||||
{
|
||||
menu.PrintNewConfigSection(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitMenu()
|
||||
{
|
||||
if (_editorMenuStyle != null) return;
|
||||
|
||||
UpdatePauseMenuButton();
|
||||
|
||||
// TODO: figure out how to clear this event list so that we don't pile up useless instances of the DebugMenu that can't get garbage collected
|
||||
pauseMenuButton.OnSubmitAction += ToggleMenu;
|
||||
|
||||
submenus.ForEach(submenu => submenu.OnInit(this));
|
||||
|
||||
_editorMenuStyle = new GUIStyle
|
||||
{
|
||||
normal =
|
||||
{
|
||||
background = ImageUtilities.MakeSolidColorTexture(1, 1, Color.black)
|
||||
}
|
||||
};
|
||||
|
||||
_tabBarStyle = new GUIStyle
|
||||
{
|
||||
normal =
|
||||
{
|
||||
background = ImageUtilities.MakeSolidColorTexture(1, 1, new Color(0.2f, 0.2f, 0.2f, 1)),
|
||||
textColor = Color.white
|
||||
},
|
||||
fontStyle = FontStyle.Bold,
|
||||
fontSize = 16
|
||||
};
|
||||
|
||||
_submenuStyle = new GUIStyle
|
||||
{
|
||||
normal =
|
||||
{
|
||||
background = ImageUtilities.MakeSolidColorTexture(1, 1, new Color(0.1f, 0.1f, 0.1f, 1)),
|
||||
textColor = Color.white
|
||||
},
|
||||
fontStyle = FontStyle.Bold,
|
||||
fontSize = 16
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
using NewHorizons.External.Configs;
|
||||
|
||||
namespace NewHorizons.Utility.DebugTools.Menu
|
||||
{
|
||||
abstract class DebugSubmenu
|
||||
{
|
||||
internal abstract void OnAwake(DebugMenu menu);
|
||||
internal abstract void OnGUI(DebugMenu menu);
|
||||
internal abstract void PrintNewConfigSection(DebugMenu menu);
|
||||
internal abstract void PreSave(DebugMenu menu);
|
||||
internal abstract void OnInit(DebugMenu menu);
|
||||
internal abstract void LoadConfigFile(DebugMenu menu, PlanetConfig config);
|
||||
internal abstract void OnBeginLoadMod(DebugMenu debugMenu);
|
||||
|
||||
internal abstract string SubmenuName();
|
||||
|
||||
internal abstract void GainActive();
|
||||
internal abstract void LoseActive();
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user