|
3 | 3 | using System.Globalization;
|
4 | 4 | using System.IO;
|
5 | 5 | using System.Linq;
|
| 6 | +using System.Runtime.InteropServices; |
6 | 7 | using System.Text;
|
7 | 8 | using UnityEngine;
|
8 | 9 | using UnityExplorer.UI.Main;
|
@@ -45,6 +46,8 @@ public static void Init(ConfigHandler configHandler)
|
45 | 46 | PanelDragger.OnFinishDrag += PanelDragger_OnFinishDrag;
|
46 | 47 | MainMenu.OnActiveTabChanged += MainMenu_OnActiveTabChanged;
|
47 | 48 | DebugConsole.OnToggleShow += DebugConsole_OnToggleShow;
|
| 49 | + |
| 50 | + InitConsoleCallback(); |
48 | 51 | }
|
49 | 52 |
|
50 | 53 | internal static void RegisterConfigElement<T>(ConfigElement<T> configElement)
|
@@ -134,6 +137,33 @@ private static void SceneExplorer_OnToggleShow(bool showing)
|
134 | 137 | Last_SceneExplorer_State.Value = showing;
|
135 | 138 | }
|
136 | 139 |
|
| 140 | + #region CONSOLE ONEXIT CALLBACK |
| 141 | + |
| 142 | + internal static void InitConsoleCallback() |
| 143 | + { |
| 144 | + handler = new ConsoleEventDelegate(ConsoleEventCallback); |
| 145 | + SetConsoleCtrlHandler(handler, true); |
| 146 | + } |
| 147 | + |
| 148 | + static bool ConsoleEventCallback(int eventType) |
| 149 | + { |
| 150 | + // 2 is Console Quit |
| 151 | + if (eventType == 2) |
| 152 | + Handler.SaveConfig(); |
| 153 | + |
| 154 | + return false; |
| 155 | + } |
| 156 | + |
| 157 | + static ConsoleEventDelegate handler; |
| 158 | + private delegate bool ConsoleEventDelegate(int eventType); |
| 159 | + |
| 160 | + [DllImport("kernel32.dll", SetLastError = true)] |
| 161 | + private static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add); |
| 162 | + |
| 163 | + #endregion |
| 164 | + |
| 165 | + #region WINDOW ANCHORS / POSITION HELPERS |
| 166 | + |
137 | 167 | // Window Anchors helpers
|
138 | 168 |
|
139 | 169 | private const string DEFAULT_WINDOW_ANCHORS = "0.25,0.10,0.78,0.95";
|
@@ -210,5 +240,7 @@ internal static void SetPositionFromString(this RectTransform rect, string strin
|
210 | 240 | //ExplorerCore.LogWarning("Exception setting window position: " + ex);
|
211 | 241 | }
|
212 | 242 | }
|
| 243 | + |
| 244 | + #endregion |
213 | 245 | }
|
214 | 246 | }
|
0 commit comments