Give packs an identity so create can refuse missing deps and load in a stable order.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -35,6 +35,7 @@ public sealed class CatalogLoader
|
||||
ApplyPatches(resolved, patches);
|
||||
var catalog = Materialize(order, resolved, localesRu, localesEn);
|
||||
ResolveReferences(catalog);
|
||||
WarnMissingLabels(catalog, log);
|
||||
return catalog;
|
||||
}
|
||||
|
||||
@@ -491,5 +492,40 @@ public sealed class CatalogLoader
|
||||
PeopleDefValidator.Validate(catalog);
|
||||
}
|
||||
|
||||
private static void WarnMissingLabels(DefCatalog catalog, IContentLog log)
|
||||
{
|
||||
foreach (var def in ConcreteDefs(catalog))
|
||||
{
|
||||
if (!catalog.HasText("ru", def.DefName) && !catalog.HasText("en", def.DefName))
|
||||
{
|
||||
log.Warning($"Def {DefCatalog.KindOf(def)}:{def.DefName} has no label in the pack locales.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static IEnumerable<Def> ConcreteDefs(DefCatalog catalog)
|
||||
{
|
||||
return Enumerate(catalog.Actions.Values)
|
||||
.Concat(Enumerate(catalog.Things.Values))
|
||||
.Concat(Enumerate(catalog.Positions.Values))
|
||||
.Concat(Enumerate(catalog.Works.Values))
|
||||
.Concat(Enumerate(catalog.Rooms.Values))
|
||||
.Concat(Enumerate(catalog.Buildings.Values))
|
||||
.Concat(Enumerate(catalog.Floors.Values))
|
||||
.Concat(Enumerate(catalog.Territories.Values))
|
||||
.Concat(Enumerate(catalog.Skills.Values))
|
||||
.Concat(Enumerate(catalog.Traits.Values))
|
||||
.Concat(Enumerate(catalog.BodyAttributes.Values))
|
||||
.Concat(Enumerate(catalog.Needs.Values))
|
||||
.Concat(Enumerate(catalog.NameSets.Values))
|
||||
.Concat(Enumerate(catalog.Subjects.Values))
|
||||
.Concat(Enumerate(catalog.Staffing.Values))
|
||||
.Concat(Enumerate(catalog.DayFrames.Values))
|
||||
.Concat(Enumerate(catalog.Holidays.Values))
|
||||
.Concat(Enumerate(catalog.Behavior.Values));
|
||||
|
||||
static IEnumerable<Def> Enumerate(IEnumerable<Def> defs) => defs.Where(def => !def.Abstract);
|
||||
}
|
||||
|
||||
private sealed record RawDef(string PackId, DefKind Kind, string DefName, JsonObject Json, string Source);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user