Stacked sprite visualizer (#3096)
* Add Stack Visualizer * Add cigarette pack resources Adds transparent layers for visualizing cigarettes * Add Bag Open/Close Visualizer So storage opened in inventory can have different icons when opened or closed. * Create a component that only enumerates single item Used for creating stuff like matchbox, or cigarettes. As a bonus. It will only update stack visualizer for that particullar item. * Refactoring stuff * Fix other usage of stack in Resources * Add docs * Apply suggestions from code review Apply metalgearsloth suggestions Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Applied suggestions from metalgearsloth * Changed SingleItemStorageComponent to StorageCounterComponent Difference. New component doesn't spawn items, merely counts them. * Refactored StackVisualizer * Fix breakage with master * Update Resources/Prototypes/Entities/Objects/Consumable/fancy.yml Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update with MGS suggestions Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
@@ -9,41 +9,78 @@ namespace Content.Tests.Shared.Utility
|
||||
[TestOf(typeof(ContentHelpers))]
|
||||
public class ContentHelpers_Test
|
||||
{
|
||||
public static readonly IEnumerable<(double val, double max, int levels, int expected)> TestData =
|
||||
new (double, double, int, int)[]
|
||||
{
|
||||
// Testing odd level counts. These are easy.
|
||||
(-1, 10, 5, 0),
|
||||
(0, 10, 5, 0),
|
||||
(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),
|
||||
(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),
|
||||
(8, 10, 5, 3),
|
||||
(9, 10, 5, 3),
|
||||
(10, 10, 5, 4),
|
||||
(11, 10, 5, 4),
|
||||
|
||||
public static readonly IEnumerable<(double val, double max, int levels, int expected)> TestData = new(double, double, int, int)[]
|
||||
{
|
||||
// Testing odd level counts. These are easy.
|
||||
(-1, 10, 5, 0),
|
||||
( 0, 10, 5, 0),
|
||||
( 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),
|
||||
( 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),
|
||||
( 8, 10, 5, 3),
|
||||
( 9, 10, 5, 3),
|
||||
(10, 10, 5, 4),
|
||||
(11, 10, 5, 4),
|
||||
// Even level counts though..
|
||||
(1, 10, 6, 1),
|
||||
(2, 10, 6, 1),
|
||||
(3, 10, 6, 2),
|
||||
(4, 10, 6, 2),
|
||||
(5, 10, 6, 2),
|
||||
(6, 10, 6, 3),
|
||||
(7, 10, 6, 3),
|
||||
(8, 10, 6, 4),
|
||||
(9, 10, 6, 4),
|
||||
(10, 10, 6, 5),
|
||||
};
|
||||
|
||||
// Even level counts though..
|
||||
( 1, 10, 6, 1),
|
||||
( 2, 10, 6, 1),
|
||||
( 3, 10, 6, 2),
|
||||
( 4, 10, 6, 2),
|
||||
( 5, 10, 6, 2),
|
||||
( 6, 10, 6, 3),
|
||||
( 7, 10, 6, 3),
|
||||
( 8, 10, 6, 4),
|
||||
( 9, 10, 6, 4),
|
||||
(10, 10, 6, 5),
|
||||
};
|
||||
public static readonly IEnumerable<(double val, double max, int levels, int expected)> TestNear =
|
||||
new (double, double, int, int)[]
|
||||
{
|
||||
// Testing odd counts
|
||||
(0, 5, 2, 0),
|
||||
(1, 5, 2, 0),
|
||||
(2, 5, 2, 1),
|
||||
(3, 5, 2, 1),
|
||||
(4, 5, 2, 2),
|
||||
(5, 5, 2, 2),
|
||||
|
||||
// Testing even counts
|
||||
(0, 6, 5, 0),
|
||||
(1, 6, 5, 1),
|
||||
(2, 6, 5, 2),
|
||||
(3, 6, 5, 3),
|
||||
(4, 6, 5, 3),
|
||||
(5, 6, 5, 4),
|
||||
(6, 6, 5, 5),
|
||||
|
||||
// Testing transparency disable use case
|
||||
(0, 6, 6, 0),
|
||||
(1, 6, 6, 1),
|
||||
(2, 6, 6, 2),
|
||||
(3, 6, 6, 3),
|
||||
(4, 6, 6, 4),
|
||||
(5, 6, 6, 5),
|
||||
(6, 6, 6, 6),
|
||||
|
||||
// Testing edge cases
|
||||
(0.1, 6, 5, 0),
|
||||
(-32, 6, 5, 0),
|
||||
(2.4, 6, 5, 2),
|
||||
(2.5, 6, 5, 2),
|
||||
(320, 6, 5, 5),
|
||||
};
|
||||
|
||||
[Parallelizable]
|
||||
[Test]
|
||||
@@ -52,5 +89,13 @@ namespace Content.Tests.Shared.Utility
|
||||
(double val, double max, int levels, int expected) = data;
|
||||
Assert.That(ContentHelpers.RoundToLevels(val, max, levels), Is.EqualTo(expected));
|
||||
}
|
||||
|
||||
[Parallelizable]
|
||||
[Test]
|
||||
public void TestNearest([ValueSource(nameof(TestNear))] (double val, double max, int size, int expected) data)
|
||||
{
|
||||
(double val, double max, int size, int expected) = data;
|
||||
Assert.That(ContentHelpers.RoundToNearestLevels(val, max, size), Is.EqualTo(expected));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user