Files
GoakeFlax/Source/Game/Console/ConsolePlugin.cs
2023-12-31 12:15:30 +02:00

183 lines
4.9 KiB
C#

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
}