From 353de9c90f03befff7a0fb5df2976d43c2a04a28 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 20 Oct 2021 09:10:30 +0100 Subject: [PATCH] add back in debug actions, add trigger supernova action (properly) --- QSB/Events/EventNames.cs | 1 + QSB/Events/EventType.cs | 5 ++++ QSB/Events/QSBEventManager.cs | 2 ++ QSB/QSB.csproj | 2 ++ QSB/Utility/DebugActions.cs | 23 +++++++++--------- QSB/Utility/Events/DebugEvent.cs | 36 ++++++++++++++++++++++++++++ QSB/Utility/Events/DebugEventEnum.cs | 7 ++++++ 7 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 QSB/Utility/Events/DebugEvent.cs create mode 100644 QSB/Utility/Events/DebugEventEnum.cs diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index cfbbc0d9..168d66c4 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -86,5 +86,6 @@ public static string QSBStartLoop = "QSBStartLoop"; public static string QSBServerState = "QSBServerState"; public static string QSBClientState = "QSBClientState"; + public static string QSBDebugEvent = "QSBDebugEvent"; } } \ No newline at end of file diff --git a/QSB/Events/EventType.cs b/QSB/Events/EventType.cs index 601253c0..be7a01f7 100644 --- a/QSB/Events/EventType.cs +++ b/QSB/Events/EventType.cs @@ -2,6 +2,11 @@ { public enum EventType { + /* + * MISC. + */ + DebugEvent, + /* * SERVER EVENTS */ diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index c3cd6c09..68029535 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -24,6 +24,7 @@ using QSB.Tools.Events; using QSB.Tools.ProbeLauncherTool.Events; using QSB.TranslationSync.Events; using QSB.Utility; +using QSB.Utility.Events; using System.Collections.Generic; namespace QSB.Events @@ -67,6 +68,7 @@ namespace QSB.Events new StartLoopEvent(), new ServerStateEvent(), new ClientStateEvent(), + new DebugEvent(), // World Objects new ElevatorEvent(), new GeyserEvent(), diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 494c074a..c191550b 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -275,6 +275,8 @@ + + diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index f0a5b5e8..03c773de 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -1,6 +1,9 @@ using OWML.Utils; +using QSB.Events; using QSB.ShipSync; +using QSB.Utility.Events; using UnityEngine; +using UnityEngine.InputSystem; namespace QSB.Utility { @@ -29,34 +32,32 @@ namespace QSB.Utility public void Update() { - return; - if (!QSBCore.DebugMode) { return; } - if (Input.GetKeyDown(KeyCode.Keypad5)) - { - Locator.GetDeathManager().KillPlayer(DeathType.Supernova); - } - - if (Input.GetKeyDown(KeyCode.Keypad4)) + if (Keyboard.current[Key.Numpad4].wasPressedThisFrame) { DamageShipElectricalSystem(); } - if (Input.GetKeyDown(KeyCode.Keypad7)) + if (Keyboard.current[Key.Numpad5].wasPressedThisFrame) + { + QSBEventManager.FireEvent(EventNames.QSBDebugEvent, DebugEventEnum.TriggerSupernova); + } + + if (Keyboard.current[Key.Numpad7].wasPressedThisFrame) { GoToVessel(); } - if (Input.GetKeyDown(KeyCode.Keypad8)) + if (Keyboard.current[Key.Numpad8].wasPressedThisFrame) { InsertWarpCore(); } - if (Input.GetKeyDown(KeyCode.Keypad9)) + if (Keyboard.current[Key.Numpad9].wasPressedThisFrame) { LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite); } diff --git a/QSB/Utility/Events/DebugEvent.cs b/QSB/Utility/Events/DebugEvent.cs new file mode 100644 index 00000000..0cde719a --- /dev/null +++ b/QSB/Utility/Events/DebugEvent.cs @@ -0,0 +1,36 @@ +using QSB.Events; +using QSB.Messaging; + +namespace QSB.Utility.Events +{ + public class DebugEvent : QSBEvent> + { + public override EventType Type => EventType.DebugEvent; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBDebugEvent, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBDebugEvent, Handler); + + private void Handler(DebugEventEnum type) => SendEvent(CreateMessage(type)); + + private EnumMessage CreateMessage(DebugEventEnum type) => new EnumMessage + { + AboutId = LocalPlayerId, + EnumValue = type + }; + + public override void OnReceiveLocal(bool isHost, EnumMessage message) + { + OnReceiveRemote(isHost, message); + } + + public override void OnReceiveRemote(bool isHost, EnumMessage message) + { + switch (message.EnumValue) + { + case DebugEventEnum.TriggerSupernova: + TimeLoop.SetSecondsRemaining(0f); + break; + } + } + } +} diff --git a/QSB/Utility/Events/DebugEventEnum.cs b/QSB/Utility/Events/DebugEventEnum.cs new file mode 100644 index 00000000..1f74bc9c --- /dev/null +++ b/QSB/Utility/Events/DebugEventEnum.cs @@ -0,0 +1,7 @@ +namespace QSB.Utility.Events +{ + public enum DebugEventEnum + { + TriggerSupernova + } +} \ No newline at end of file