using MegaCrit.Sts2.Core.Combat; using STS2RitsuLib; using STS2RitsuLib.Lifecycle; namespace VulnerabilityIndicator.Scripts; /// /// Observes lifecycle events to trigger vulnerability checker updates /// when cards change or turns start. /// public sealed class VulnerabilityLifecycleObserver : ILifecycleObserver { public void OnEvent(IFrameworkLifecycleEvent evt) { var checker = VulnerabilityChecker.Instance; if (checker == null) return; // Card drawn - hand contents changed if (evt is CardDrawnEvent) { checker.OnCardChanged(); return; } // Card discarded - hand contents changed if (evt is CardDiscardedEvent) { checker.OnCardChanged(); return; } // Card played - hand contents changed if (evt is CardPlayedEvent) { checker.OnCardChanged(); return; } // End of turn - cards flushed if (evt is CardsFlushedEvent) { checker.OnCardChanged(); return; } // New side turn - might have drawn new cards if (evt is SideTurnStartedEvent) { checker.OnCardChanged(); return; } // Combat starting - initialize checker if (evt is CombatStartingEvent cse) { if (cse.CombatState is CombatState cs) { VulnerabilityChecker.GetOrCreate().Initialize(cs); } } } }