From 497b5b6563892ce368562ddc04d517b62f64d8e8 Mon Sep 17 00:00:00 2001 From: hayabusa255 Date: Tue, 24 Sep 2024 03:15:40 +0900 Subject: [PATCH] Add RemainingDecontaminationTime property --- EXILED/Exiled.API/Features/Map.cs | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/EXILED/Exiled.API/Features/Map.cs b/EXILED/Exiled.API/Features/Map.cs index d0b31f391..5f80153cc 100644 --- a/EXILED/Exiled.API/Features/Map.cs +++ b/EXILED/Exiled.API/Features/Map.cs @@ -74,6 +74,50 @@ public static class Map DecontaminationController.Singleton.NetworkDecontaminationOverride is DecontaminationController.DecontaminationStatus.Disabled ? DecontaminationState.Disabled : (DecontaminationState)DecontaminationController.Singleton._nextPhase; + /// + /// Gets the remaining time for the decontamination process. + /// + /// + /// The remaining time in seconds for the decontamination process. + /// Returns -1 if the controller is null or if decontamination is overridden. + /// Returns 0 if decontamination has not started yet. + /// + public static float RemainingDecontaminationTime + { + get + { + DecontaminationController controller = DecontaminationController.Singleton; + if (controller == null) + return -1f; + + if (controller.DecontaminationOverride != DecontaminationController.DecontaminationStatus.None) + return -1f; + + double currentTime = DecontaminationController.GetServerTime; + float totalTime = 0f; + bool decontaminationStarted = false; + + for (int i = 0; i < controller.DecontaminationPhases.Length; i++) + { + if (currentTime < controller.DecontaminationPhases[i].TimeTrigger) + { + if (!decontaminationStarted) + { + totalTime += (float)(controller.DecontaminationPhases[i].TimeTrigger - currentTime); + decontaminationStarted = true; + } + else + { + totalTime += (float)(controller.DecontaminationPhases[i].TimeTrigger - + controller.DecontaminationPhases[i - 1].TimeTrigger); + } + } + } + + return decontaminationStarted ? totalTime : 0f; + } + } + /// /// Gets all objects. ///