using System; using FlaxEngine; using Console = Game.Console; using System.Linq; #if FLAX_EDITOR using FlaxEditor; #endif namespace Game { public class ConsolePlugin : GamePlugin { public ConsolePlugin() { #if FLAX_EDITOR _description = ConsoleEditorPlugin.DescriptionInternal; #endif } private InputEvent onExit; public override void Initialize() { //FlaxEngine.Debug.Log("ConsolePlugin initialized"); Console.Init(); onExit = new InputEvent("Exit"); onExit.Pressed += () => { if (Console.IsSafeToQuit) Engine.RequestExit(); }; //AssetManager.Init(); // TODO: move these elsewhere #if !FLAX_EDITOR Level.SceneLoading += OnSceneLoading; Level.SceneLoaded += OnSceneLoaded; #endif } public override void Deinitialize() { onExit.Dispose(); #if !FLAX_EDITOR Level.SceneLoading -= OnSceneLoading; Level.SceneLoaded -= OnSceneLoaded; #endif } private void OnSceneLoading(Scene scene, Guid guid) { Level.SceneLoading -= OnSceneLoading; LoadConfig(); } private void OnSceneLoaded(Scene scene, Guid guid) { Level.SceneLoaded -= OnSceneLoaded; #if !FLAX_EDITOR //GameMode.Connect(); //GameMode.StartServer(true); //NetworkManager.StartServer(); //GameModeManager.Init(); NetworkManager.ConnectServer(); #endif } private void LoadConfig() { Console.Print("Loading config file (GamePlugin)"); AssetManager.Globals.ResetValues(); foreach (var line in AssetManager.Config.GetLines()) Console.Execute(line, false, true); } } #if FLAX_EDITOR public class ConsoleEditorPlugin : EditorPlugin { public static PluginDescription DescriptionInternal = new PluginDescription { Author = "Ari Vuollet", Name = "Console", Description = "Quake-like console", Version = Version.Parse("0.1.0"), IsAlpha = true, Category = "Game" }; public override Type GamePluginType => typeof(ConsolePlugin); public ConsoleEditorPlugin() { _description = DescriptionInternal; } //private readonly InputEvent onExit = new InputEvent("Exit"); public override void Initialize() { //FlaxEngine.Debug.Log("ConsolePlugin initialized"); Console.Init(); /*onExit.Triggered += () => { if (Console.IsSafeToQuit) Engine.RequestExit(); };*/ //AssetManager.Init(); Level.SceneLoading += OnSceneLoading; FlaxEditor.Editor.Instance.PlayModeBegin += OnPlayModeBegin; FlaxEditor.Editor.Instance.PlayModeEnd += OnPlayModeEnd; //Scripting.Exit += OnScriptingExit; /*AssetManager.Init(); // TODO: move these elsewhere AssetManager.Globals.ResetValues(); foreach (var line in AssetManager.Config.GetLines()) Console.Execute(line, false, true);*/ } /*private void OnScriptingExit() { FlaxEditor.Editor.Instance.PlayModeBegin -= OnPlayModeBegin; FlaxEditor.Editor.Instance.PlayModeEnd -= OnPlayModeEnd; }*/ private void OnPlayModeBegin() { //FlaxEditor.Editor.Instance.PlayModeBegin -= Instance_PlayModeBegin; LoadConfig(); //GameMode.Connect(); WorldStateManager.Init(); //NetworkManager.StartServer(); //GameMode.StartServer(true); } private void OnPlayModeEnd() { //onExit.Dispose(); //GameMode.StopServer(); NetworkManager.Cleanup(); } public override void Deinitialize() { //onExit.Dispose(); //Level.SceneLoaded -= OnSceneLoaded; Level.SceneLoading -= OnSceneLoading; if (FlaxEditor.Editor.Instance != null) { FlaxEditor.Editor.Instance.PlayModeBegin -= OnPlayModeBegin; FlaxEditor.Editor.Instance.PlayModeEnd -= OnPlayModeEnd; } } private void OnSceneLoading(Scene scene, Guid guid) { //Level.SceneLoaded -= OnSceneLoaded; Level.SceneLoading -= OnSceneLoading; LoadConfig(); } private void LoadConfig() { Console.Print("Loading config file (EditorPlugin)"); AssetManager.Globals.ResetValues(); foreach (var line in AssetManager.Config.GetLines()) Console.Execute(line, false, true); } } #endif }