using System; using System.Collections.Generic; namespace IdleSpectator; /// Story aftermath / epilogue dials from event-catalog.json story. public static partial class EventCatalog { public static class Story { private static readonly Dictionary Entries = new Dictionary(StringComparer.OrdinalIgnoreCase); private static int _appliedGeneration = -1; public static void InvalidateOverlays() { Entries.Clear(); _appliedGeneration = -1; } private static void Ensure() { if (_appliedGeneration == EventCatalogConfig.Generation) { return; } _appliedGeneration = EventCatalogConfig.Generation; EventCatalogConfig.FillStory(Entries); } public static IEnumerable AuthoredIds { get { Ensure(); return Entries.Keys; } } public static DiscreteEventEntry GetOrFallback(string id) { Ensure(); if (!string.IsNullOrEmpty(id) && Entries.TryGetValue(id.Trim(), out DiscreteEventEntry entry)) { return entry; } string key = string.IsNullOrEmpty(id) ? "unknown" : id.Trim(); return new DiscreteEventEntry { Id = key, EventStrength = InterestScoringConfig.Story.aftermathStrength, Category = "Story", LabelTemplate = "{a} ยท {id}", CreatesInterest = true, IsFallback = true }; } } }