From de74e0faed55f740ec2660e677765864743f8006 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 7 Feb 2024 18:37:24 -0500 Subject: [PATCH] Improved output distribution of RoundToLevels (#25026) * Improved output distribution of RoundToLevels * Updated tests * Oops (cherry picked from commit 9cee54e5a1b4efd1b8d511584b3e4dcbd7e7c529) --- Content.Shared/Rounding/ContentHelpers.cs | 22 +------------------ .../Shared/Utility/ContentHelpers_Test.cs | 12 +++++----- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/Content.Shared/Rounding/ContentHelpers.cs b/Content.Shared/Rounding/ContentHelpers.cs index b1525ed4ee..9ecee22998 100644 --- a/Content.Shared/Rounding/ContentHelpers.cs +++ b/Content.Shared/Rounding/ContentHelpers.cs @@ -35,27 +35,7 @@ public static int RoundToLevels(double actual, double max, int levels) } var toOne = actual / max; - double threshold; - if (levels % 2 == 0) - { - // Basically, if we have an even count of levels, there's no exact "mid point". - // Thus, I nominate the first one below the 50% mark. - threshold = ((levels / 2f) - 1) / (levels - 1); - } - else - { - threshold = 0.5f; - } - - var preround = toOne * (levels - 1); - if (toOne < threshold || levels <= 2) - { - return (int) Math.Ceiling(preround); - } - else - { - return (int) Math.Floor(preround); - } + return (int) Math.Ceiling(toOne * (levels - 2)); } /// diff --git a/Content.Tests/Shared/Utility/ContentHelpers_Test.cs b/Content.Tests/Shared/Utility/ContentHelpers_Test.cs index 52d4286b8c..6a54623892 100644 --- a/Content.Tests/Shared/Utility/ContentHelpers_Test.cs +++ b/Content.Tests/Shared/Utility/ContentHelpers_Test.cs @@ -18,15 +18,15 @@ public sealed class ContentHelpers_Test (0.01f, 10, 5, 1), (1, 10, 5, 1), (2, 10, 5, 1), - (2.5f, 10, 5, 1), - (2.51f, 10, 5, 2), - (3, 10, 5, 2), + (3, 10, 5, 1), + (3.33f, 10, 5, 1), + (3.34f, 10, 5, 2), (4, 10, 5, 2), (5, 10, 5, 2), (6, 10, 5, 2), - (7, 10, 5, 2), - (7.49f, 10, 5, 2), - (7.5f, 10, 5, 3), + (6.66f, 10, 5, 2), + (6.67f, 10, 5, 3), + (7, 10, 5, 3), (8, 10, 5, 3), (9, 10, 5, 3), (10, 10, 5, 4),