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
|
||||
// instead just allocate a new marking based on the old one
|
||||
// with the correct sprite count
|
||||
|
||||
if (marking.MarkingColors.Count != markingPrototype.Sprites.Count)
|
||||
{
|
||||
marking = new Marking(marking.MarkingId, markingPrototype.Sprites.Count);
|
||||
|
||||
@@ -175,7 +175,6 @@ namespace Content.Server.Database
|
||||
|
||||
// ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
|
||||
var markingsRaw = profile.Markings?.Deserialize<List<string>>();
|
||||
profile.Markings?.Dispose();
|
||||
|
||||
List<Marking> markings = new();
|
||||
if (markingsRaw != null)
|
||||
|
||||
@@ -124,25 +124,34 @@ public class MarkingsSet : IEnumerable, IEquatable<MarkingsSet>
|
||||
// Ensures that all markings in a set are valid.
|
||||
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;
|
||||
}
|
||||
|
||||
// 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 =>
|
||||
{
|
||||
if (!_markingsManager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? prototype))
|
||||
if (!manager.Markings().TryGetValue(marking.MarkingId, out MarkingPrototype? prototype))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -164,14 +173,14 @@ public class MarkingsSet : IEnumerable, IEquatable<MarkingsSet>
|
||||
}
|
||||
|
||||
// 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 _markingsManager = IoCManager.Resolve<MarkingManager>();
|
||||
|
||||
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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user