Another quick fix for markings (#7966)
This commit is contained in:
@@ -74,7 +74,7 @@ namespace Content.Client.Markings
|
|||||||
|
|
||||||
// if the given marking isn't correctly formed, we need to
|
// if the given marking isn't correctly formed, we need to
|
||||||
// instead just allocate a new marking based on the old one
|
// instead just allocate a new marking based on the old one
|
||||||
// with the correct sprite count
|
|
||||||
if (marking.MarkingColors.Count != markingPrototype.Sprites.Count)
|
if (marking.MarkingColors.Count != markingPrototype.Sprites.Count)
|
||||||
{
|
{
|
||||||
marking = new Marking(marking.MarkingId, markingPrototype.Sprites.Count);
|
marking = new Marking(marking.MarkingId, markingPrototype.Sprites.Count);
|
||||||
|
|||||||
@@ -175,7 +175,6 @@ namespace Content.Server.Database
|
|||||||
|
|
||||||
// ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
|
// ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
|
||||||
var markingsRaw = profile.Markings?.Deserialize<List<string>>();
|
var markingsRaw = profile.Markings?.Deserialize<List<string>>();
|
||||||
profile.Markings?.Dispose();
|
|
||||||
|
|
||||||
List<Marking> markings = new();
|
List<Marking> markings = new();
|
||||||
if (markingsRaw != null)
|
if (markingsRaw != null)
|
||||||
|
|||||||
@@ -124,25 +124,34 @@ public class MarkingsSet : IEnumerable, IEquatable<MarkingsSet>
|
|||||||
// Ensures that all markings in a set are valid.
|
// Ensures that all markings in a set are valid.
|
||||||
public static MarkingsSet EnsureValid(MarkingsSet set, MarkingManager? manager = null)
|
public static MarkingsSet EnsureValid(MarkingsSet set, MarkingManager? manager = null)
|
||||||
{
|
{
|
||||||
if (manager == null)
|
IoCManager.Resolve(ref manager);
|
||||||
|
|
||||||
|
for (var i = set._markings.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
manager = IoCManager.Resolve<MarkingManager>();
|
var marking = set._markings[i];
|
||||||
|
if (manager.IsValidMarking(marking, out var markingProto))
|
||||||
|
{
|
||||||
|
if (marking.MarkingColors.Count != markingProto.Sprites.Count)
|
||||||
|
{
|
||||||
|
set._markings[i] = new Marking(marking.MarkingId, markingProto.Sprites.Count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set._markings.RemoveAt(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var newList = set._markings.Where(marking => manager.Markings().ContainsKey(marking.MarkingId)).ToList();
|
|
||||||
|
|
||||||
set._markings = newList;
|
|
||||||
|
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filters out markings based on species.
|
// Filters out markings based on species.
|
||||||
public static MarkingsSet FilterSpecies(MarkingsSet set, string species)
|
public static MarkingsSet FilterSpecies(MarkingsSet set, string species, MarkingManager? manager = null)
|
||||||
{
|
{
|
||||||
var _markingsManager = IoCManager.Resolve<MarkingManager>();
|
IoCManager.Resolve(ref manager);
|
||||||
var newList = set._markings.Where(marking =>
|
var newList = set._markings.Where(marking =>
|
||||||
{
|
{
|
||||||
if (!_markingsManager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? prototype))
|
if (!manager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? prototype))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -164,14 +173,14 @@ public class MarkingsSet : IEnumerable, IEquatable<MarkingsSet>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Processes a MarkingsSet using the given dictionary of MarkingPoints.
|
// Processes a MarkingsSet using the given dictionary of MarkingPoints.
|
||||||
public static MarkingsSet ProcessPoints(MarkingsSet set, Dictionary<MarkingCategories, MarkingPoints> points)
|
public static MarkingsSet ProcessPoints(MarkingsSet set, Dictionary<MarkingCategories, MarkingPoints> points, MarkingManager? manager = null)
|
||||||
{
|
{
|
||||||
|
IoCManager.Resolve(ref manager);
|
||||||
var finalSet = new List<Marking>();
|
var finalSet = new List<Marking>();
|
||||||
var _markingsManager = IoCManager.Resolve<MarkingManager>();
|
|
||||||
|
|
||||||
foreach (var marking in set)
|
foreach (var marking in set)
|
||||||
{
|
{
|
||||||
if (_markingsManager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? markingPrototype))
|
if (manager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? markingPrototype))
|
||||||
{
|
{
|
||||||
if (points.TryGetValue(markingPrototype.MarkingCategory, out var pointsRemaining))
|
if (points.TryGetValue(markingPrototype.MarkingCategory, out var pointsRemaining))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user